okay, what else can you do in an OOM condition *that makes sense to do*, in pretty much any case?
-
-
Replying to @bofh453
Return (or throw, if that's your idiom) the error to the caller, leaving any mutable objects being manipulated in consistent (preferably unmodified) state.
2 replies 0 retweets 4 likes -
Replying to @RichFelker
And 99% of the time the caller will either abort or ignore the error and SIGSEGV anyway.
2 replies 0 retweets 0 likes -
Replying to @bofh453
N levels back up, maybe. Unless it's stateless/contains no valuable state, or unless it's utter crap, not without first dumping a recovery file of some sort.
1 reply 0 retweets 2 likes -
Replying to @RichFelker @bofh453
Or you can write rust with nostd, and no allocator (bring your own). But what would you do anyway if you `vec.push(x)` and somehow there isn't enough ram? How would you signal the error in a way that makes sense to the caller of `push`?
2 replies 0 retweets 0 likes -
The push method could return `Ok(())` when it succeeds and `Err(x)` when it fails. Since `Result<T, U>` is marked #[must_use], it forces the caller to handle the error case. Rust as a language is well-suited to writing low-level, robust code. The non-core stdlib is the issue.
3 replies 1 retweet 3 likes -
Replying to @CopperheadOS @das_kube and
im really thinking like 87% of rust users woulda revolted if they'd had to error-handle every allocation
2 replies 0 retweets 2 likes -
Replying to @__vlqc @CopperheadOS and
Writing correct code is hard. Everyone wants toy languages that let you pretend it's not and paper over everything that could go wrong. *sigh*
2 replies 0 retweets 2 likes -
Replying to @RichFelker @CopperheadOS and
I'd argue a lot of the time, handling OOM conditions without unwinding does not get you the most correctness per unit effort spent
3 replies 0 retweets 0 likes -
Replying to @__vlqc @CopperheadOS and
I think "correctness per unit effort spent" is a bogus metric. In a better model, you start from a correct trivial program and build up, constrained by not knowingly making it incorrect.
1 reply 0 retweets 2 likes
So the choice isn't spending effort to make it correct or not. The choice, given fixed effort, is implementing more functionality incorrectly or less functionality correctly.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.