Language feature |
Scheduled for |
Notes |
Automatic dereference in more contexts |
implemented but needs to be activated via the .experimental switch |
a.f() and f(a) are rewritten to f(a[]) if overloading resolution fails completely. This rewrite is only performed for the first argument |
Implement static[T] properly |
for version 1.0 |
The implementation has lots of issues, but what's worse the spec is not nearly clear enough and seems to conflate 2 different ideas. |
asFunc pragma |
After 1.0 |
provides a nice bridge from 'var T' to 'returns T'; can be entirely implemented as a macro with the upcoming types API
|
Pragmas are not supported for 'bindSym' |
after 1.0 |
this makes clean macros impossible to write when it comes to pragmas |
Alias analysis needs to specified and controllable with pragmas |
after 1.0 |
alias analysis affects memory safety rules |
Destructors need to interact with finalizers |
after 1.0 |
destructors and finalizers are implemented, but do not interact. new which takes a finalizer needs to be deprecated. People should use a destructor instead. However, destructors should ultimately depend on an escape analysis. |
~ Operator for effects |
after 1.0 |
it is not entirely clear what ~F should mean. |
Prevent object branch transitions from low(selector) |
after 1.0 |
object branch transitions from low(selector) are allowed, because they are simply too useful, but can break memory safety. Now that the language has a proper notion of construction, we can make them safe. |
Push pragma needs to be reworked |
after 1.0 |
it should be distinguished between 'push' for 'type', 'proc' etc. |
Returning 'var T' is unsafe and needs static analysis to make safe |
after 1.0 |
the compiler already checks for trivial examples |
Some effects like GCMem don't need to be white-listed |
after 1.0 |
unclear whether this only affects built-in properties like GCMem, Recursive. |
Term rewriting macros need more love |
after 1.0 |
we need much more tests and use them in production |
Weaken the requirements for forward declarations |
after 1.0 |
two different design ideas exist: one conservative and so will work, the other highly experimental |
Write tracking |
after 1.0 |
algorithm exists. Can be extended to compute lent pointers. |