Nim version

We support a single Nim version that is upgraded between release cycles of our own projects. Individual projects and libraries may choose to support multiple Nim versions, though this involves significant overhead.

Pros

  • Nim devel branch, as well as feature and bugfix releases often break the codebase due to subtle changes in the language and code generation which are hard to diagnose - each upgrade requires extensive testing
  • Easier for community to understand exact set of dependencies
  • Balance between cutting edge and stability
  • Own branch enables escape hatch for critical issues

Cons

  • Work-arounds in our code for Nim issues add technical debt
  • Compiler is rebuilt in every clone

Practical notes

  • Following Nim devel, from experience, leads to frequent disruptions as "mysterious" issues appear
  • To support multiple Nim versions in a project, the project should be set up to run CI with all supported versions