Nim in 2018: A short recap
08 January 2019 The Nim Team
There were several big news in the Nim world in 2018 – two new major releases, partnership with Status, and much more. But let us go chronologically.
FOSDEM 2018 participation
The first week of February is reserved for FOSDEM, where members of Nim core development team were promoting the newly published book Nim in Action, selling Nim T-shirts, and meeting with Nim developers.
In March 2018, version 0.18 has been released. With more than 1300 commits since the previous version, it was the biggest release of Nim so far.
strformat module with
& operators for formatted string literals, the ability to have testable documentation examples with
runnableExamples, and numerous
The TLSF algorithm has been implemented to reduce memory fragmentation, which made
dealloc O(1) operations.
Partnership with Status.im
In August the partnership with Status was announced.
The Status team has chosen the Nim programming language as a base for the implementation of a sharding client for Ethereum, named Nimbus. With this partnership Status will support the Nim team with funding and resources needed to stay focused on the development of the Nim programming language.
This allowed hiring two full-time developers, tasked with fixing bugs, responding to issues, and developing the compiler, the standard library and the tooling.
Version 0.19, released in September, took the crown from 0.18 as the biggest release yet, with more than 1400 new commits.
The biggest change introduced is that the
nil state for strings and sequences is gone – the default value for these are
@ (an empty string, and an empty sequence, respectively).
This eliminates a major confusion-point for beginners, and makes Nim more pleasant for everybody.
This version introduced
experimental as a pragma and a command line switch that can enable specific language extensions (it is not an all-or-nothing switch, like before).
Other notable additions include
func as an alias for a procedure with no side effects, supporting
except in the
export statement, so called “for-loop macros”,
async working with exception handling (now it is possible to use
await in a
try statement), and more.
In October our community participated in Hacktoberfest, resulting in impressive 275 closed issues and 160 merged pull requests – more detailed documentation, improved tests, general cleanup, and much more. These improvements will be part of 0.20 release, and some of them are already backported to the latest bugfix release – 0.19.2.
Nim in 2019
If you’re interested in seeing and hearing what has been done in 2018 directly from the core developers, take a look at Nim Development Blog 2018 on Youtube.
We have switched to a different release model, with a stable branch (currently that’s v0.19.x) which receives bugfixes, it is aimed at daily usage, and Nimble package development should target this version; and a devel branch which will become a new major release – v0.20, and serve as a release candidate for v1.0.
In 2019, the Nim team will continue to work towards that goal, which will mark the end of breaking changes to Nim. We are focusing on the main areas shown in Nim community survey 2018 as needed before Nim v1.0:
- better documentation
- better standard library
- implementing destructors and move semantics for a more flexible concurrency model and reduced memory usage
Community help is, as always, welcome. Report issues and bugs, make pull requests, consider donating or becoming a sponsor.