A nova versione di a lingua di prugrammazione Nim 0.20

hè accadutu liberazione di lingua di prugrammazione di u sistema Nim 0.20.0. A lingua usa typing static è hè stata creata cun un ochju à Pascal, C++, Python è Lisp. U codice fonte Nim hè cumpilatu in una rappresentazione C, C++ o JavaScript. In seguitu, u codice C / C ++ risultante hè cumpilatu in un schedariu eseguibile cù qualsiasi compilatore dispunibule (clang, gcc, icc, Visual C ++), chì vi permette di ottene prestazioni vicinu à C, se ùn tenete micca in contu i costi di esecuzione. u cullettore di l'immondizia. Simile à Python, Nim usa l'indentazione cum'è separatori di blocchi. Strumenti di metaprogrammazione è capacità per creà lingue specifiche di u duminiu (DSL) sò supportati. Codice di prughjettu furnitu sottu a licenza MIT.

A liberazione Nim 0.20 pò esse cunsiderata candidata per a prima liberazione stabile 1.0, incorporendu parechji cambiamenti di interoperabilità necessarii per furmà u primu ramu stabile chì cummette u statu di a lingua. A versione 1.0 hè presentata cum'è una liberazione di supportu stabile è à longu andà chì serà garantitu per mantene a cumpatibilità inversa in a parte stabilizzata di a lingua. Separatamente, u compilatore avarà ancu un modu sperimentale dispunibule in quale saranu sviluppati novi funzioni chì ponu rompe a cumpatibilità retroattiva.

Trà i cambiamenti pruposti in Nim 0.20 sò:

  • "Not" hè avà sempre un operatore unariu, i.e. espressioni cum'è "assert (micca a)" ùn sò micca permessi è solu "assert not a" hè permessu;
  • Abilitatu cuntrolli stretti per a cunversione di numeri interi è numeri reali in u stadiu di compilazione, i.e. l'espressione "const b = uint16(-1)" avà risultatu in un errore, postu chì -1 ùn pò micca esse cunvertitu in un tipu interu senza signu;
  • Unpacking of tuples for constants and loop variables hè furnitu.
    Per esempiu, avà pudete aduprà assignazioni cum'è "const (d, e) = (7, "ottu")" è "per (x, y) in f";

  • Furnitu l'inizializazione predeterminata di hash è tabelle. Per esempiu, dopu à dichjarà "var s: HashSet[int]" pudete immediatamente eseguisce "s.incl (5)", chì prima hà purtatu à un errore;
  • Infurmazione d'errore mejorata per i prublemi ligati à l'operatore "casu" è l'indice di array fora di i limiti;
  • Hè pruibitu di cambià a durata di a tavola durante l'iterazione.

Source: opennet.ru

Add a comment