Hare 0.24.2: BSD, Linux и мощь C в одном флаконе

Hare 0.24.2: BSD, Linux и мощь C в одном флаконе

Новый релиз переопределяет системное программирование.

image

Дрю ДеВолт объявил о выпуске новой версии языка программирования 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::.

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

Искусственный интеллект уже умнее вас. Как не стать рабом машин?

Узнайте у нас!