Дрю ДеВолт объявил о выпуске новой версии языка программирования Hare 0.24.2 . ДеВолт является создателем пользовательского окружения Sway, почтового клиента Aerc и платформы совместной разработки SourceHut.
Hare позиционируется как язык системного программирования, который по сложности близок к C, но значительно проще. Исходный код компилятора и инструментов распространяется под лицензией GPLv3, а код стандартной библиотеки – под лицензией MPL (Mozilla Public License).
Вот основные изменения:
- Теперь Hare поддерживает платформу NetBSD, что расширяет поддержку платформ Hare до всех трех основных BSD-дистрибутивов: NetBSD, OpenBSD и FreeBSD, а также Linux.
- Важным дополнением в Hare 0.24.2 стали циклы for-each. Функция позволяет более удобно и проще перебирать элементы массивов и срезов. Теперь можно итерировать как по самим элементам, так и по указателям на них.
Пример итерирования по элементам массива:
let items = [1, 2, 3, 4, 5]; for (let item .. items) { fmt::println(item)!; };
- Теперь функции в Hare могут определять значения по умолчанию для опциональных параметров. Это сделано для удобства и гибкости при вызове функций. Например, функция example теперь может принимать второй параметр с дефолтным значением:
fn example(x: int, y: int = 34) void = { // … }; example(12); // Эквивалентно вызову example(12, 34);
- Модуль bufio, предназначенный для улучшения производительности ввода-вывода за счет буферизации, получил значительные улучшения. Устранены многие проблемы с копированием памяти, что значительно повысило производительность. Это особенно важно для I/O-зависимых программ на Hare.
- Теперь модуль regex:: поддерживает множественную альтернативу, что завершает реализацию POSIX Extended Regular Expressions. Новшество позволяет использовать шаблоны вроде (ha|py|sh), делая работу с регулярными выражениями более гибкой.
- Для улучшения многопоточности и взаимодействия между процессами на Unix была расширена поддержка конструкций общей памяти. Реализованы функции shm_open и совместимые с libc для всех поддерживаемых платформ, что позволяет программам на Hare использовать POSIX общую память для взаимодействия с программами на C. Поддержка memfd также добавлена для платформ FreeBSD и Linux.
- В Hare 0.24.2 добавлены новые криптографические API, такие как crypto::ec, crypto::ecdh и crypto::ecdsa, что расширяет возможности разработчиков в области безопасного программирования.
Релиз включает ряд изменений, нарушающих обратную совместимость с версией 0.24.0. Среди них введение типа “done” для улучшения паттерна итераторов, обновление множества стандартных библиотек и изменения в API модулей unix:: и time::.
Для пользователей, чьи программы зависят от предыдущих версий, необходимо провести рефакторинг кода. Подробности всех изменений можно найти в заметкахрелиза.