Gjatë zhvillimit të versionit 3.0 të gjuhës së programimit Nim, po punohet për një përpilues të përditësuar që përdor formatin e ndërmjetëm NIF (Nim Intermediate Format). Përpiluesi i ri do të zgjidhë disa probleme teknike, duke përfshirë përmirësimin e përpilimit në rritje dhe thjeshtimin e menaxhimit të varësive midis moduleve. Data e lëshimit për Nim 3.0 ende nuk është përcaktuar.
Sipas specifikimit NIF të publikuar në depon e projektit, formati i ri lejon që kodi të ruhet si një pemë sintaksore abstrakte (AST), duke ndarë hapësirat e emrave për konstruktet e integruara dhe emrat e personalizuar. Kjo siguron fleksibilitet kur shtoni fjalë kyçe të reja dhe thjeshton integrimin me mjetet e zhvillimit.
Përpiluesi Nim 3.0 do të ndahet në disa faza:
- Nifler - konverton kodin burimor Nim në NIF, duke marrë parasysh skedarët e konfigurimit.
- Nimony - analiza semantike, duke përfshirë kontrollin e tipit dhe rezolucionin makro.
- Hexer - optimizimi i kodit, duke përfshirë inlinimin e përsëritësve dhe mbështetjen e menaxhimit të kujtesës (ARC/ORC).
- NIFC - gjenerimi i kodit për C/C++, duke marrë parasysh karakteristikat e platformës së synuar.
Përmirësimet kryesore përfshijnë:
- Asambleja në rritje, e cila përshpejton përpilimin kur bëhen ndryshime të pjesshme të kodit.
- Eliminoni nevojën për deklarim paraprak të procedurave dhe llojeve.
- Mbështetje për varësitë ciklike midis moduleve.
- Kontrollimi i tipit për gjenerikë në fazën e përpilimit.
- Korrigjimi i gabimeve të fazës së përpilimit, siç është thirrja e gabuar e destruktorëve.
Specifikimi gjithashtu vë në dukje se NIF ruan informacione rreth pozicioneve të elementeve të kodit (numrat e rreshtave dhe kolonave), gjë që thjeshton korrigjimin dhe integrimin me IDE.
Gjuha Nim është e fokusuar në zgjidhjen e problemeve të programimit të sistemit, përdor shtypjen statike dhe është krijuar me vëmendje në gjuhë të tilla si Python, Ada dhe Modula. Kodi burimor Nim përpilohet në një përfaqësim C, C++, Objective-C ose JavaScript. Më pas, kodi C/C++ që rezulton përpilohet në një skedar të ekzekutueshëm duke përdorur çdo përpilues të disponueshëm (clang, gcc, icc, Visual C++), i cili ju lejon të arrini performancë afër C, nëse nuk merrni parasysh kostot e funksionimit të kolektorit të plehrave. Ngjashëm me Python, Nim përdor dhëmbëzimin si ndarës të bllokut. Mbështeten mjetet dhe aftësitë e metaprogramimit për krijimin e gjuhëve specifike të domenit (DSL). Kodi i projektit jepet nën licencën MIT.
Burimi: opennet.ru
