Nieuwe versie van de programmeertaal Nim 0.20

vond plaats systeem programmeertaal release Nim 0.20.0. De taal maakt gebruik van statisch typen en is gemaakt met Pascal, C++, Python en Lisp in gedachten. De Nim-broncode wordt gecompileerd in een C-, C++- of JavaScript-weergave. Vervolgens wordt de resulterende C/C++-code gecompileerd in een uitvoerbaar bestand met behulp van elke beschikbare compiler (clang, gcc, icc, Visual C++), waardoor u prestaties kunt bereiken die dicht bij C liggen, als u geen rekening houdt met de kosten van het uitvoeren van de vuilophaler. Net als Python gebruikt Nim inspringen als blokscheidingstekens. Metaprogrammeertools en mogelijkheden voor het creëren van domeinspecifieke talen (DSL's) worden ondersteund. Projectcode geleverde onder de MIT-licentie.

De Nim 0.20-uitgave kan worden beschouwd als een kandidaat voor de eerste stabiele 1.0-uitgave, waarin verschillende interoperabiliteitsbrekende wijzigingen zijn opgenomen die nodig zijn om de eerste stabiele tak te vormen die de staat van de taal zal vastleggen. Versie 1.0 wordt aangeprezen als een stabiele ondersteuningsrelease voor de lange termijn die gegarandeerd achterwaartse compatibiliteit zal behouden in het gestabiliseerde deel van de taal. Daarnaast zal de compiler ook een experimentele modus beschikbaar hebben waarin nieuwe functies zullen worden ontwikkeld die achterwaartse compatibiliteit kunnen verbreken.

Onder de in Nim 0.20 voorgestelde wijzigingen zijn:

  • "Niet" is nu altijd een unaire operator, d.w.z. uitdrukkingen als “beweren(niet a)” zijn nu niet toegestaan ​​en alleen “beweren niet a” is toegestaan;
  • Strenge controles mogelijk gemaakt voor de conversie van gehele getallen en reële getallen in de compilatiefase, d.w.z. de uitdrukking "const b = uint16(-1)" zal nu resulteren in een fout, omdat -1 niet kan worden geconverteerd naar een geheel getal zonder teken;
  • Er is voorzien in het uitpakken van tupels voor constanten en lusvariabelen.
    U kunt nu bijvoorbeeld toewijzingen gebruiken als 'const (d, e) = (7, "acht")" en "for (x, y) in f";

  • Biedt standaardinitialisatie van hashes en tabellen. Nadat u bijvoorbeeld “var s: HashSet[int]” hebt gedeclareerd, kunt u onmiddellijk “s.incl(5)” uitvoeren, wat eerder tot een fout leidde;
  • Verbeterde foutinformatie voor problemen met betrekking tot de “case”-operator en de array-index buiten het bereik;
  • Het wijzigen van de tafellengte tijdens de iteratie is verboden.

Bron: opennet.ru

Voeg een reactie