this post was submitted on 01 Aug 2025
152 points (96.9% liked)

Programmer Humor

25425 readers
947 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 

Don't say anyway, say anyhow

you are viewing a single comment's thread
view the rest of the comments
[–] dgriffith@aussie.zone 7 points 2 days ago (4 children)

causing the program to crash if it actually was an error, restoring the more unsafe behavior of other languages.

Wellllll it's more of an abrupt exit rather than a crash, which is still better than eg. silently accessing beyond the end of an array, or ending up with a pointer to nowhere when you thought you had a sane memory reference.

[–] arendjr@programming.dev 4 points 2 days ago (3 children)

“An abrupt exit”, more commonly known as a “crash”.

If you’re going to argue that an exit through panic!() is not a crash, I will argue that your definition of a crash is just an abrupt exit initiated by the OS. In other words, there’s no meaningful distinction as the result is the same.

[–] qaz@lemmy.world 6 points 2 days ago* (last edited 2 days ago) (1 children)

I don't think that's a valid comparison. The behavior does differ when it comes to cleanly releasing resources. Rust's panic performs the drop actions for the current values on the stack, a SIGILL or SIGSEGV crash doesn't.

#[derive(Debug)]
struct MyStruct {}

impl Drop for MyStruct {
	fn drop(&mut self) {
		println!("{:?}", "imagine cleanup here"); // this is called
	}
}

fn main() {
	let a = MyStruct {};
	panic!("panic!");
        println!("{a:?}");
}

Try it yourself

[–] arendjr@programming.dev 7 points 2 days ago

That’s fair, although technically you could catch SIGSEGV and release resources that way too.

Also, given that resources will be reclaimed by the OS regardless of which kind of crash we’re talking about, the effective difference is usually (but not always) negligible.

Either way, no user would consider a panic!() to be not a crash because destructors ran. And most developers don’t either.

load more comments (1 replies)
load more comments (1 replies)