diff --git a/Feature-Matrix.md b/Feature-Matrix.md new file mode 100644 index 0000000..1635435 --- /dev/null +++ b/Feature-Matrix.md @@ -0,0 +1,269 @@ +
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:
|
+
+
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 | + +