Ny versjon av programmeringsspråket Nim 0.20

fant sted utgivelse av systemprogrammeringsspråk Nim 0.20.0. Språket bruker statisk skriving og ble laget med tanke på Pascal, C++, Python og Lisp. Nim-kildekoden er kompilert til en C-, C++- eller JavaScript-representasjon. Deretter blir den resulterende C/C++-koden kompilert til en kjørbar fil ved å bruke en hvilken som helst tilgjengelig kompilator (clang, gcc, icc, Visual C++), som lar deg oppnå ytelse nær C, hvis du ikke tar hensyn til kostnadene ved å kjøre søppelsamleren. I likhet med Python bruker Nim innrykk som blokkavgrensere. Metaprogrammeringsverktøy og muligheter for å lage domenespesifikke språk (DSL) støttes. Prosjektkode medfølgende under MIT-lisensen.

Nim 0.20-utgivelsen kan betraktes som en kandidat for den første stabile 1.0-utgivelsen, og inkluderer flere interoperabilitetsbrytende endringer som er nødvendige for å danne den første stabile grenen som vil forplikte språkets tilstand. Versjon 1.0 er utpekt som en stabil, langsiktig støtteutgivelse som garantert opprettholder bakoverkompatibilitet i den stabiliserte delen av språket. Separat vil kompilatoren også ha en eksperimentell modus tilgjengelig der nye funksjoner som kan bryte bakoverkompatibiliteten vil bli utviklet.

Blant endringene som er foreslått i Nim 0.20 er:

  • "Ikke" er nå alltid en unær operatør, dvs. uttrykk som "hevde(ikke a)" er nå ikke tillatt og bare "hevde ikke a" er tillatt;
  • Aktiverte strenge kontroller for konvertering av heltall og reelle tall på kompileringsstadiet, dvs. uttrykket "const b = uint16(-1)" vil nå resultere i en feil, siden -1 ikke kan konverteres til en heltallstype uten fortegn;
  • Utpakking av tupler for konstanter og sløyfevariabler er gitt.
    For eksempel, nå kan du bruke oppgaver som 'const (d, e) = (7, "åtte")" og "for (x, y) i f";

  • Gir standard initialisering av hashes og tabeller. For eksempel, etter å ha erklært "var s: HashSet[int]" kan du umiddelbart utføre "s.incl(5)", som tidligere førte til en feil;
  • Forbedret feilinformasjon for problemer relatert til "case"-operatøren og array-indeksen utenfor grensene;
  • Det er forbudt å endre bordlengden under iterasjon.

Kilde: opennet.ru

Legg til en kommentar