The OpenNET Project / Index page

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

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

13.02.2026 23:25 (MSK)

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

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

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

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

  • Добавлена конструкция цикла "for(...){...} else {...}" и возможность использования цикла как выражения для присвоения значения переменной "item = for(...){...}". Значение, которое будет присвоено переменной, может быть возвращено при прерывании цикла выражением "break значение" или через указание "yield значение_по_умолчанию" в прикреплённом к циклу блоке "else{...}", который вызывается, если цикл не был прерван через break.
    
       const item = for (let sample .. items) {
    	if (item.key == key) {
    		break item;
    	};
       } else {
            yield -1;
       };
    
  • Добавлена возможность использования присвоения значению "_" для игнорирования обработки ошибок (в случае возникновения ошибки не возникнет assertion).
    
       _ = os::remove("/some/file");
    
  • Добавлена возможность использования значения "_" для создания неименованных полей в структурах. Подобные поля могут применяться для добавочного заполнения.
    
       export type my_struct = struct @packed {
    	x: u32,		// offset: 0
    	_: u8,		// offset: 4
    	y: u64,		// offset: 5
       };
    
  • Реализована возможность явного оставления переменных и полей в структурах в неинициализированном состоянии, через присвоения им значения "@undefined". Ранее язык требовал чтобы все локальные и глобальные переменные были инициализированы во время создания. Оставление без инициализации может потребоваться, когда переменная должна быть инициализирована не во время объявления, а позднее, например, когда в функцию передаётся указатель на переменную, которую эта функция должна инициализировать.
    
       let x: my_object = @undefined;
    
  • Добавлена поддержка операционной системы Dragonfly BSD. Ранее поддерживались Linux, FreeBSD, NetBSD и OpenBSD.


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


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:34, 13/02/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.2, Аркагоблин (?), 23:44, 13/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Лицензия отвратительная для стандартных либов. Для них принято что-то пермиссивное ставить. И желательно без атрибуции, потому что никто нормальный не будет специально выискивать что там под какой лицензией и писать "Hello world написан на Hare. Hare под MPL и его написал Имя Автора". Люди воспринимают системные библиотеки как нечто базовое и фундаментальное, а не как произведение.
     
     
  • 2.12, Аноним (12), 01:26, 14/02/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну вот стандартная GLibc как-то не пермиссивная.
     

  • 1.4, Аноним (4), 00:05, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    харэ выпускать новые языки программирования
     
     
  • 2.18, Бертолетова соль (?), 06:02, 14/02/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так и не понял таки Рама или Кришна?
     

  • 1.9, Аноним (9), 01:00, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена возможность использования присвоения значению "_" для игнорирования обработки ошибок

    В то время как одни современные языки пытаются заставить кожаные мешки обрабатывать ошибки, другие облегчают задачу написания говнокода. Удачи автору языка.

     
     
  • 2.21, Смузихлеб забывший пароль (?), 07:17, 14/02/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Какими-то там ошибками отвлекать уважаемых программистов от написания ПО!
     

  • 1.13, Аноним (13), 01:37, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > ручное управление памятью

    А УБ? УБ есть? Если УБ нет, опеннетовские анонимы будут страдать! Надо в стандарте УБ прописать!!!11

     
     
  • 2.20, Аноним (20), 07:15, 14/02/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Усли UB в стандарте, то это уже не UB.
     

  • 1.16, Аноним (16), 03:22, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Написано ж что он должен быть проще сей, а он по описанию сложнее сей.
     
  • 1.17, Имя (?), 03:58, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    нет в списке godbolt.org
     
  • 1.22, Frestein (ok), 07:22, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Болгарки у него конечно классные
     
  • 1.23, Смузихлеб забывший пароль (?), 07:26, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  возможность явного оставления переменных и полей в структурах
    > в неинициализированном состоянии,
    > через присвоения им значения "@undefined"

    Это однако перебор. Т.е в доработки изначально заложено что теперь в переменных может оказаться любой мусор вместо предполагаемых иными товарищами нулей

     
     
  • 2.24, Аноним (24), 07:53, 14/02/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, абсурд для новых языков
     

  • 1.25, Аноним (25), 08:39, 14/02/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > может быть возвращено при прерывании цикла выражением "break значение" или через указание "yield значение_по_умолчанию" в прикреплённом к циклу блоке "else{...}", который вызывается, если цикл не был прерван через break.

    И это всё, чтобы поизображать ограничения из функциональных языков (обойтись одним присваиванием), где нельзя написать лучше, если императивщины не хватает? Только там было бы ноль ключевых слов для return'а, а здесь уже три.

    Непонятно, откуда ещё item.key взялся.

    Чем-то похоже на изобретание новых циклов в 70-е, когда придумывали ключевые слова, чтобы от if в середине блока избавиться.
    https://en.wikipedia.org/wiki/Control_flow#Middle_test

     

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



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

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