В начале августа 2023 года состоялся релиз языка системного программирования Nim 2.0. Проект доступен на GitHub под открытой лицензией MIT.
Согласно данным OpenNET, язык программирования Nim ориентирован на решение задач системного программирования, использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Исходный код на языке Nim компилируется в представление на C, C++, Objective-C или javascript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к С, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. В Nim поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL).
Основные изменения и дополнения в Nim 2.0 :
по умолчанию задействован сборщик мусора ORC, который использует тот же алгоритм подсчёта ссылок на объекты, что и сборщик мусора ARC, но дополнительно поддерживает обработчик циклов, позволяющий использовать ARC с реализацией механизма async в стандартной библиотеке;
улучшена распаковка кортежей и добавлена возможность вложенной распаковки;
добавлена возможность нисходящего вывода типов;
добавлена прагма .forbids для определения запрещённых тегов;
в стандартной библиотеке модуль "os" разделён на несколько отдельных модулей: std/oserrors, std/envvars, std/paths, std/dirs, std/files, std/symlinks, std/appdirs и std/cmdline;
стабилизирована поддержка перегрузки перечисляемых типов (enum);
для объектов предоставлена возможность определения значений полей по умолчанию;
бэкенд для генерации кода javascript переведён на использование типа BigInt для 64-разрядных целых типов (int64 и uint64);
улучшена переносимость с кодом на языке C++.
Источник новости: habr.com