Drew DeVault tutvustas süsteemi programmeerimiskeelt Hare

Drew DeVault, Sway kasutajakeskkonna, Aerc e-posti kliendi ja koostöölise arenduse platvormi SourceHut autor, tutvustas programmeerimiskeelt Hare, mille kallal ta koos oma meeskonnaga on töötanud viimased kaks ja pool aastat. Hare esitleb end kui süsteemi programmeerimiskeelt, mis on sarnane C-keelele, kuid lihtsam kui C. Hare disaini peamisteks põhimõteteks on lihtsustamise ja programmeerija tegevuste täieliku usaldamise suundumus (teha täpselt seda, mis on välja öeldud, ilma iseäraliketa ja peidetud käitumiseta), samas pakkudes abivahendeid harjumuspäraste vigade ja probleemide tuvastamiseks.

Komplektori ja tööriistade allikakoode levitatakse GPLv3 litsentsi alusel, samas kui standardraamatukogu kood on MPL (Mozilla Public License) litsentsi all. Esimeses avalikus versioonis on kuulutatud toetust Linuxi ja FreeBSD operatsioonisüsteemidele x86_64, aarch64 ja riscv64 platvormidel, samuti iseseisvat kasutust seadme otse käitamiseks ilma operatsioonisüsteemita. Tuleviku plaanides mainitakse toetust NetBSD, OpenBSD, Illumos, Haiku ja Plan 9 operatsioonisüsteemidele ning ppc64le, i686 ja arm32 platvormidele.

Keeles rakendatakse käsitsi mälu haldamist ja staatilist tüübisüsteemi, kus igale muutujale peab olema selgesõnaliselt määratud kindel tüüp. Rakenduse täitmiseks lisatakse minimaalne runtime. Keel on optimeeritud madalatasemeliste ülesannete lahendamiseks, näiteks operatsioonisüsteemide, kompilatsioonide, võrgurakenduste ja süsteemi utiliitide arendamiseks, kus on vajalik maksimaalne jõudlus ja täielik kontroll täitmise üle.

Arendajatele on ette valmistatud funktsioonide standardraamatukogu, mis annab juurdepääsu põhioskuste liidesele, tüüpilistele algoritmidele ning protokollide ja formaatide rakendustele. Raamatukogu katab sellised valdkonnad nagu sisend/väljund, failidega töötamine, regulaaravaldised, krüpteerimine, võrguühendus, ajaga ja kuupäevadega seotud toimingud, juurdepääs tüüpilistele Unix-primitividele (nt poll, fnmatch ja glob), parsimine ja tüüpide kontroll. Eraldi on saadaval sidemed OpenGL, SDL2 ja libui võimaluste kasutamiseks.

Hare keeles loodud projektide näidetena mainitakse mikrokerne Helios, paroolihaldurit Himitsu, raytracing süsteemi, salakompleksi programmi box, bittorrent demonit btqd, scheduled (sarnane cron süsteemile), toothbrush (kliendi ja protokolli jaoks finger). server Tulevikuplaane silmas pidades mainitakse keele spetsifikatsiooni stabiliseerimist ja standardteegite koosseisu, toetuse rakendamist puuduvatele platvormidele ja arhitektuuridele, samuti teegifunktsioonide lisamist TLS 1.2 ja 1.3 toetamiseks.

Koodinäide keeles 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 = [ «Tere, maailm!», «¡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], «loend on järjestatud»); }; };

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster