3 ms·
The core problem is that the set of safe programs is considerably larger than the set of programs which pass a tractable, maintainable, and (potentially) provab
by cjcole 12y ago
The core problem is that the set of safe programs is considerably larger than the set of programs which pass a tractable, maintainable, and (potentially) provably safe compiler (including borrow and type checkers).
You want to enlarge the latter set, since that lessens programmer frustration and increases expressiveness, but in the context of a non-garbage-collected language that often requires adding complexity to the type and borrow checkers which may in turn end up introducing bugs.
A discussion of various run-ins with the borrow checker and some details of attempts to reduce the friction:
https://github.com/rust-lang/rust/issues/6393 https://github.com/rust-lang/rust/issues/6393
'Both @pcwalton and @zwarich spent some time trying to actually implement this work (with a possible RFC coming hand-in-hand). They ran into some unexpected complexity that means it would take much more work than hoped. I think everyone agrees with you that these limitations are important and can impact the first impression of the language, but it's hard to balance that against backwards-incompatible changes that are already scheduled.'
[added on edit:]
In particular, here is a very nice statement of the issue(s):
https://github.com/rust-lang/rust/issues/6393#issuecomment-24307095 https://github.com/rust-lang/rust/issues/6393#issuecomment-2...
nikomatsakis: 'I'd also like to have more progress on a soundness proof before we go about extending the system.'
And here again is the tension between complexity in the compiler and the coverage of the space of safe programs.