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