Programmēšanas valodas Nim 0.20 jauna versija

notika sistēmas programmēšanas valodas izlaidums Nim 0.20.0. Valoda izmanto statisko rakstīšanu, un tā tika izveidota, paturot prātā Pascal, C++, Python un Lisp. Nim pirmkods tiek apkopots C, C++ vai JavaScript attēlojumā. Pēc tam iegūtais C/C++ kods tiek apkopots izpildāmā failā, izmantojot jebkuru pieejamo kompilatoru (clang, gcc, icc, Visual C++), kas ļauj sasniegt veiktspēju tuvu C, ja neņem vērā palaišanas izmaksas. atkritumu savācējs. Līdzīgi kā Python, Nim izmanto atkāpi kā bloku atdalītājus. Tiek atbalstīti metaprogrammēšanas rīki un iespējas domēnam specifisku valodu (DSL) izveidei. Projekta kods piegādāts saskaņā ar MIT licenci.

Nim 0.20 laidienu var uzskatīt par kandidātu pirmajam stabilajam 1.0 laidienam, kas ietver vairākas sadarbspēju traucējošas izmaiņas, kas nepieciešamas, lai izveidotu pirmo stabilo atzaru, kas ietekmēs valodas stāvokli. Versija 1.0 tiek uzskatīta par stabilu, ilgtermiņa atbalsta laidienu, kas garantēs, ka saglabās atpakaļejošu saderību stabilizētajā valodas daļā. Atsevišķi kompilatoram būs pieejams arī eksperimentāls režīms, kurā tiks izstrādātas jaunas funkcijas, kas var traucēt atpakaļejošu saderību.

Starp Nim 0.20 ierosinātajām izmaiņām ir:

  • "Not" tagad vienmēr ir unārs operators, t.i. izteicieni, piemēram, “apgalvot(not a)” tagad nav atļauti, un ir atļauti tikai “apgalvot nav a”;
  • Iespējota stingra veselu skaitļu un reālu skaitļu konvertēšanas pārbaude kompilācijas stadijā, t.i. izteiksme "const b = uint16(-1)" tagad radīs kļūdu, jo -1 nevar pārvērst par neparakstītu vesela skaitļa tipu;
  • Tiek nodrošināta konstantu un cilpas mainīgo korešu izpakošana.
    Piemēram, tagad varat izmantot tādus uzdevumus kā “const (d, e) = (7, “astoņi”)” un “for (x, y) in f”;

  • Nodrošināta noklusējuma jaucējvārdu un tabulu inicializācija. Piemēram, pēc “var s: HashSet[int]” deklarēšanas varat nekavējoties izpildīt “s.incl(5)”, kas iepriekš izraisīja kļūdu;
  • Uzlabota kļūdu informācija problēmām, kas saistītas ar operatoru “case” un masīva indeksu ārpus robežām;
  • Tabulas garuma maiņa iterācijas laikā ir aizliegta.

Avots: opennet.ru

Pievieno komentāru