KernelScript 0.1.0

Predstavené KernelScript — experimentálny programovací jazyk na vývoj eBPF programov, používateľských bootloaderov a rozšírení jadra Linuxu z jedinej kódovej základne. Projekt rozvíja Multikernel Technologies, spoločnosť propagujúca architektúru split-kernel / multikernel pre Linux. O KernelScript informoval zakladateľ spoločnosti Cong Wang na Open Source Summit Linux Foundation; kód projektu je zverejnený na GitHub pod licenciou Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — je technológia, ktorá umožňuje spúšťať malé programy priamo v jadre Linuxu, bez zásahu do jeho kódu a bez rizika stability systému. eBPF pomáha riešiť množstvo úloh, od monitorovania výkonnosti po zabezpečenie a optimalizáciu siete. Napríklad, pomocou eBPF je možné sledovať systémové volania, sieťový traffic a ďalšie udalosti v reálnom čase. To umožňuje identifikovať úzke miesta vo výkonnosti a optimalizovať systém (Habr).

Myšlienka KernelScript — spraviť vývoj eBPF menej bolestným, než pri použití kombinácie C + libbpf, a pritom sa neobmedzovať len na trasovanie, ako bpftrace. Vývojári opisujú jazyk ako typovo bezpečný DSL, ktorý spája eBPF, vývoj používateľskej zóny a kernelspace: z jedného zdrojového súboru by mal kompilátor generovať kód pre eBPF programy, userspace časť a integráciu s kernel modulmi cez kfunc.

Vyhlásené možnosti KernelScript:

  • Kompilácia pre rôzne ciele z jedného súboru — funkcie s atribútmi ako @xdp, @tc, @helper a @kfunc sa automaticky priraďujú k potrebnej časti: XDP/TC programu, helper funkcii, kernel funkciám alebo bežnému userspace kódu.

  • Automatizácia tail calls — namiesto ručného nastavenia program array a volaní bpf_tail_call() ponúkajú vývojárom písať bežné volania inej funkcie, pričom generovanie nízkoúrovňového eBPF kódu ponechávajú kompilátorovi.

  • Zjednodušená práca s dynptr a eBPF maps — jazyk skrýva časť ručnej práce s bpf_ringbuf_reserve_dynptr, bpf_dynptr_write a podobnými API. eBPF mapy je možné používať ako globálne premenne, dostupné rôznym programom.

  • Kontrola životného cyklu programov — eBPF programy sú prezentované ako typované hodnoty, čo podľa autorov umožňuje na úrovni kompilácie zabraňovať chybám ako pokus o vykonanie attach() pred úspešným load().

  • Podpora kfunc — KernelScript umožňuje vyhlasovať funkcie s atribútom @kfunc, ktoré sa vykonávajú v priestore jadra a môžu byť volané z eBPF programov; pre ne je sľúbená automatická generácia modulov jadra a registrácií BTF.

  • Podpora základných typov eBPF programov — v README sú uvedené príklady pre XDP, TC, probe programy a perf_event, vrátane práce s hardvérovými počítadlami výkonu.

Autori osobitne zdôrazňujú, že KernelScript nie je náhradou za jadro Linuxu ani novým eBPF runtime. Je to skôr kompilátor a vysokolegúrový jazyk, ktorý by mal generovať bežné nízkolevelové komponenty: eBPF kód, userspace načítače, Makefile a, ak je to potrebné, modul jadra.

Projekt je zatiaľ potrebné vnímať ako skorý experiment. V repozitári je priamo uvedené, že KernelScript je v štádiu beta, syntax a API sa môžu meniť bez zachovania spätné kompatibility, a jeho používanie v produkcii zatiaľ nie je odporúčané.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster