|
|
|
|
|
by nicklecompte
848 days ago
|
|
Probably better to be maximally pedantic here: - Assume our language has a specification, even if it's entirely in your head - a "correct" program is a program that is 100% conformant to the specification - an "incorrect" program is a program which violates the specification in some way Let's say we have a compiler that compiles correct programs with 100% accuracy, but occasionally compiles incorrect programs instead of erroring out. If the language specification is fine but the compiler implementation has a bug, then fixing the compiler does not affect the compilation behavior of correct programs. (Unless of course you introduce a new implementation-level bug.) But if the language specification has a bug, then this does not hold: the specification has to change to fix the bug, and it is likely that at least some formerly correct programs would no longer obey this new specification. So this is true: > It's still something you fix by changing what programs the compiler accepts or rejects But in one case you are only changing what incorrect programs the compiler accepts, and in the other you are also changing the correct programs the compiler accepts. It's much more serious. |
|
It does not, and at the current pace, it might never have a spec.
The reason there is no spec - not even an hypothetical spec in my head - is that the exact semantics of Rust has not been settled.
With the constraints the Rust project are operating with, the only way forward I can think of is following the ideas laid out in post
https://faultlore.com/blah/tower-of-weakenings/
With the understanding that you can have multiple specs if one is entirely more permissive than the other (and as such, programmers must conform to the least permissive spec, that is, the spec that allows the smallest number of things)
But the problem is, Rust doesn't even have this least permissive spec. Or any other.