diff --git a/Roadmap.md b/Roadmap.md deleted file mode 100644 index 9154b91..0000000 --- a/Roadmap.md +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Language featureScheduled forNotes
Automatic dereference in more contextsimplemented but needs to be activated via the .experimental switcha.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] properlyfor version 1.0The implementation has lots of issues, but what's worse the spec is not nearly clear enough and seems to conflate 2 different ideas.
asFunc pragmaAfter 1.0provides 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.0this makes clean macros impossible to write when it comes to pragmas
Alias analysis needs to specified and controllable with pragmasafter 1.0alias analysis affects memory safety rules
Destructors need to interact with finalizersafter 1.0destructors 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 effectsafter 1.0it is not entirely clear what ~F should mean.
Prevent object branch transitions from low(selector)after 1.0object 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 reworkedafter 1.0it should be distinguished between 'push' for 'type', 'proc' etc.
Returning 'var T' is unsafe and needs static analysis to make safeafter 1.0the compiler already checks for trivial examples
Some effects like GCMem don't need to be white-listedafter 1.0unclear whether this only affects built-in properties like GCMem, Recursive.
Term rewriting macros need more loveafter 1.0we need much more tests and use them in production
Weaken the requirements for forward declarationsafter 1.0two different design ideas exist: one conservative and so will work, the other highly experimental
Write trackingafter 1.0algorithm exists. Can be extended to compute lent pointers.
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Compiler featureScheduled forNotes
High level optimizerafter 1.0use the effect system for optimizations; interacts with TR macros; - performs:
    -
  • GCSE
  • -
  • loop invariant hoisting
  • -
  • escape analysis for string/seq
  • -
  • inlining of small lambdas
  • -
-
GPU backendafter 1.0
Pure RC'ing GCunknownimportant for better interoperability with Objective-C
Symbol filesafter 1.0symbol files provide true incremental compilation beyond the caching of generated C code