The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

22.06.2025 10:21

Дрю ДеВолт (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, содержащие изменения, нарушающие обратную совместимость. Например, утилита может использоваться для адаптации существующего кода к применению обязательной обработки ошибок выделения памяти, появившейся в текущем выпуске.


  1. Главная ссылка к новости (https://harelang.org/blog/2025...)
  2. OpenNews: Выпуск языка программирования Hare 0.24.2
  3. OpenNews: Первый тестовый выпуск языка программирования Hare
  4. OpenNews: В языке системного программирования Hare реализована поддержка OpenBSD
  5. OpenNews: Автор оболочки Sway и языка Hare развивает новое микроядро Helios и OC Ares
  6. OpenNews: Дрю ДеВолт представил язык системного программирования Hare
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63441-hare
Ключевые слова: hare
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (23) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 11:27, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > "Номер версии образован как 0.YY.Q, где YY - две последние цифры года, а Q - номер квартала"

    Вы что с нумерации версии сделали? Извращенцы!

     
     
  • 2.5, Аноним (-), 11:30, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    LibreOffice подсказал.
     
  • 2.7, Грека (?), 12:10, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А если проект доживет до 2101 года, то это будет 0.01.1? Фигня какая-то.
     
     
  • 3.12, Аноним (12), 13:20, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну, наверное, тогда можно и поменять уже будет первую цифру.
    Так что 1.01.1, не о чем беспокоиться.
     
     
  • 4.22, Грека (?), 15:48, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А если версия 0 выйдет за месяца до?
    Получается сначала 0.99.4, а потом 0.00.1 😂
     
  • 3.31, Аноним (31), 19:28, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это ты с начала доживи
     
  • 2.8, Аноним (8), 12:19, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ноль целых 25 столетних 2 квартальных
     
     
  • 3.15, Аноним (15), 13:47, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо тебе КО, ты нас всех снова спас!
    Но и правда, харе уже по N+1 кругу  C/зайцев гонять :)
     
  • 2.33, Аноним (33), 19:44, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Извращенцы — это semver.org. На грани злонамеренного вредительства. Впрочем, от кодеров я иного и не ожидал.
     
     
  • 3.35, Аноним (-), 20:38, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    X.X.X - это традиционная для Линукса порядок версионирования. Наоборот, извращенец это ты.
     

  • 1.9, Drew Devault (?), 12:31, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ваще топ язык! Автор красава!
     
     
  • 2.11, D. DeVault (?), 13:11, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Полностью согласен с вами, коллега!
     
  • 2.28, Аноним (28), 19:17, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Автор, перелогинься!
     

  • 1.21, фыв (??), 15:42, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Выглядит не вырвиглазно, на первый взгляд.
    Работу с Си наследием притянул уже. Любопытно что там с шаблоно-объектно-функциональщиной и как это в деле выглядит.

    А затем тесты, сравнения и через лет 5...

     
  • 1.23, Аноним (23), 16:42, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Увы, очередной недоди-перепитон. Каких-то сильных сторон у языка нет.
    Проект существует скорее благодаря nih, нежели из реальной нужды.
     
  • 1.25, Аноним (25), 18:52, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если будет drop() из Rust и включены в стандартную библиотеку списки, словари и деревья, то вполне замена С.
     
  • 1.26, Аноним (26), 19:13, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а тут хоть строки нормальные есть?
     
     
  • 2.29, Аноним (28), 19:25, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    какие считаются нормальынми?
     
     
  • 3.32, Аноним (31), 19:34, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    С ИИ внутри
     
  • 2.36, Аноним (36), 20:47, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно есть. В ассемблере строки это просто байты, поэтому и тут, и в Си есть нормальные строки.
     

  • 1.37, Аноним (37), 20:53, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А в чем прикол? Синтаксис на любителя, из того что в новости - совсем не проще Си.
    Даже безопасной работы с памятью нет - так зачем мне переходить с Си на это поделие?
     
  • 1.38, freecoder (ok), 21:15, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Синтаксис определённо растом навеян. Типы полей структур, атрибуты... и много что ещё, если пойти и посмотреть доки.

    Но это



    use fmt;
    use os;

    export fn main() void = {
         const user = os::getenv("USER") as str;
         fmt::printfln("Welcome to the Hare documentation, {}!", user)!;
    };



    По-моему читается хуже, чем это:



    use std::env;

    fn main() {
        let user = env::var("USER").unwrap_or_default();
        println!("Welcome to Rust, {user}!");
    }



     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру