Uusi versio Nim 0.20 -ohjelmointikielestä

tapahtui järjestelmän ohjelmointikielen julkaisu Nimi 0.20.0. Kieli käyttää staattista kirjoitusta ja on luotu Pascalia, C++:aa, Pythonia ja Lispia ajatellen. Nim-lähdekoodi on käännetty C-, C++- tai JavaScript-esitykseen. Myöhemmin tuloksena oleva C/C++-koodi käännetään suoritettavaksi tiedostoksi millä tahansa saatavilla olevalla kääntäjällä (clang, gcc, icc, Visual C++), jonka avulla voit saavuttaa suorituskyvyn lähellä C:tä, jos et ota huomioon ajon kustannuksia. roskakoriin. Pythonin tapaan Nim käyttää sisennystä lohkon erottimina. Metaohjelmointityökaluja ja ominaisuuksia verkkoaluekohtaisten kielten (DSL) luomiseen tuetaan. Projektin koodi toimitetaan MIT-lisenssillä.

Nim 0.20 -julkaisua voidaan pitää ehdokkaana ensimmäiselle vakaalle 1.0 -julkaisulle, joka sisältää useita yhteentoimivuutta rikkovia muutoksia, jotka tarvitaan muodostamaan ensimmäinen vakaa haara, joka sitoo kielen tilan. Versiota 1.0 mainostetaan vakaana, pitkän aikavälin tukijulkaisuna, joka taataan säilyttää taaksepäin yhteensopivuuden kielen vakiintuneessa osassa. Kääntäjällä on erikseen saatavilla myös kokeellinen tila, jossa kehitetään uusia ominaisuuksia, jotka saattavat rikkoa taaksepäin yhteensopivuuden.

Nim 0.20:ssa ehdotetut muutokset ovat:

  • "Ei" on nyt aina unaarinen operaattori, ts. ilmaukset, kuten "assert(not a)" eivät ole nyt sallittuja ja vain "assert not a" on sallittu;
  • Otettu käyttöön tiukat tarkistukset kokonaislukujen ja reaalilukujen muunnokselle käännösvaiheessa, ts. lauseke "const b = uint16(-1)" johtaa nyt virheeseen, koska -1:tä ei voida muuntaa etumerkittömäksi kokonaislukutyypiksi;
  • Vakioiden ja silmukkamuuttujien monikot voidaan purkaa.
    Nyt voit esimerkiksi käyttää tehtäviä, kuten 'const (d, e) = (7, "kahdeksan")" ja "for (x, y) in f";

  • Hajautusarvojen ja taulukoiden oletusalustus. Esimerkiksi, kun olet ilmoittanut "var s: HashSet[int]", voit suorittaa välittömästi "s.incl(5)", joka johti aiemmin virheeseen;
  • Parannetut virhetiedot ongelmiin, jotka liittyvät "case"-operaattoriin ja taulukkoindeksiin rajojen ulkopuolella;
  • Taulukon pituuden muuttaminen iteroinnin aikana on kielletty.

Lähde: opennet.ru

Lisää kommentti