Skip to content
/ ubrustc Public
forked from thomcc/ubrustc

Unborrowed Rust Compiler (rustc without a borrowchecker)

License

Notifications You must be signed in to change notification settings

jyn514/ubrustc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ubrustc: Unborrowed rustc

This is rustc with the borrow checker disabled. I wrote it in like, 30 minutes because this tweet made me laugh.

Example

// main.rs
fn main() {
    let s = "hi, world".to_string();
    let msg: &str = &s;
    drop(s);
    println!("Hello, memory corruption: {msg:?}");
}
# <install using steps in `Usage` section>
$ RUSTC=ubrustc cargo run
   Compiling ubrustc-verify v0.1.0 (/Users/thom/scratch/ubrustc-verify)
    Finished dev [unoptimized + debuginfo] target(s) in 0.12s
     Running `target/debug/ubrustc-verify`
Hello, memory corruption: "\0\0\0\0\0\0\0\0\0"

Usage

You will need to be on a nightly rust (the toolchain from 2023-02-09 is known to work), and have the rustc-dev and llvm-tools-preview components installed.

Then, you can either do ./build.sh to build the binary, which will place it somewhere inside target/*, or ./build.sh install. If you're on Windows, IDK (it shouldn't be hard to install, but you likely need to set the rpath right).

Once it's installed, you use it by setting the RUSTC environment variable to ubrustc when running cargo.

Please don't use this in production. I will not be maintaining it.

Acknowledgements

Apologies to Will Crichton.

About

Unborrowed Rust Compiler (rustc without a borrowchecker)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 74.2%
  • Shell 25.8%