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 обязательно


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

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

     
     
  • 2.5, Аноним (-), 11:30, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    LibreOffice подсказал.
     
  • 2.7, Грека (?), 12:10, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    А если проект доживет до 2101 года, то это будет 0.01.1? Фигня какая-то.
     
     
  • 3.12, Аноним (12), 13:20, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ну, наверное, тогда можно и поменять уже будет первую цифру.
    Так что 1.01.1, не о чем беспокоиться.
     
     
  • 4.22, Грека (?), 15:48, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А если версия 0 выйдет за месяца до?
    Получается сначала 0.99.4, а потом 0.00.1 😂
     
  • 3.31, Аноним (31), 19:28, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это ты с начала доживи
     
  • 3.52, Аноним (52), 11:58, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если до 2101 доживёт, то поменяют на формат версий Хрома
     
     
  • 4.58, поролон (?), 16:48, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > opennet, 2101
    > ...так же, в новом хромбраузере поправлена проблема переполнение значения счетчика версии
     
  • 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 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Извращенцы — это semver.org. На грани злонамеренного вредительства. Впрочем, от кодеров я иного и не ожидал.
     
     
  • 3.35, Аноним (-), 20:38, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    X.X.X - это традиционная для Линукса порядок версионирования. Наоборот, извращенец это ты.
     
  • 3.55, Аноним (55), 14:06, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, во-первых, решать как версионировать свой код будут именно кодеры, точно не ты. Во-вторых, semver - лучшая и повсеместно признанная схема версионирования. Вообще, жизнеспособны любые монотонно растущие версии состоящие из числовых компонент, но среди них semver несёт больше всего полезной информации.
     
     
  • 4.61, Аноним (33), 18:18, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > как версионировать свой код будут именно кодеры, точно не ты

    Нет. Организационные решения внутри проекта — моя прямая должностная обязанность.

    > жизнеспособны любые монотонно растущие версии состоящие из числовых компонент

    Да.

    > но среди них semver несёт больше всего полезной информации

    Нет. Как не глядя в ченджлог понять какая версия вышла раньше: 1.3.79 или 2.0.12?

     
     
  • 5.67, Аноним (55), 19:06, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет. Организационные решения внутри проекта — моя прямая должностная обязанность.

    Принимать организационные решения никогда не возьмут человека, не понимающего банальных и фундаментальных концепций.

    > Нет. Как не глядя в ченджлог понять какая версия вышла раньше: 1.3.79 или 2.0.12?

    Это и глядя в changelog не понять, потому что changelog разные для 1 и 2 веток. А так, очевидно что сравнивать по времени выхода релизы из разных веток не имеет никакого смысла, и такая задача может возникнуть только ввиду некомпетентности.

     
     
  • 6.70, Аноним (33), 20:08, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Стало быть мне неимоверно повезло надурить и HR, и четыре уровня технических инт... большой текст свёрнут, показать
     
     
  • 7.77, Аноним (77), 02:08, 24/06/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.56, Аноним (55), 14:10, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    С-Самонадеянность и Н-Некомпетентность. Сходу ограничить частоту релизов и исключить возможность багфикс релизов.
     

  • 1.9, Drew Devault (?), 12:31, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ваще топ язык! Автор красава!
     
     
  • 2.11, D. DeVault (?), 13:11, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Полностью согласен с вами, коллега!
     
  • 2.28, Аноним (28), 19:17, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Автор, перелогинься!
     
     
  • 3.44, D.D.Vault (?), 08:48, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что вы, я никогда под такими учётками никуда не хожу. Это воссторженные фанаты мимикрируют
     
  • 3.54, Draw in past simple (?), 13:01, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ето не я!
     

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

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

     
  • 1.23, Аноним (23), 16:42, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Увы, очередной недоди-перепитон. Каких-то сильных сторон у языка нет.
    Проект существует скорее благодаря nih, нежели из реальной нужды.
     
  • 1.25, Аноним (25), 18:52, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если будет drop() из Rust и включены в стандартную библиотеку списки, словари и деревья, то вполне замена С.
     
     
  • 2.43, IMBird (ok), 07:42, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А потом всё равно каждый пишет свои коллекции и делает свои аллокаторы, потому что всё не то и всё не так.
     
     
  • 3.66, Аноним (55), 19:01, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто каждый Проекты на ЯВУ со своими реализациями коллекций можно по пальцам п... большой текст свёрнут, показать
     

  • 1.26, Аноним (26), 19:13, 22/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    а тут хоть строки нормальные есть?
     
     
  • 2.29, Аноним (28), 19:25, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    какие считаются нормальынми?
     
     
  • 3.32, Аноним (31), 19:34, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С ИИ внутри
     
  • 2.36, Аноним (36), 20:47, 22/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно есть. В ассемблере строки это просто байты, поэтому и тут, и в Си есть нормальные строки.
     
     
  • 3.40, Аноним (25), 01:52, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там много вариантов строк бывает. Черт его знает что он там нормальным считает. Может вариант с длинной и нулевым символом, а может UTF-16 у всех разное ...
     
  • 3.62, Аноним (33), 18:22, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > строки это просто байты

    А текст — это просто буквы.

     

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

    Но это



    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}!");
    }



     
     
  • 2.41, Аноним (37), 06:11, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен. У раста здесь синтаксис понятнее, даже для того кто на нем не пишет. А по верхнему коду есть вопросы, например нафига тут export? Из кода совсем не ясна логика программы на этом самом Харе.
     
  • 2.71, Нет ты (-), 20:22, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >unwrap_or_default

    Даже в таком коротком коде не обошлось без приседаний перед идолом безопасности, завернутых во вспомогательную функцию.

    Походу Руст это язык тревожных невротиков с гиперкомпенсацией контроля, лол.

     
     
  • 3.72, Аноним (72), 23:29, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>unwrap_or_default
    > Даже в таком коротком коде не обошлось без приседаний перед идолом безопасности, завернутых во вспомогательную функцию.

    ЧСХ, эта "вспомогательная функция" автоматом есть у всего, возвращающего результат-или-ошибку Result<T, E>
    как впрочем и unwrap_or(some_custom_default_value). Не давая, с одной стороны, "забивать" на ошибки -- и не разводя простыни "if err!=nil" на любой чих, с другой.

    > Походу Руст это язык тревожных невротиков с гиперкомпенсацией контроля, лол.

    Эт да, нет бы просто и привычно сегфолтнуть, если такой переменной окружения нет ...

     
  • 3.73, Аноним (55), 23:57, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не понял, тебе не нравится что результат, который объективно опциональный, нельзя использовать не проверив на наличие?
     
  • 2.85, penetrator (?), 20:38, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    все Hare отработали лавэ ))
     

  • 1.46, Аноним (-), 09:46, 23/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Для разработки графических приложений развивается инструментарий hare-wayland

    Правда, вот в wayland ни текст не закодить, ни ресурсы переиспользовать на сервере, в отличие от годной к продакшену подсистемы графики - сверху обязательно будет тулкит.

     
  • 1.47, Ося Бендер (?), 10:07, 23/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Память нужно самому освобождать, не кроссплатформенный, не ...
    Не нужон
     
     
  • 2.49, Аноним (37), 10:31, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    По сути, сейчас есть два языка, два брата, вечно дерущихся: Си и Раст - кому нужна максимальная производительность и кто готов сам! управлять памятью, выбирают Си. Тем, кто готов пожертвовать парой процентов производительности взамен того, чтоб не парится о памяти вообще - выбирают Раст.
    О плюсах вообще забудьте - ООП это ошибка, а сам язык настолько перегружен ненужностями, что там те же минус пара процентов производительности, и те же приколы с памятью - так что лучше выбрать Раст.
     
     
  • 3.60, Аноним (-), 17:55, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Си быстро копилируется в двоичный код. Раст - является фронтендом компилятора LLVM. Сам LLVM громоздкий и под его капотом идут поэтапные преобразования кода. Си не брат Расту.
     
     
  • 4.64, Аноним (55), 18:32, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Си быстро копилируется в двоичный код. Раст - является фронтендом компилятора LLVM. Сам LLVM громоздкий и под его капотом идут поэтапные преобразования кода. Си не брат Расту.

    Какая чушь. C через clang компилируется тем же LLVM'ом. Можно gcc, но это не сильно быстрее. При этом gcc с недавних пор может и rust.

     
     
  • 5.68, Аноним (72), 19:26, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >  Можно gcc, но это не сильно быстрее.

    Причем там, унутрях gcc, все те же поэтапные преобразования кода (всякие GIMPLE, SSA, RTL и прочие IR).
    А вот результаты "быстро компилирующих" компиляторов (я так понимаю, pcc, tcc и возможно scc) почему-то нигде особо не светятся.

     
     
  • 6.78, Аноним (-), 06:04, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Когда ты компилируешь сишный код в GCC, происходит 3 гениальных и простых вещи.

    1. Содержимое заголовочного файла помещается в исходный код.
    2. Исходный код преобразуется в ассемблерние листинги в синтаксисе AT&T.
    3. Ассемблерные листинги компилируются в двоичный код.
    Если будет статические связывание, то исходники библиотек помещаются в стадии №1.

    Clang является частью LLVM, вот там-то да, происходят эти непонятные наркоманские "GIMPLE, SSA, RTL и прочие IR".

    Гениальность Си в его простоте, а Rust как мы знаем очень сложен. Так что не равняйте эти обе языка.

     
     
  • 7.82, Аноним (36), 15:32, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Где-то между 1 и 2 забыл примерно 5 подпунктов: парсинг, препроцессор, проверка синтаксиса, выстраивание AST, и много чего еще.
     
     
  • 8.83, Аноним (-), 18:58, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Всё это уже входит в первый пункт, как нечто разумеешееся Парсинг и проверка си... текст свёрнут, показать
     
  • 7.84, Аноним (72), 20:09, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    CODE echo int foo int bar return bar 2 124 gcc -O1 -fdump-tree-ssa s... большой текст свёрнут, показать
     
  • 3.65, Аноним (55), 18:44, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Си ни с кем не дерётся, его уделом осталось лютое легаси Ну и rust не медленнее... большой текст свёрнут, показать
     
  • 3.74, Аноним (74), 00:11, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сам ты ошибка. Выбираем ООП.
     

  • 1.48, Аноним (48), 10:30, 23/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    V lang лучше
     
  • 1.51, Аноним (51), 11:20, 23/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Местечковый язык, который нарочито избегает проприетарные ОС. Идеологически это можно хвалить и поддерживать. Но на практике такой язык не взлетит и останется любительской поделкой. Даже dlang и nim и то больше пользы приносят. Первый так вообще в проде используется кое-где в Европе.
     
  • 1.53, Аноним (53), 12:04, 23/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Пусть вернут примеры на русском языке, тогда, может, посмотрим. Нет.
     
     
  • 2.63, Аноним (33), 18:24, 23/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем, если все без исключения русскоговорящие кодеры знают английский хотя бы со словарём?
     
     
  • 3.79, bdrbt (ok), 11:22, 24/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ключевой момент "вернуть". Просто их убрали явно желая показать, что русскоязычных кодеров там видеть не хотят.
     

  • 1.57, Аноним (55), 14:13, 23/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Язык одного человека, на него нет смысла даже смотреть уже только поэтому.
     
  • 1.80, Аноним (80), 13:59, 24/06/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

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



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

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