Дрю ДеВолт представил язык системного программирования Hare

Автор Сообщение
news_bot ®

Стаж: 7 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
25-Апр-2022 18:30

Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway, почтового клиента Aerc и платформы совместной разработки SourceHut,
представил язык программирования Hare, над которым он вместе со своей командой работал последние два с половиной года. Hare преподносится как язык системного программирования, близкий к языку Си, но проще, чем Си. Из ключевых принципов проектирования Hare заявлена ориентация на упрощение и полное доверие к действиям программиста (выполнять именно то, что указано, без самодеятельности и неявного поведения), при наличии вспомогательных инструментов для выявления типовых ошибок и проблем.
Исходные тексты компилятора и инструментария распространяются под лицензией GPLv3, а код стандартной библиотеки под лицензией MPL (Mozilla Public License). В первом публичном выпуске заявлена поддержка операционных систем Linux и FreeBSD на платформах x86_64, aarch64 и riscv64, а также самодостаточное использование для запуска поверх оборудования без операционной системы. В планах упоминается поддержка операционных систем NetBSD, OpenBSD, Illumos, Haiku и Plan 9 и платформ ppc64le, i686 и arm32.
В языке применяется ручное управление памятью и статическая система типов, при которой каждой переменной явно должен быть присвоен определённый тип. Для выполнения приложения прикрепляется минимальный runtime. Язык оптимизирован для решения низкоуровневых задач, таких как разработка операционных систем, компиляторов, сетевых приложений и системных утилит, для которых требуется достижение максимальной производительности и полный контроль за выполнением.
Для разработчиков подготовлена стандартная библиотека функций, предоставляющая доступ к базовым интерфейсам операционной системы, типовые алгоритмы и реализации протоколов и форматов. Библиотека охватывает такие области как ввод/вывод, работа с файлами, регулярные выражения, шифрование, сетевое взаимодействие, операции со временем и датами, доступ к типовым Unix-примитивам (например, poll, fnmatch и glob), парсинг и проверка типов. Отдельно предоставляются привязки для доступа к возможностям OpenGL, SDL2 и libui.
В качестве примеров проектов, написанных на языке Hare, упоминаются микроядро Helios, менеджер паролей Himitsu, система трассировки лучей raytracing, программа для шифрования box, bittorrent-демон btqd, scheduled (аналог системы cron), toothbrush (клиент и сервер для протокола finger). Из планов на будущее отмечается стабилизация спецификации языка и состава стандартной библиотеки, реализация поддержки недостающих платформ и архитектур, добавление библиотечных функций для поддержки TLS 1.2 и 1.3.
Пример кода на языке Hare:
use crypto::sha256;
   use encoding::hex;
   use fmt;
   use hash;
   use io;
   use os;
   export fn main() void = {
  const hash = sha256::sha256();
  const file = os::open("main.ha")!;
  defer io::close(file);
  io::copy(&hash, file)!;
  let sum: [sha256::SIZE]u8 = [0...];
  hash::sum(&hash, sum);
  hex::encode(os::stdout, sum)!;
  fmt::println()!;
  const greetings = [
    "Hello, world!",
    "¡Hola Mundo!",
    "Γειά σου Κόσμε!",
    "Привет, мир!",
    "こんにちは世界!",
  ];
  for (let i = 0z; i < len(greetings); i += 1) {
    fmt::println(greetings[i])!;
  };
  let x: *int = alloc(42);
  fmt::printfln(" x: {}", x)!;
  fmt::printfln("*x: {}", *x)!;
  free(x);
  const file = os::open(os::args[1])!;
  defer io::close(file)!;
  let buffer: *[65535]u8 = alloc([0...]);
  defer free(buffer);
  const n = io::read(file, buffer)! as size;
  io::write(os::stdout, buffer[..n])!;
   };
   fn sort(items: []int) void = {
      ...
   };
   @test fn sort() void = {
  let items = [5, 4, 3, 2, 1];
  sort(items);
  for (let i = 1z; i < len(items); i += 1) {
    assert(items[i - 1] <= items[i], "list is unsorted");
  };
   };
[br][br]

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_hare
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 06-Май 12:19
Часовой пояс: UTC + 5