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

Дрю ДеВолт (Drew DeVault), автор на потребителската среда Sway, имейл клиента Aerc и платформата за съвместно разработване SourceHut, представи езика за програмиране Hare, по който той работи с екипа си през последните две години и половина. Hare се представя като език за системно програмиране, близък до езика C, но по-прост от него. Един от основните принципи на дизайна на 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, система за трасировка на лъчи, програма за криптиране 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], «списъкът не е сортиран»); }; };

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster