For those who wonder what the 15 extra modules are, here's a quick summary:
Algorithms:
- enumutils: generate case statements from enums, and utils for holey enums.
- setutils: adds functionality for the built in `set` type.
- packedsets: replacement for `intsets` that allows distinct types.
Operating system: - tasks: basic primitives for creating parallel programs.
- sysrand: create cryptographically secure random numbers.
- tempfiles: create temporary files and directories.
- vmutils: enable/disable VM tracing in user code.
Javascript: - jsbigints: arbitrary precision integers.
- jsfetch: wrapper for the JS Fetch API.
- jsformdata: FormData wrapper for the JS target.
- jsheaders: Headers wrapper for the JS target.
Metaprogramming: - genasts: alternative to `quote` for metaprogramming with explicit binding.
Misc: - socketstreams: wraps sockets as streams.
- importutils: allows access to private fields from another module.
- strbasics: high performance string operations.
You can check out the modules themselves at the stdlib page: https://nim-lang.org/docs/lib.htmlThere's also loads of quality of life improvements across the board to existing standard library modules and general backend, e.g.:
- float to string is 10x faster,
- JSON serialisation is 20x faster,
- better compiler messages,
- memory management performance (e.g., ORC is 10% faster)
- `static[T]` improvements,
- improve `enum` type conversions and allow `enum` overloading,
- new design `concepts` that compile faster,
- build system and cross compilation improvements,
- unicode operator symbols,
- VM improvements such as working with `addr` at compile time.