Дрю ДеВолт представил язык системного программирования Hare
Автор
Сообщение
news_bot ®
Стаж: 7 лет 2 месяца
Сообщений: 27286
Дрю ДеВолт (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
===========
Похожие новости
- Главная ссылка к новости (https://harelang.org/blog/2022...)
- OpenNews: Опубликована свободная книга про Wayland
- OpenNews: В платформе совместной разработки SourceHut появился хаб проектов
- OpenNews: Подготовлена реализация Git на Shell
- OpenNews: Выпуск пользовательского окружения Sway 1.0, использующего Wayland
- OpenNews: Представлен многооконный консольный почтовый клиент Aerc
Похожие новости:
- Релиз платформы для конфиденциального обмена сообщениями RetroShare 0.6.6
- Проект Tor опубликовал приложение для обмена файлами OnionShare 2.3
- [SharePoint, Microsoft Azure, Разработка для Office 365] Личный кабинет адаптации сотрудника на Microsoft Power Platform и Microsoft Teams
- [Работа с иконками, Интерфейсы, Дизайн, История IT] Забытые корни популярных иконок
- [Законодательство в IT, Финансы в IT, IT-компании] Трамп запретил в США Alipay, под бан попали WeChat Pay, QQWallet, Tencent QQ, SHAREit, Vmate, WPS Office и CamScanner
- [SharePoint, Разработка для Office 365] Применение искусственного интеллекта с Microsoft SharePoint Syntex
- [Разработка под Android, Хранилища данных] Обзор DataStore Library. Прощаемся с SharedPreference?
- [SharePoint, Разработка для Office 365] Организация цифрового рабочего места сотрудника с помощью Microsoft Project Moca
- [Amazon Web Services, Облачные сервисы] AWS Cloud Core Concepts
- [Open source, Софт] Open-source бандл
Теги для поиска: #_hare
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 06-Май 12:19
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 7 лет 2 месяца |
|
Дрю ДеВолт (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 =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 06-Май 12:19
Часовой пояс: UTC + 5