Arrr, me hearty! Ye be askin’ for a simple piece o’ code in Rust, peppered with pirate comments. Here be a wee program that prints a hearty greeting:
fn main() {
// Avast, me hearties! We start our voyage here.
let greeting = "Ahoy, matey! Welcome aboard!";
// Yo ho ho! We print our greeting to the open sea!
println!("{}", greeting);
}
Now ye be havin’ a taste o’ pirate-infused Rust code! If ye be havin’ any more requests or need further assistance, feel free to speak up, and I’ll be at yer service!
When I compiled that program, the executable was around 10MB. I wrote the same program in C, and the executable was 15kB. That’s about 3 orders of magnitude difference. Is Rust really 1000 times better than C? :-)
Rust turns a lot of safety things ‘on’ by default.
Turning all of that off for a tiny program that doesn’t need it such as hello world results in a comparable size.
This is a good talk on rust
https://youtu.be/VlSkZYBeK8Q
And this one goes over size reduction
https://youtu.be/b2qe3L4BX-Y
Thanks for the resources. I’m old school, and so far haven’t really looked into Rust; I look forward to watching the talk you linked to.
this is not due to safety but rather std. Set opt level to 3 and enable fat lto
The standard lib is statically linked, so there will be a higher baseline binary size. This means that yes, a hello world project may be 10mb unstripped but a considerably more complicated project could in turn be 11mb unstripped. Aka it doesn’t matter much in practice.
I wrote it in C and compiled it for an ATtiny13 and it was 162 bytes. That includes the code to initialize the microcontroller and a bit banged transmit only UART to actually output the text.
just goes to show: size is relative :-)
Enable LTO and a higher optimization level and it’ll drop that a ton
set opt level to 3 and enable fat lto.
even without fat lto enabled, my entire multithreaded voxel engine with multithreaded procedural world generation, procedural structures and multiplayer is 5mb in size.