4.5 KiB
4.5 KiB
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. |
asFunc pragma | 0.9.8 | provides a nice bridge from 'var T' to 'returns T'; can be entirely implemented as a macro with the upcoming types API |
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:
|
pure RC'ing GC | after 1.0 | important for better interoperability with Objective-C |
GPU backend | after 1.0 | |
symbol files | after 1.0 | symbol files provide true incremental compilation beyond the caching of generated C code |
deterministic code generation | 0.9.8 | deterministic code generation makes C code caching much more effective |