Nova versió del llenguatge de programació Nim 0.20

tingué lloc llançament del llenguatge de programació del sistema Nim 0.20.0. El llenguatge utilitza escriptura estàtica i es construeix tenint en compte Pascal, C++, Python i Lisp. El codi font de Nim es compila en una representació C, C++ o JavaScript. Posteriorment, el codi C/C++ resultant es compila en un fitxer executable mitjançant qualsevol compilador disponible (clang, gcc, icc, Visual C++), que us permet aconseguir un rendiment proper al C, si no teniu en compte el cost d'execució. el recol·lector d'escombraries. Similar a Python, Nim utilitza el sagnat com a separadors de blocs. S'admeten eines de metaprogramació i capacitats per crear llenguatges específics de domini (DSL). Codi del projecte subministrat sota la llicència MIT.

El llançament de Nim 0.20 es pot veure com un candidat de llançament per a la primera versió estable 1.0, incloent diversos canvis de compatibilitat necessaris per formar la primera branca estable que compromet l'estat de l'idioma. La versió 1.0 es presenta com una versió de suport estable i a llarg termini que es garantirà per mantenir la compatibilitat enrere a la part estabilitzada de l'idioma. Per separat, també estarà disponible un mode experimental al compilador, en el qual es desenvoluparan noves característiques que poden trencar la compatibilitat enrere.

Dels canvis proposats a Nim 0.20, podem destacar:

  • "No" és ara sempre un operador unari, és a dir. expressions com "assert(not a)" ara no són vàlides i només es permet "assert not a";
  • Les comprovacions dures per convertir nombres enters i reals en temps de compilació estan habilitades, és a dir. l'expressió "const b = uint16(-1)" ara donarà lloc a un error, ja que -1 no es pot convertir en un tipus d'enter sense signe;
  • Es proporciona desempaquetat de tuples per a constants i variables de bucle.
    Per exemple, ara es poden utilitzar assignacions com "const (d, e) = (7, "vuit")" i "for (x, y) in f";

  • Proporciona la inicialització predeterminada de hash i taules. Per exemple, després de declarar "var s: HashSet[int]", podeu executar immediatament "s.incl(5)", que solia provocar un error;
  • S'ha millorat el contingut d'informació dels errors per problemes relacionats amb l'operador "cas" i l'índex de matriu fora de límits;
  • Està prohibit canviar la longitud de la taula durant la iteració.

Font: opennet.ru

Afegeix comentari