Drew DeVault har presentert programmeringsspråket Hare

Drew DeVault, forfattar av brukarmiljøet Sway, e-postklienten Aerc og plattformen for samarbeidande utvikling SourceHut, har introdusert programmeringsspråket Hare, som han har arbeidd med saman med sitt team i dei siste to og eit halvt åra. Hare blir presentert som et systemprogrammeringsspråk nært beslektet med C, men enklare enn C. Blant dei viktigaste prinsippa for design av Hare er fokuset på forenkling og full tillit til handlingar frå utviklaren (å gjøre nøyaktig det som er spesifisert, utan fridom til å handle sjølvstendig og utan implisitte handlingar), medan det finst hjelpeverktøy for å identifisere typiske feil og problem.

Kildekode for kompilatoren og verktøy sett er distribuert under GPLv3-lisensen, medan koden til standardbiblioteket er under MPL (Mozilla Public License). I den første offentlege lanseringa er det annonsert støtte for operativsystema Linux og FreeBSD på plattformar som x86_64, aarch64 og riscv64, samt sjølvforsynt bruk for å køyre over maskinvare utan operativsystem. Det er planlagt støtte for operativsystema NetBSD, OpenBSD, Illumos, Haiku og Plan 9 og plattformene ppc64le, i686 og arm32.

Språket bruker manuell minnehåndtering og et statisk typesystem, der kvar variabel må tildelast en bestemt type eksplisitt. For å køyre applikasjonen blir det knytt ein minimal runtime. Språket er optimalisert for å løyse lågnivåoppgåver, som utvikling av operativsystem, kompilatorar, nettapplikasjonar og systemverktøy, der det krevst maksimalt ytelse og full kontroll over utføring.

For utviklarar er det utarbeidd et standard bibliotek av funksjonar som gir tilgang til grunnleggjande grensesnitt i operativsystemet, typiske algoritmar og implementasjonar av protokollar og format. Biblioteket dekker områder som inn-/utdata, filhandtering, regulære uttrykk, kryptering, nettverksinteraksjon, operationar med tid og dato, tilgang til typiske Unix-primitivar (som poll, fnmatch og glob), parsing og typekontroll. Det er òg tilgjengelege bindingar for å få tilgang til moglegheitene i OpenGL, SDL2 og libui.

Som exemplos de projetos escritos na linguagem Hare, mencionam-se o microkernel Helios, o gerenciador de senhas Himitsu, o sistema de rastreamento raytracing, o programa de criptografia box, o daemon bittorrent btqd, o scheduled (similar ao sistema cron), toothbrush (cliente e para o protocolo finger). server Nos planos futuros, destacam-se a estabilização da especificação da linguagem e da composição da biblioteca padrão, a implementação de suporte a plataformas e arquiteturas que faltam, e a adição de funções de biblioteca para suporte ao TLS 1.2 e 1.3.

Exemplo de código na linguagem 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»); }; };

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster