Ny version af Nim-programmeringssproget 0.20

tog sted frigivelse af systemprogrammeringssprog Nim 0.20.0. Sproget bruger statisk skrivning og blev skabt med Pascal, C++, Python og Lisp i tankerne. Nim-kildekoden er kompileret til en C-, C++- eller JavaScript-repræsentation. Efterfølgende kompileres den resulterende C/C++-kode til en eksekverbar fil ved hjælp af enhver tilgængelig compiler (clang, gcc, icc, Visual C++), som giver dig mulighed for at opnå ydeevne tæt på C, hvis du ikke tager højde for omkostningerne ved at køre skraldemanden. I lighed med Python bruger Nim indrykning som blokadskillere. Metaprogrammeringsværktøjer og -funktioner til at skabe domænespecifikke sprog (DSL'er) understøttes. Projektkode leveres under MIT-licensen.

Nim 0.20-udgivelsen kan betragtes som en kandidat til den første stabile 1.0-udgivelse, der inkorporerer adskillige interoperabilitetsbrydende ændringer, der er nødvendige for at danne den første stabile gren, der vil begå sprogets tilstand. Version 1.0 udråbes som en stabil, langsigtet supportudgivelse, der med garanti vil opretholde bagudkompatibilitet i den stabiliserede del af sproget. Separat vil compileren også have en eksperimentel tilstand tilgængelig, hvor nye funktioner vil blive udviklet, der kan krænke bagudkompatibilitet.

Blandt ændringerne foreslået i Nim 0.20 er:

  • "Ikke" er nu altid en unær operator, dvs. udtryk som "assert(not a)" er nu ikke tilladt, og kun "assert not a" er tilladt;
  • Aktiverede streng kontrol for konvertering af heltal og reelle tal på kompileringsstadiet, dvs. udtrykket "const b = uint16(-1)" vil nu resultere i en fejl, da -1 ikke kan konverteres til en heltalstype uden fortegn;
  • Udpakning af tuples til konstanter og sløjfevariabler er tilvejebragt.
    For eksempel kan du nu bruge opgaver som 'const (d, e) = (7, "otte")" og "for (x, y) i f";

  • Leveret standardinitialisering af hashes og tabeller. For eksempel, efter at have erklæret "var s: HashSet[int]" kan du straks udføre "s.incl(5)", hvilket tidligere førte til en fejl;
  • Forbedret fejlinformation for problemer relateret til "case"-operatoren og array-indeks uden for grænserne;
  • Ændring af bordlængden under iteration er forbudt.

Kilde: opennet.ru

Tilføj en kommentar