Nim Reaches Release Candidate Stage
Written by Kay Ewbank   
Friday, 21 June 2019

Nim has been updated with what the developers say is the release candidate for version 1.0. Nim (formerly called Nimrod) is a statically typed and compiled systems programming language that focuses on performance, portability and expressiveness.

Nim is strongly typed and has first class functions. It is object oriented, but with composition preferred over inheritance. Nim compiles to C as its default, but can be used with different compiler back-ends to produce JavaScript, C++, or Objective-C.

nim

Nim's options include a deferred reference counting garbage collector that is fast, incremental and pauseless; or a soft real-time garbage collector that lets you specify its max pause time. There are also other options for garbage collection.

While this is being described as a massive release that marks the developers' release candidate for version 1.0, it is still only actually named as Nim 0.20. The developers explained that rather than just call it 1.0RC, they want to give the community a chance to test 0.20.0 and find bugs that might result in require breaking changes.

The new release is described as jam packed with features, including stricter compile time checks for integer and float conversions, and tuple unpacking for constant and for loop variables. Both improvements are designed to find problems at compile time rather than once the program is in use.

Hash sets and tables are now initialized by default, and error messages have been improved for case statements and index out of bounds errors.  For case statements, you're told what cases are covered and missing, and for out of bounds indexes you're told more clearly what the incorrect index value is and what the bounds are.

Various elements have been added to the language, including Wm support for float32<->int32 and float64<->int64 casts. There's a new pragma block noSideEffect that works like the gcsafe pragma block, user defined pragmas are now allowed in the pragma blocks, and custom pragmas are now supported for var and let symbols.

Pragma blocks are no longer eliminated from the typed AST tree. This has been done to preserve pragmas for further analysis by macros.

Case object branches can now be initialized with a runtime discriminator, so long as the possible discriminator values are constrained within a case statement.

The new version is available on the Nim website. 

 

nim

More Information

Nim Language Site

Related Articles

Nim Improves Async  

Nim 0.15

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


Google Proposes Web Integrity Standard Which Appalls Many
09/08/2023

Google has suggested a far-reaching addition to the web which it calls "Web Integrity Standard". This solves a problem that is important not only to Google but to the entire economy of the web. Some u [ ... ]



SIGGRAPH 2023 Real-Time Live! Trailer
04/08/2023

This year's SIGGRAPH takes place next week and now we bring you the Real-Time Live! Trailer - a taste of what you might expect if you attend the early evening presentation in Los Angeles in person or  [ ... ]


More News

Summer SALE Kindle 9.99 Paperback $10 off!!

esp32book

 

 

Comments




or email your comment to: [email protected]

Last Updated ( Friday, 21 June 2019 )