Skip to content

Instantly share code, notes, and snippets.

@qaziquza
Forked from omentic/suggestions.md
Created May 11, 2022 08:04
Show Gist options
  • Save qaziquza/a41d79446a15dc55d1d42107c6fef927 to your computer and use it in GitHub Desktop.
Save qaziquza/a41d79446a15dc55d1d42107c6fef927 to your computer and use it in GitHub Desktop.
Compilation of suggestions from the Nim v2 thread

Suggestions for Nim v2

Breaking changes

  • Yardanico, exelotl, didlybom: Remove backwards-compatible switches / deprecated features
  • markus_gritsch, TiffanyR: newSeq() and newString() ==> initSeq() and initString()
  • Zoom: Overhaul stdlib to work with view types and/or options/results for error handling
  • xigoi, namisboss: Change object initialization syntax to use = instead of : for consistency
  • xigoi: Allow using newlines instead of commas
  • xigoi: Make built-in types capitalized
  • xigoi: Require std/ for importing standard library modules
  • sekao, didlybom, r3c, junelac, SunnyCorleone: Get rid of style insensitivity (discussion)
  • ElegantBeef, elcritch: Increase code reuse with concepts, openarrays, and distincts (details)
  • elcritch: Default enum scoped names
  • gcao: Move JavaScript, WASM, LLVM support to libraries
  • kobi, exelotl, didlybom, solomonthewise: Adopt Options module and make types not nil by default
  • kobi: Pick an interface library and stick with it so error messages are clear
  • exelotl, didlybom, r3c, TiffanyR, j-james: Comprehensive stdlib cleanup
  • exelotl: Destructors for files (view types)
  • didlybom: Remove less used experimental features
  • didlybom: Remove every memory option except orc, arc, none, go
  • didlybom: Remove overlapping features
  • Sixte: Visibility rules for types
  • ingo, stisa: Shrink stdlib (by creating "batteries" libraries?)
  • volodymyr: Consistent stdlib module naming (ex: plural vs. singular)
  • jblin: Rust/Haxe enums
  • TiffanyR: Simpler macro and iterator syntax (?)
  • TiffanyR: Replace all usages of / with . (except for division)
  • j-james, Derick: Remove %* JSON operator
  • j-james, Derick, Sixte: Replace * with pub as the public marker

Potentially breaking changes

  • Yardanico, gcao, exelotl, r3c: Internal compiler refactoring (re: nimskull)
  • Sixte: Introduction of existential types
  • SolitudeSF: Adopt init/new(typedesc)
  • sky_khan: Rid compiler of globals and make it an object for being compiled as a dynamic library
  • xigoi: Make object syntactic sugar for distinct tuple (?)
  • xigoi: Make duck typing for generics opt-in
  • sls1005: Update stdlib for sink parameters
  • planetis: Overload T() object contruction (instead of init/new or default fields)
  • kobi: Continue with flow sensitive typing
  • kobi, didlybom: Unify methods and procs
  • kobi: Popularize exception effects catching (raises pragma)
  • Clonk: Remove style insensitivity in keywords and module names
  • r3c, stisa: Separate AST from codegen stage in the compiler
  • r3c: Improve stdlib performance
  • solomonthewise: Strict funcs by default
  • volodymyr: Language support for a HashTable
  • volodymyr: Language support for with
  • volodymyr: Language support for function piping/chaining
  • volodymyr: Support multi-position assignments without tuples
  • volodymyr: Extendible eager comprehensions (covered by sugar.collect?)
  • volodymyr: Container subsetting (R)
  • cumulonimbus: Explicit tail calls
  • cumulonimbus: Language features designed for parallelism
  • cumulonimbus: Do the least bad form of error handling
  • treeform: Default object values
  • j-james: range improvements (see: Status style guide)
  • cumulonimbus: Get continuation-passing style (CPS) into the core
  • hyl: Improve module/function disambiguity with UFCS

Non-breaking changes

  • foderking, krakengore, thadeudepaula: Compiler error improvement
  • markus_gritsch: Allow tabs for indentation (disallow mixing)
  • Zoom, giaco, kobi, treeform: Fix bugs!
  • Zoom, exelotl, didlybom, r3c: Complete/polish implementation of view types, user-defined defaults, init hooks, concepts, threading
  • Zoom, slangmgh, didlybom, volodymyr, cumulonimbus, treeform: Robust concurrency/multithreading (Go)
  • federico3, giaco, junelac, solomonthewise: Include more batteries
  • sekao, treeform: Don't break things for the sake of breaking things!
  • SFR0815, guzba, giaco, kobi, Clonk, j-james: Mutually recursive module imports
  • guzba, slangmgh: Lock in --threads:on and --mm:arc/--mm:orc
  • elcritch: Provide a SomeString type
  • elcritch: Module actions / triggers on import
  • gcao: Robust WASM, LLVM support
  • giaco, krakengore, didlybom, jasonfi, r3c, thadeudepaula, solomonthewise: Improve tooling
  • giaco: Solve the anti-virus false positives
  • giaco, deech, j-james: Official support for auto-generation of C wrappers (adopt Futhark) (manual wrappers still desired)
  • detla: "Weak imports" (don't warn unused by default, just ignore)
  • detla: Tooling to generate which imports procs came from
  • 12398890: More powerful memory profiler
  • zevv, j-james: Mutually dependent types (RFC)
  • JPLRouge, solomonthewise: Official GUI library
  • kobi: Bug fixes around methods
  • kobi, krakengore: Stabilize Nim's nice features
  • nocturn9x: Allow redeclaring the same field in different object variant cases
  • xigoi: Make object variants declare the type for the discriminator (like sum types elsewhere)
  • krakengore: Broadly improve includes and imports
  • krakengore: Better traces and fixing hints from compiler
  • krakengore: Better internal inline compiler documentation
  • bather, didlybom, volodymyr: Add sugar to system (particularly -> and =>)
  • didlybom, volodymyr, jblin: Official, robust support for pattern matching
  • didlybom, solomonthewise: Shorthand for defining sum types
  • didlybom, solomonthewise, j-james: Official support for nimpy
  • r3c, solomonthewise: Better documentation, best practices, use cases
  • thadeudepaula: Explicit roadmap and goals
  • thadeudepaula: Tooling should support user style (ex. snake_case vs. camelCase)
  • thadeudepaula: Better tooling around overloads
  • archnim: Data structure to hold mixed types (that isn't a JSON node)
  • solomonthewise: Detailed compiler documentation/specs
  • SunnyCorleone: Improve Tables (see Python Dicts)
  • SunnyCorleone: GUI debugger
  • treeform: Official support for overloadable enum names
  • treeform: . and .= handling bugfixes
  • treeform: Import/iterator strangeness
  • treeform: Windows bugfixes
  • j-james: Nested types (issue)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment