this post was submitted on 11 Jul 2023
122 points (89.1% liked)

Programmer Humor

32559 readers
564 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

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!

you are viewing a single comment's thread
view the rest of the comments
[โ€“] aussiematt@lemm.ee 16 points 1 year ago (5 children)

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? :-)

[โ€“] axum@kbin.social 18 points 1 year ago* (last edited 1 year ago) (2 children)

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

[โ€“] aussiematt@lemm.ee 6 points 1 year ago

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.

[โ€“] vox@sopuli.xyz 1 points 1 year ago

this is not due to safety but rather std. Set opt level to 3 and enable fat lto

[โ€“] cmnybo@discuss.tchncs.de 16 points 1 year ago (1 children)

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.

[โ€“] aussiematt@lemm.ee 9 points 1 year ago

just goes to show: size is relative :-)

[โ€“] Kirottu@kbin.social 16 points 1 year ago

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.

[โ€“] Stumblinbear@pawb.social 7 points 1 year ago* (last edited 1 year ago)

Enable LTO, abort on panic, and a higher optimization level and it'll drop that a ton

[โ€“] vox@sopuli.xyz 1 points 1 year ago

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.