Language feature |
Scheduled for |
Notes |
Automatic dereference in more contexts |
0.9.6 |
important to be able to write more generic containers easily |
support overloading of the assignment operator |
0.9.6 |
like fields and destructors an assignment operator needs to be lifted |
destructors need to interact with finalizers |
0.9.6 |
destructors and finalizers are implemented, but do not interact. new which takes a finalizer needs to be deprecated. People should use a destructor instead |
the new concurrency model |
0.9.6 |
this requires frontend and backend changes, but no changes to the runtime/GC |
weaken the requirements for forward declarations |
after 1.0 |
two different design ideas exist: one conservative and so will work, the other highly experimental |
comment handling is weird |
0.9.6 |
comments should be optional and not part of the grammar, unless it is a documentation comment |
push pragma needs to be reworked |
after 1.0 |
it should be distinguished between 'push' for 'type', 'proc' etc. |
pragmas are not supported for 'bindSym' |
0.9.6 |
this makes clean macros impossible to write when it comes to pragmas |
type checking for tuples |
0.9.8 |
needs to be refined. Recursive tuples should be forbidden. |
extended macros API |
0.9.8 |
missing: an API for working with types; the builtin getImpl |
write tracking |
0.9.8 |
algorithm exists. Can be extended to compute lent pointers. |
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. |
~ operator for effects |
after 1.0 |
it is not entirely clear what ~F should mean. |
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. |
returning 'var T' is unsafe and needs static analysis to make safe |
after 1.0 |
the compiler already checks for trivial examples |
alias analysis needs to specified and controllable with pragmas |
after 1.0 |
alias analysis affects memory safety rules |
term rewriting macros need more love |
after 1.0 |
we need much more tests and use them in production |
Compiler feature |
Scheduled for |
Notes |
high level optimizer |
after 1.0 |
use the effect system for optimizations; interacts with TR macros;
performs:
- GCSE
- loop invariant hoisting
- escape analysis for string/seq
- inlining of small lambdas
|
pure RC'ing GC |
after 1.0 |
important for better interoperability with Objective-C |
GPU backend |
after 1.0 |
symbol files |
after 1.0 |
deterministic code generation |
0.9.8 |