KernelScript 0.1.0

Geïntroduceerd KernelScript — een experimentele programmeertaal voor het ontwikkelen van eBPF-programma's, gebruikersruimte-bootloaders en kernel-extensies vanuit één enkele codebasis. Het project ontwikkelt Multikernel Technologies, een bedrijf dat de split-kernel / multikernel architectuur voor Linux promoot. De oprichter van het bedrijf, Cong Wang, sprak over KernelScript op de Linux Foundation Open Source Summit; de code van het project is gepubliceerd op GitHub onder een licentie Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — is een technologie die het mogelijk maakt om kleine programma's rechtstreeks in de Linux-kernel uit te voeren, zonder de code aan te raken en zonder de stabiliteit van het systeem in gevaar te brengen. eBPF helpt bij het oplossen van verschillende problemen, van prestatiemonitoring tot beveiliging en netwerkoptimalisatie. Zo kan eBPF bijvoorbeeld systeemaanroepen, netwerkverkeer en andere gebeurtenissen in realtime volgen. Dit stelt ons in staat om knelpunten in de prestaties te identificeren en het systeem te optimaliseren (Habr).

Het idee achter KernelScript is om de ontwikkeling van eBPF minder pijnlijk te maken dan bij het gebruik van de combinatie C + libbpf, en om niet alleen te beperken tot tracing, zoals bpftrace. Ontwikkelaars beschrijven de taal als een type-veilige DSL die gebruikersruimte en kernel-ontwikkeling combineert: vanuit één bronbestand moet de compiler code genereren voor eBPF-programma's, de gebruikersruimte-onderdelen en integratie met kernelmodules via kfunc. eBPFDe aangekondigde mogelijkheden van KernelScript:

Compilatie voor verschillende doelen vanuit één bestand

  • — functies met attributen zoals @xdp, @tc, @helper en @kfunc worden automatisch toegewezen aan het juiste deel: XDP/TC-programma, helperfunctie, kernelfunctie of gewone gebruikersruimtecode. Automatisering van tail calls

  • — in plaats van handmatige configuratie van program array en aanroepen van bpf_tail_call() kunnen ontwikkelaars een gewone functieaanroep schrijven, terwijl de generatie van low-level eBPF-code aan de compiler wordt overgelaten. Vereenvoudigde interactie met dynptr en eBPF-maps

  • — de taal verbergt een deel van het handwerk met bpf_ringbuf_reserve_dynptr, bpf_dynptr_write en soortgelijke API's. eBPF-maps kunnen fungeren als globale variabelen die door verschillende programma's toegankelijk zijn. Beheer van de levenscyclus van programma's

  • — eBPF-programma's worden gepresenteerd als getypeerde waarden, wat volgens de auteurs ervoor zorgt dat fouten zoals het uitvoeren van attach() voor succesvolle load() tijdens het compileren worden voorkomen. Ondersteuning voor kfunc

  • Ondersteuning kfunc — KernelScript stelt in staat om functies met de @kfunc-attribuut te declareren, die worden uitgevoerd in de kernelruimte en kunnen worden aangeroepen vanuit eBPF-programma's; voor hen wordt automatische generatie van kernelmodules en BTF-registraties beloofd.

  • Ondersteuning voor de belangrijkste types eBPF-programma's — de README toont voorbeelden voor XDP, TC, probe-programma's en perf_event, inclusief werk met hardwareprestatietellers.

De auteurs benadrukken dat KernelScript geen vervanging is voor de Linux-kernel of een nieuwe eBPF-runtime. Het is eerder een compiler en een hogere programmeertaal, die moet genereren bekende laag-niveau componenten: eBPF-code, userspace-loaders, Makefile en, indien nodig, kernelmodule.

Momenteel moet het project worden beschouwd als een vroege experimentele fase. In de repository wordt duidelijk vermeld dat KernelScript zich in de fase bevindt beta, de syntaxis en API kunnen zonder behoud van achterwaartse compatibiliteit veranderen, en het gebruik in productie wordt momenteel niet aanbevolen.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster