Contradictory justification for status quo
via Digitalmars-d
digitalmars-d at puremagic.com
Sat Feb 28 07:53:20 PST 2015
On Friday, 27 February 2015 at 21:19:31 UTC, Andrei Alexandrescu
wrote:
> On 2/27/15 1:07 PM, H. S. Teoh via Digitalmars-d wrote:
>> What about this, if we're serious about @safe
>> actually*guaranteeing*
>> anything: after 2.067 is released, we reimplement @safe by
>> making it
>> reject every language construct by default.
>
> I don't think this is practical. It's a huge amount of work
> over a long time.
That's easy enough to solve, though. The new behaviour can at
first be opt-in, enabled by a command-line flag (like we already
do with -dip25). We have an entire release cycle, or longer if we
need that, to get at least Phobos and druntime to compile. Once
that is done, people can test their own code with it, and it can
be enabled on the auto-tester by default.
When some time has passed, we invert the switch - it's then
opt-out. People can still disable it if they just want to get
their code to compile without fixing it (or reporting a bug if
it's our fault). Finally, the old behaviour can be removed
altogether.
>
> Besides, even with that approach there's still no guarantee;
> implementation bugs are always possible in either approach.
>
As H.S. Teoh said, these can be detected by git bisect.
> I think the closest thing to what you're after is progress and
> preservation proofs on top of a core subset of the language. It
> would be great if somebody wanted to do this.
Wouldn't that effectively mean introducing another kind of
`@safe`, that only allows to use said core subset? Or a compiler
switch? How else would it be practicable?
More information about the Digitalmars-d
mailing list