NIM 3.0 Unveils New Compiler Using NIF Format

In the process of developing version 3.0 of the NIM programming language, work is underway on updated compiler using the NIF intermediate format (Nikim Intermediate Format). In the new compiler, several technical tasks will be solved, among which an improvement in the incremental compilation and simplification of dependencies between the modules. NIM 3.0 release date has not yet been defined.

According to the specifications of the NIF published in the project repository allows you to store the code in the form of an abstract syntactic tree (AST), and the AST), Separating the spaces of names for built -in structures and user names. This provides flexibility when adding new keywords and simplifies integration with development tools.

NIM 3.0 will be divided into several stages:

  • nifler – converting the source code NIM into NIF taking into account configuration files.
  • nimony – semantic analysis, including types of types and resolution of macros.
  • hexer – code optimization, including ITLINING ITERIATIONS and support for memory management (ARC/Orc).
  • nifc – generation of code for C/C ++ taking into account the features of the target platform.

The main improvements include:

  • Increting assembly, accelerating compilation for partial code changes.
  • refusal to preliminary declare procedures and types.
  • Support for cyclic dependencies between modules.
  • Types for generics at the compilation stage.
  • Correction of compilation phase errors, such as an incorrect challenge of destructors.

The specification also notes that NIF retains information about the positions of code elements (lines and columns number), which simplifies debugging and integration with IDE.

Language nim is focused on solving system programming problems, uses static typification and created with an eye on languages ​​such as Python, ADA and MODULA. The source code in the NIM language is compiled in the representation on C, C ++, Objective-C or JavaScript. In the future

/Reports, release notes, official announcements.