Drew DeWalt introducerade Hare systems programmeringsspråk

Drew DeVault, författaren till Sway-användarmiljön, e-postklienten Aerc och SourceHuts samarbetsutvecklingsplattform, introducerade programmeringsspråket Hare, som han och hans team har arbetat med de senaste två och ett halvt åren. Hare utses som ett systemprogrammeringsspråk som liknar C, men enklare än C. Bland de viktigaste designprinciperna för Hare är det uttalade fokuset på förenkling och fullständigt förtroende för programmerarens handlingar (gör exakt vad som anges, utan initiativ och implicit beteende), med närvaron av hjälpverktyg för att identifiera typiska fel och problem.

Исходные тексты компилятора и инструментария распространяются под лицензией GPLv3, а код стандартной библиотеки под лицензией MPL (Mozilla Public License). В первом публичном выпуске заявлена поддержка операционных систем Linux и FreeBSD на платформах x86_64, aarch64 и riscv64, а также самодостаточное использование для запуска поверх оборудования без операционной системы. В планах упоминается поддержка операционных систем NetBSD, OpenBSD, Illumos, Haiku и Plan 9 и платформ ppc64le, i686 и arm32.

Språket använder manuell minneshantering och ett statiskt typsystem, där varje variabel uttryckligen måste tilldelas en specifik typ. För att köra programmet bifogas en minsta körtid. Språket är optimerat för att lösa problem på låg nivå som att utveckla operativsystem, kompilatorer, nätverksapplikationer och systemverktyg som kräver maximal prestanda och full exekveringskontroll.

Ett standardbibliotek med funktioner har förberetts för utvecklare, vilket ger tillgång till operativsystemets grundläggande gränssnitt, standardalgoritmer och implementeringar av protokoll och format. Biblioteket täcker områden som input/output, filmanipulation, reguljära uttryck, kryptering, nätverk, tid- och datumoperationer, tillgång till vanliga Unix-primitiver (som poll, fnmatch och glob), parsning och typkontroll. Bindningar för åtkomst av OpenGL-, SDL2- och libui-funktioner tillhandahålls separat.

В качестве примеров проектов, написанных на языке Hare, упоминаются микроядро Helios, менеджер паролей Himitsu, система трассировки лучей raytracing, программа для шифрования box, bittorrent-демон btqd, scheduled (аналог системы cron), toothbrush (клиент и server для протокола finger). Из планов на будущее отмечается стабилизация спецификации языка и состава стандартной библиотеки, реализация поддержки недостающих платформ и архитектур, добавление библиотечных функций для поддержки TLS 1.2 и 1.3.

Exempelkod i Hare: använd crypto::sha256; använd kodning::hex; använd fmt; använd hash; useio; använd os; exportera fn main() void = { const hash = sha256::sha256(); const fil = os::open("main.ha"!); defer io::close(fil); io::copy(&hash, fil)!; låt summa: [sha256::STORLEK]u8 = [0...]; hash::sum(&hash, summa); hex::encode(os::stdout, summa)!; fmt::println(); const greetings = [ "Hej, värld!", "¡Hola Mundo!", "Γειά σου Κόσμε!", "Hej, värld!", "こんにちは世界!", ]; för (låt i = 0z; i < len(hälsningar); i += 1) { fmt::println(hälsningar[i])!; }; låt x: *int = alloc(42); fmt::printfln(" x: {}", x); fmt::printfln("*x: {}", *x)!; fri(x); const file = os::open(os::args[1])!; defer io::close(fil)!; låt buffert: *[65535]u8 = alloc([0...]); defer free(buffert); const n = io::read(fil, buffert)! som storlek; io::write(os::stdout, buffert[..n])!; }; fn sort(items: []int) void = { ... }; @test fn sort() void = { let items = [5, 4, 3, 2, 1]; sortera(objekt); för (låt i = 1z; i < len(objekt); i += 1) { assert(artiklar[i - 1] <= objekt[i], “listan är osorterad”); }; };

Källa: opennet.ru

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster