Cyflwynodd Drew DeVault, awdur amgylchedd defnyddiwr Sway, cleient e-bost Aerc, a llwyfan datblygu cydweithredol SourceHut, yr iaith raglennu Hare, y mae ef a'i dîm wedi bod yn gweithio arni ers dwy flynedd a hanner. Mae Hare yn cael ei chyffwrdd fel iaith rhaglennu systemau tebyg i C, ond yn symlach na C. Ymhlith egwyddorion dylunio allweddol Hare, mae'r ffocws a nodir ar symleiddio ac ymddiriedaeth lwyr yng ngweithredoedd y rhaglennydd (gwnewch yn union yr hyn a nodir, heb fenter ac ymddygiad ymhlyg), gyda phresenoldeb offer ategol ar gyfer nodi gwallau a phroblemau nodweddiadol.
Mae cod ffynhonnell y crynhoydd a'r gadwyn offer wedi'i drwyddedu o dan y GPLv3, ac mae cod safonol y llyfrgell wedi'i drwyddedu o dan y MPL (Trwydded Gyhoeddus Mozilla). Cyhoeddodd y datganiad cyhoeddus cyntaf gefnogaeth ar gyfer systemau gweithredu. Linux a FreeBSD ar lwyfannau x86_64, aarch64, a riscv64, yn ogystal â gweithrediad annibynnol ar gyfer gweithrediad noeth-metel. Mae'r cynlluniau'n cynnwys cefnogaeth ar gyfer systemau gweithredu NetBSD, OpenBSD, Illumos, Haiku, a Plan 9 a llwyfannau ppc64le, i686, ac arm32.
Mae'r iaith yn defnyddio rheolaeth cof â llaw a system math statig, lle mae'n rhaid rhoi math penodol i bob newidyn. I redeg y cais, mae isafswm amser rhedeg ynghlwm. Mae'r iaith wedi'i optimeiddio ar gyfer datrys problemau lefel isel megis datblygu systemau gweithredu, casglwyr, cymwysiadau rhwydwaith a chyfleustodau system sy'n gofyn am y perfformiad mwyaf posibl a rheolaeth lawn ar gyflawni.
Mae llyfrgell safonol o swyddogaethau wedi'i pharatoi ar gyfer datblygwyr, sy'n darparu mynediad i ryngwynebau sylfaenol y system weithredu, algorithmau safonol a gweithrediad protocolau a fformatau. Mae'r llyfrgell yn ymdrin â meysydd fel mewnbwn/allbwn, trin ffeiliau, mynegiadau rheolaidd, amgryptio, rhwydweithio, gweithrediadau amser a dyddiad, mynediad i briflythrennau Unix cyffredin (fel arolwg barn, fnmatch a glob), dosrannu a gwirio teip. Darperir rhwymiadau ar gyfer cyrchu galluoedd OpenGL, SDL2 a libui ar wahân.
Mae enghreifftiau o brosiectau a ysgrifennwyd yn iaith Hare yn cynnwys y microkernel Helios, y rheolwr cyfrineiriau Himitsu, y system olrhain pelydrau, y rhaglen amgryptio bocs, y daemon bittorrent btqd, scheduled (system debyg i cron), brws dannedd (cleient a gweinydd (ar gyfer y protocol bysedd). Mae cynlluniau ar gyfer y dyfodol yn cynnwys sefydlogi'r fanyleb iaith a'r llyfrgell safonol, gweithredu cefnogaeth ar gyfer llwyfannau a phensaernïaethau coll, ac ychwanegu swyddogaethau llyfrgell i gefnogi TLS 1.2 ac 1.3.
Cod enghreifftiol yn Hare: defnyddiwch crypto::sha256; defnyddio amgodio::hex; defnyddio fmt; defnyddio hash; defnyddio; defnyddio os; allforio fn main() gwag = {const hash = sha256::sha256(); const file = os::open("main.ha")!; gohirio io :: cau (ffeil); io::copi (&hash, ffeil);; gadewch swm: [sha256::SIZE]u8 = [0...]; hash::swm(&hash, swm); hecs:: amgodio(os::stdout, sum); fmt::println()!; cyfarchion const = [ “Helo, fyd!”, “¡Hola Mundo!”, “Γειά σου Κόσμε!”, “Helo, fyd!”, “こんにちは世界!”,]; ar gyfer (gadewch i = 0z; i < len(cyfarchion); i += 1) { fmt::println(cyfarchion[i])!; }; gadewch x: *int = alloc(42); fmt::printfln(" x: {}", x) !; fmt::printfln ("*x: {}", *x) !; rhydd(x); ffeil const = os::agored(os::args[1]) !; gohirio io::cau (ffeil)!; gadael byffer: *[65535]u8 = alloc([0...]); gohirio am ddim (byffer); const n = io:: darllen (ffeil, byffer)! fel maint; io:: ysgrifennu(os::stdout, byffer[..n])!; }; fn sort(eitemau: []int) gwagle = {... }; @test fn sort() gwag = { gadael i eitemau = [5, 4, 3, 2, 1]; didoli (eitemau); ar gyfer (gadewch i = 1z; i < len(eitemau); i += 1) { haeru (eitemau[i - 1] <= eitemau[i], “mae'r rhestr heb ei didoli”); }; };
Ffynhonnell: opennet.ru
