version 0.10 ============ - nimsuggest: auto-completion needs to work in 'class' macros - improve the docs for inheritance - The bitwise 'not' operator will be renamed to 'bnot' to prevent 'not 4 == 5' from compiling. -> requires 'mixin' annotation for procs! - parameter lists without type end up in 'experimental' - iterators always require a return type - overloading of '=' - make nimble part of the distribution - split docgen into separate tool - special rule for ``[]=``, items, pairs - BUG: echo with template `$`*(info: TLineInfo): expr = toFileLineCol(info) Concurrency ----------- - test 'deepCopy' for closures - 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 Misc ---- - make '--implicitStatic:on' the default - make tuple unpacking work in a non-var/let context - built-in 'getImpl' - prevent 'alloc(TypeWithGCedMemory)' - some table related tests are wrong (memory usage checks) Bugs ==== - VM: Pegs do not work at compile-time - VM: ptr/ref T cannot work in general - scopes are still broken for generic instantiation! - compilation of niminst takes way too long. looks like a regression - blocks can "export" an identifier but the CCG generates {} for them ... version 0.9.x ============= - allow simple read accesses to global variables --> difficult to ensure that no data races happen - pragmas need 'bindSym' support - pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work reliably with user-defined pragmas - memory manager: add a measure of fragmentation - implement 'bits' pragmas - we need a magic thisModule symbol - ensure (ref T)(a, b) works as a type conversion and type constructor - optimize 'genericReset'; 'newException' leads to code bloat - The 'do' notation might be trimmed so that its only purpose is to pass multiple multi line constructs to a macro. version 0.9.X ============= - macros as type pragmas - implement type API for macros - lazy overloading resolution: * special case ``tyStmt`` - document NimMain and check whether it works for threading GC == - hybrid GC - use big blocks in the allocator - provide tool/API to track leaks/object counts - resizing of strings/sequences could take into account the memory that is allocated CGEN ==== - codegen should use "NIM_CAST" macro and respect aliasing rules for GCC - ``restrict`` pragma + backend support - 'const' objects including case objects