Wersja języka programowania Nim 1.4.0

Została wydana nowa wersja języka programowania systemu Nim, w którym we wrześniu mija rok od jej wydania. pierwsza stabilna wersja. Składnia jest podobna do Pythona, a wydajność prawie jak w C++. Według FAQ język dużo zapożycza (w kolejności wagi wkładu): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Działa wszędzie dzięki możliwości kompilacji do C/C++/Objective-C/JS. To wspiera makra, OOP, leki generyczne, исключения, wymiana gorącego kodu i wiele więcej. Licencja - MIT.

Najważniejsze zmiany:

  • Istnieje nowy moduł wyrzucania elementów bezużytecznych ORC, który używa algorytmu ARC, ale obsługuje odwołania cykliczne w specjalny sposób. Włączone opcją --gc:orc. O różnicach ARC/ORC jest świetny artykuł.

  • Dodano tryb ścisłych definicji funkcji, który obejmuje dodatkowe sprawdzanie zmienności obiektów. Aktywowane za pomocą pragmy {.experimental: "strictFuncs".} lub przełącznika --experimental:strictFuncs.

  • Słowo kluczowe from może być teraz używane jako operator.

  • Dodano pragmę .noalias. Odwzorowuje słowo kluczowe Cstrict, aby zwiększyć wydajność, jaką może zapewnić to słowo kluczowe.

  • Konkretne ostrzeżenia można teraz zamienić na błędy za pomocą opcji --warningAsError[X]:on|off.

  • Nowe polecenie: nim r main.nim [args...], które kompiluje i uruchamia main.nim oraz zawiera --usenimcache, dzięki czemu wynik jest przechowywany w $nimcache/main$exeExt, przy użyciu tej samej logiki co nim c - r, aby pozbyć się z ponownej kompilacji, gdy kod źródłowy nie uległ zmianie. Przykład:

nim r kompilator/nim.nim --help # skompilowany po raz pierwszy
echo 'importuj system; echo getCurrentCompilerExe()' | nim r - # to też działa
nim r kompilator/nim.nim --fullhelp # bez ponownej kompilacji
nim r --nimcache:/tmp main # plik binarny zapisany w /tmp/main

  • Dodano nową wskazówkę --hint:msgOrigin, która pokaże, gdzie kompilator wygenerował komunikaty o błędach/ostrzeżeniach. Pomaga to, gdy nie jest oczywiste, skąd pochodzi wiadomość.

  • Dodano flagę --backend:js|c|cpp|objc (lub -b:js itp.), aby zmienić backend.

  • Dodano flagę --usenimcache do wysyłania plików binarnych do nimcache.

  • Usunięto klucze: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Narzędzie nimsuggest pokazuje teraz nie tylko deklarację przekazywania, ale także lokalizację implementacji, gdy jest to wymagane def.

Ponadto do standardowej biblioteki dodano wiele zmian i wiele poprawek błędów.

Źródło: linux.org.ru