Выпуск языка программирования Hare 0.24.2

Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway, почтового клиента Aerc и платформы совместной разработки SourceHut, опубликовал выпуск языка программирования Hare 0.24.2 (номер версии образован как 0.YY.Q, где YY — две последние цифры года, а Q — номер квартала). Hare преподносится как язык системного программирования, близкий к языку Си, но проще, чем Си. Исходный код компилятора и инструментария распространяются под лицензией GPLv3, а код стандартной библиотеки под лицензией MPL (Mozilla Public License).

Язык оптимизирован для решения низкоуровневых задач, таких как разработка операционных систем, компиляторов, сетевых приложений и системных утилит, для которых требуется достижение максимальной производительности и полный контроль над выполнением. В языке применяется ручное управление памятью и статическая система типов, при которой каждой переменной явно должен быть присвоен определённый тип.

Для выполнения приложения поставляется минимальный runtime, а для разработки распространяется стандартная библиотека функций, предоставляющая доступ к базовым интерфейсам операционной системы, а также предлагающая функции для работы с типовыми алгоритмами, протоколами и форматами, включая средства для использования регулярных выражений и шифрования. Для разработки графических приложений развивается инструментарий hare-wayland, а также привязки для доступа к возможностям GTK, Vulkan, OpenGL, SDL2 и libui.

В новой версии:

  • Добавлена поддержка операционной системы NetBSD (в дополнение к ранее поддерживаемым OpenBSD, FreeBSD и Linux).
  • Добавлен синтаксис для определения циклов «for-each«, упрощающих перебор элементов массивов и срезов.
    
       let items = [1, 2, 3, 4, 5];
       for (let item .. items) {
    	fmt::println(item)!;
       };
    
  • Предоставлена возможность определения необязательных параметров функций, значение по умолчанию которых задаётся во время определения функции.
    
       fn example(x: int, y: int = 34) void = {
    	// ...
       };
       example(12);	//эквивалентно вызову example(12, 34);
    
  • Повышена производительность модуля bufio и связанных с ним API, использующих буферизированный ввод/вывод, таких как unix::resolvconf, unix::hosts и unix::passwd.
  • В модуле «regex::» в регулярных выражениях предоставлена возможность использование шаблонов вида «(ha|py|sh)» для перечисления нескольких вариантов выбора.
  • Добавлена поддержка разделяемой памяти (shm_open) и механизма memfd, позволяющего идентифицировать область памяти через передаваемый между процессами файловый дескриптор. Разделяемая память, которая может использоваться для межпроцессного и внутрипроцессного взаимодействия, например, уже задействована в реализации клиента и сервера Wayland hare-wayland.
  • Добавлены криптографические функции crypto::ec,
    crypto::ecdh и crypto::ecdsa.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61551