Дата публикации:Sun, 22 Jun 2025 10:21:19 +0300
Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway, почтового клиента Aerc и платформы совместной разработки SourceHut, опубликовал выпуск языка программирования Hare 0.25.2. Номер версии образован как 0.YY.Q, где YY - две последние цифры года, а Q - номер квартала, прошлый выпуск Hare 0.24.2 был опубликован год назад. Hare преподносится как язык системного программирования, близкий к языку Си, но проще, чем Си. Исходный код компилятора и инструментария распространяются под лицензией GPLv3, а код стандартной библиотеки под лицензией MPL (Mozilla Public License).
Язык оптимизирован для решения низкоуровневых задач, таких как разработка операционных систем, компиляторов, сетевых приложений и системных утилит, для которых требуется достижение максимальной производительности и полный контроль над выполнением. В языке применяется ручное управление памятью и статическая система типов, при которой каждой переменной явно должен быть присвоен определённый тип.
Для выполнения приложения поставляется минимальный runtime, а для разработки распространяется стандартная библиотека функций, предоставляющая доступ к базовым интерфейсам операционной системы, а также предлагающая функции для работы с типовыми алгоритмами, протоколами и форматами, включая средства для использования регулярных выражений и шифрования. Для разработки графических приложений развивается инструментарий hare-wayland, а также привязки для доступа к возможностям GTK, Vulkan, OpenGL, SDL2 и libui.
В новой версии:
- Расширены возможности буферизированного ввода/вывода. В модуль "memio::" добавлен режим потоков "nonblocking". Предложены опции для настройки поведения при обработке конца файла в bufio::scanner и режимы управления потоками bufio::stream. Добавлены функции os::open_buffered и os::create_buffered.
В утилите "haredoc" реализована возможность извлечения из README-файлов краткого описания модулей и его отображения при выводе списка модулей.
Реализована поддержка Unix/POSIX API: io::fsync, io::fdatasync, unix::getrlimit, unix::setrlimit и fcntl (через os::getflags и os::setflags). Для ОС NetBSD портирована поддержка разделяемой памяти.
В утилиту hare добавлена поддержка встраивания внешних обработчиков, вызываемых при помощи подкоманды "hare tool". Например, при помощи подобного обработчика обеспечена интеграция с инструментом "hare-update".
В разряд обязательных переведена обработка ошибок в ситуациях нехватки памяти. Добавлен новый примитивный тип "nomem", возвращаемый функциями выделения памяти при невозможности выделить требуемый объём памяти.
Улучшен API для работы с датами и временем. Расширены возможности работы с часовыми поясами и добавлена поддержка правил PETZ (POSIX Extending TZ). Многие функции перенесены из модуля time::chrono в time::date.
Добавлена поддержка семантических аннотаций кода, позволяющий прикрепить к коду дополнительные метаданные, которые игнорируются компилятором, но могут учитываться лексическим анализатором в стандартной библиотеке.
#[json::gen]
export type player = struct {
name: str,
#[json::field(name = "X", omit_null=true)]
x: *f64,
#[json::field(name = "Y", omit_null=true)]
y: *f64,
};
Добавлена утилита hare-update для упрощения миграции кода на новые версии инструментария Hare, содержащие изменения, нарушающие обратную совместимость. Например, утилита может использоваться для адаптации существующего кода к применению обязательной обработки ошибок выделения памяти, появившейся в текущем выпуске.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63441