Nova versión da linguaxe de programación Nim 0.20

tivo lugar versión da linguaxe de programación do sistema Nim 0.20.0. A linguaxe usa dixitación estática e foi creada pensando en Pascal, C++, Python e Lisp. O código fonte de Nim compílase nunha representación C, C++ ou JavaScript. Posteriormente, o código C/C++ resultante compílase nun ficheiro executable mediante calquera compilador dispoñible (clang, gcc, icc, Visual C++), o que lle permite acadar un rendemento próximo ao C, se non se ten en conta os custos de execución. o colector de lixo. Similar a Python, Nim usa sangría como delimitadores de bloque. Admítense ferramentas e capacidades de metaprogramación para crear linguaxes específicas de dominio (DSL). Código do proxecto subministrado baixo a licenza MIT.

A versión Nim 0.20 pódese considerar candidata á primeira versión estable 1.0, que incorpora varios cambios de interoperabilidade necesarios para formar a primeira rama estable que comprometerá o estado da lingua. A versión 1.0 preséntase como unha versión de soporte estable e a longo prazo que estará garantida para manter a compatibilidade con versións anteriores na parte estabilizada do idioma. Por separado, o compilador tamén disporá dun modo experimental no que se desenvolverán novas funcións que poidan romper a compatibilidade con versións anteriores.

Entre os cambios propostos en Nim 0.20 están:

  • "Non" é agora sempre un operador unario, é dicir. agora non se permiten expresións como “afirmar(non a)” e só se permite “afirmar non a”;
  • Activaron comprobacións estritas para a conversión de números enteiros e reais na fase de compilación, é dicir. a expresión "const b = uint16(-1)" agora producirá un erro, xa que -1 non se pode converter nun tipo de enteiro sen signo;
  • Ofrécese a desempaquetado de tuplas para constantes e variables de bucle.
    Por exemplo, agora podes usar asignacións como 'const (d, e) = (7, "oito")" e "for (x, y) in f";

  • Proporcionou a inicialización predeterminada de hash e táboas. Por exemplo, despois de declarar "var s: HashSet[int]" pode executar inmediatamente "s.incl(5)", o que anteriormente provocou un erro;
  • Información de erros mellorada para problemas relacionados co operador "caso" e co índice de matriz fóra dos límites;
  • Está prohibido cambiar a lonxitude da táboa durante a iteración.

Fonte: opennet.ru

Engadir un comentario