assume, assert, enforce, @safe
bearophile via Digitalmars-d
digitalmars-d at puremagic.com
Sat Aug 2 09:41:36 PDT 2014
Daniel Murphy:
> This doesn't need a lot of text to explain either: "when
> possible, the compiler will check preconditions at compile time"
What defines "possible"? A compiler switch that allows to define
the amount of compile time?
> I feel like you're confusing this pull request with another
> enhancement. The discussion should be about whether this exact
> feature is worthwhile, not if some other feature would solve
> some other problems.
The comparison of the two ideas is useful, because they try to
solve the same problem.
> Do you really think the compiler opportunistically checking
> preconditions would be a bad thing for D?
I think that adding an undefined, growing, compiled-dependent
list of static checks that can cause unpredictable compilation
times is not a good idea. A more general solution has some
advantages:
- It allows the user to choose what to run at compile-time and
what at run-time;
- You can defined _exactly_ what it does in a book, unlike the
growing list;
- Will not grow in features and implementation complexity as
compilers improve (and I think it's sufficiently simple);
- It's going to be mostly the same in all D compilers;
- It allows to specify and run arbitrary tests in CTFE instead of
a set of predefined by unknown simple tests. So you can use it
for SafeIntegers literals, and many other future and
unpredictable purposes;
- It's explicitly visible in the code, because there is a syntax
to denote such static testing parts in the code.
Implementing a special-cased solution instead of a more general
and principled solution could make the implementation of the
better solution more unlikely :-)
Bye,
bearophile
More information about the Digitalmars-d
mailing list