4 ms·
Every programming language capable of expressing arbitrary recursion or looping is unsafe. Doesn't matter what kinds of checks you put in. It might matter what
by msla 7y ago
Every programming language capable of expressing arbitrary recursion or looping is unsafe.
Doesn't matter what kinds of checks you put in. It might matter what kind of runtime you have, but a runtime isn't a language, is it? We're talking about the language, and any language sufficiently expressive to allow you to say "loop until you are done" instead of "loop precisely 20 times" is inherently unsafe.
- andrewflnr 7y agoIt is not the case that every Turing complete language allows certain inputs to cause the program to break the bounds of the language's semantics and go rampaging through its simulator. That's what unsafe means in the context of memory vulnerabilities. Yes, Rice's Theorem is cool, but so are sound and complete type systems.
- msla 7y agoA "sound and complete type system" can't guarantee termination, and being a Rust zealot won't change that.
- andrewflnr 7y agoCorrect. Fortunately that has nothing to do with memory safety. And where did you get the idea I was a Rust zealot?
- msla 7y agoIt has everything to do with memory safety.
- andrewflnr 7y agoYou don't even need a type system to eliminate memory unsafety. Show me the memory unsafety in lambda calculus. (and don't forget that, as you said, we're talking about languages, not runtimes)