Nim 3.0 jaoks arendatakse uut kompilaatori tagumise lõppu NIF formaadi põhjal.

Programming language Nim 3.0 is in development, with work underway on an updated compiler that uses the Nim Intermediate Format (NIF). The new compiler will address several technical challenges, including improvements in incremental compilation and simplified dependency management between modules. The release date for Nim 3.0 has not yet been determined.

According to the NIF specification published in the project repository, the new format allows code to be stored as an abstract syntax tree (AST), separating namespaces for built-in constructs and user-defined names. This ensures flexibility when adding new keywords and simplifies integration with development tools.

The Nim 3.0 compiler will be divided into several stages:

  • Nifler — transformation of Nim source code into NIF considering configuration files.
  • Nimony — semantic analysis, including type checking and macro resolution.
  • Hexer — code optimization, including inlining iterators and support for memory management (ARC/ORC).
  • NIFC — code generation for C/C++ considering the characteristics of the target platform.

Peamised täiustused hõlmavad:

  • Inkrementaalset kogumist, mis kiirendab kompileerimist osaliste koodimuudatuste korral.
  • Vajaduse kadumist eelnevalt deklareeritud protseduuride ja tüüpide järele.
  • Tsükliliste sõltuvuste toetust moodulite vahel.
  • Tüüpide kontrollimist geneerikute puhul kompileerimise etapis.
  • Kompileerimise faaside vigade parandamist, näiteks vigaste destruktoreid kutsudes.

Spetsifikatsioonis märgitakse ka, et NIF salvestab koodielementide positsioonide teabe (rea ja veeru numbrid), mis lihtsustab tõrkeotsingut ja integreerimist IDE-dega.

Nim programmeerimiskeel on suunatud süsteemi programmeerimise probleemide lahendamisele, kasutades staatilist tüpiseerimist ja olles inspireeritud keeltest nagu Python, Ada ja Modula. Nim keeles kirjutatud lähtekood kompileeritakse C, C++, Objective-C või JavaScript'i esitamiseks. Edasi kompileeritakse saadud C/C++ kood täitmiseks mõne saadaoleva kompilaatori (clang, gcc, icc, Visual C++) abil, mis võimaldab saavutada sooritusvõimet, mis on C-le lähedane, arvestamata rämpskünnise täitmise eest makstavaid kulusid. Nagu Pythoni keeles, kasutatakse Nimis plokkide eraldajatena sisendeid. Toetatakse metaprogrammeerimise tööriistu ja võimalusi domeenispetsiifiliste keelte (DSL) loomiseks. Projekti kood on litsentsitud MIT looduse alusel.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster