Nowa wersja systemowego języka programowania Nim została wydana. Wprowadza częściową niekompatybilność z wersją 1.0, na przykład z powodu bardziej rygorystycznego przekształcania typów. Ale istnieje flag —useVersion:1.0, aby to uwzględnić.
Najważniejsza nowość to nowy zbieracz śmieci, aktywowany opcją —gc:arc. Autor języka, Andreas Rumpf, zamierza napisać szczegółowy artykuł na temat zalet ARC, a na razie zachęca do zapoznania się z jego wystąpieniem na FOSDEM, gdzie zaprezentowane są wyniki benchmarków.
- Kompilator teraz wspiera opcję —asm, co ułatwia analizę generowanego kodu assemblera.
- Pragma align może być używana dla zmiennych oraz pól obiektów, podobnie jak alignas w C/C++.
- =sink operator jest teraz opcjonalny. Kompilator może teraz wykorzystać kombinację =destroy i copyMem do efektywnego przenoszenia obiektów.
- Przekształcenia do unsigned integers nie są sprawdzane w czasie wykonywania. Szczegóły w https://github.com/nim-lang/RFCs/issues/175
- Nowa składnia dla lvalue: var b {.byaddr.} = expr, aktywowana za pomocą import std/decls
- Kompilator wspiera nowy klucz —panics:on, który przekształca błędy runtime, takie jak IndexError lub OverflowError, w błędy fatalne, których nie można przechwycić za pomocą try. Może to poprawić wydajność runtime oraz rozmiar programu.
- Generowany kod JS używa tylko spacji, zamiast mieszanki spacji i tabulatorów.
- Do kompilatora dodano wsparcie dla pragma .localPassc, które pozwala na przetwarzanie specjalnych opcji backendu C(++) dla pliku C(++) generowanego z bieżącego modułu Nim.
- Nimpretty nie akceptuje teraz ujemnych argumentów do ustawiania wcięć, ponieważ łamało to pliki.
- Dodano nowe makra (collect, dup, capture), aktywowane za pomocą import sugar.
Oprócz tego dodano wiele zmian w standardowej bibliotece i wiele poprawek błędów.
Źródło: linux.org.ru
