version 1.0 battle plan ======================= - let 'doAssert' analyse the expressions and produce more helpful output - fix "high priority" bugs - try to fix as many compiler crashes as reasonable Not critical for 1.0 ==================== - introduce ``nkStmtListExpr`` for template/macro invokations to produce better stack traces - make 'break' not leave named blocks - make FlowVar compatible to Futures - make 'not nil' the default (produce warnings instead of errors for a smooth migration path) - case objects needs to be safe and need to support pattern matching - find a solution for the x.f[T](y) gotcha - implement ``.delegate`` for .experimental - annotation support for getType() - make '--implicitStatic:on' the default; then we can also clean up the 'static[T]' mess in the compiler! - ``not`` or ``~`` for the effects system - figure out why C++ bootstrapping is so much slower - make 'nil' work for 'add': - resizeString - incrSeq - addChar - pragmas need 'bindSym' support - pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work reliably with user-defined pragmas - we need a magic thisModule symbol - optimize 'genericReset'; 'newException' leads to code bloat - prevent 'alloc(TypeWithGCedMemory)'? - map ``string`` and ``seq`` to ``std::string`` and ``std::vector`` - macro support for '='; bind '=' to a memory region - macros as type pragmas Bugs ==== - VM: Pegs do not work at compile-time - blocks can "export" an identifier but the CCG generates {} for them ... - ConcreteTypes in a 'case' means we don't check for duplicated case branches GC == - resizing of strings/sequences could take into account the memory that is allocated Concurrency =========== - implement 'foo[1..4] = spawn(f[4..7])' Low priority: - support for exception propagation? (hard to implement) - the copying of the 'ref Promise' into the thead local storage only happens to work due to the write barrier's implementation CGEN ==== - codegen should use "NIM_CAST" macro and respect aliasing rules for GCC - ``restrict`` pragma + backend support