Ny version av programmeringsspråket Nim 0.20

tog plats version av systemprogrammeringsspråk Nim 0.20.0. Språket använder statisk typning och skapades med Pascal, C++, Python och Lisp i åtanke. Nim källkod kompileras till en C-, C++- eller JavaScript-representation. Därefter kompileras den resulterande C/C++-koden till en körbar fil med valfri tillgänglig kompilator (clang, gcc, icc, Visual C++), vilket låter dig uppnå prestanda nära C, om du inte tar hänsyn till kostnaderna för att köra sopsamlaren. I likhet med Python använder Nim indrag som blockavgränsare. Metaprogrammeringsverktyg och funktioner för att skapa domänspecifika språk (DSL) stöds. Projektkod levereras under MIT-licensen.

Nim 0.20-utgåvan kan betraktas som en kandidat för den första stabila 1.0-utgåvan, som innehåller flera interoperabilitetsbrytande ändringar som behövs för att bilda den första stabila grenen som kommer att befästa språkets tillstånd. Version 1.0 utses som en stabil, långsiktig supportversion som garanterat kommer att bibehålla bakåtkompatibilitet i den stabiliserade delen av språket. Separat kommer kompilatorn också att ha ett experimentläge tillgängligt där nya funktioner som kan bryta bakåtkompatibiliteten kommer att utvecklas.

Bland de ändringar som föreslås i Nim 0.20 är:

  • "Inte" är nu alltid en unär operatör, dvs. uttryck som "assert(not a)" är nu inte tillåtna och endast "assert not a" är tillåtet;
  • Aktiverade strikta kontroller för konvertering av heltal och reella tal vid kompileringsstadiet, d.v.s. uttrycket "const b = uint16(-1)" kommer nu att resultera i ett fel, eftersom -1 inte kan konverteras till en heltalstyp utan tecken;
  • Uppackning av tupler för konstanter och loopvariabler tillhandahålls.
    Till exempel kan du nu använda tilldelningar som 'const (d, e) = (7, "åtta")" och "för (x, y) i f";

  • Tillhandahöll standardinitiering av hash och tabeller. Till exempel, efter att ha deklarerat "var s: HashSet[int]" kan du omedelbart köra "s.incl(5)", vilket tidigare ledde till ett fel;
  • Förbättrad felinformation för problem relaterade till "case"-operatorn och arrayindex utanför gränserna;
  • Det är förbjudet att ändra tabelllängden under iterationen.

Källa: opennet.ru

Lägg en kommentar