KernelScript 0.1.0

Tərəfindən təqdim edildi KernelScript — eBPF proqramlarını, istifadəçi yükləyicilərini və kernel uzantılarını inkişaf etdirmək üçün eksperimental proqramlaşdırma dili Linux tək kod bazasından. Layihə hazırlanır Çoxnüvəli Texnologiyalarsplit-kernel/multipernel arxitekturasını təşviq edən bir şirkət LinuxŞirkətin təsisçisi Cong Wang, KernelScript haqqında danışdı Linux Fondun Açıq Mənbə Zirvəsi; layihə kodu GitHub-da lisenziya altında dərc olunub Apache 2.0.


eBPF (Genişləndirilmiş Berkeley Paket Filtri) kiçik proqramların birbaşa nüvədə işləməsinə imkan verən bir texnologiyadır. Linux, koduna toxunmadan və ya sistem sabitliyindən ödün vermədən. eBPF, performans monitorinqindən təhlükəsizlik və şəbəkə optimallaşdırmasına qədər müxtəlif vəzifələrdə kömək edir. Məsələn, eBPF sistem zənglərini, şəbəkə trafikini və digər hadisələri real vaxt rejimində izləyə bilər. Bu, performans maneələrini müəyyən etməyə və sisteminizi optimallaşdırmağa imkan verir.Habr).

KernelScript-in arxasındakı ideya, eBPF-in hazırlanmasını C + libbpf kombinasiyasından istifadə etməkdən daha az ağrılı etmək və eyni zamanda bpftrace kimi izləmə prosesindən kənara çıxmaqdır. Tərtibatçılar dili inteqrasiya edən tip təhlükəsiz DSL kimi təsvir edirlər. eGMP, istifadəçi sahəsi və kernelspace inkişafı: tək mənbəli fayldan kompilyator eBPF proqramları, istifadəçi sahəsi hissəsi və kfunc vasitəsilə kernel modulları ilə inteqrasiya üçün kod yaratmalıdır.

KernelScript-in bildirilən imkanları:

  • Tək bir fayldan fərqli məqsədlər üçün kompilyasiya — @xdp, @tc, @helper və @kfunc kimi atributlara malik funksiyalar avtomatik olaraq düzgün hissəyə təyin olunur: XDP/TC proqramı, köməkçi funksiya, kernel funksiyası və ya adi istifadəçi sahəsi kodu.

  • Arxa zənglərin avtomatlaşdırılması — proqram massivini əl ilə qurmaq və bpf_tail_call() funksiyasını çağırmaq əvəzinə, geliştiricidən başqa bir funksiyaya adi bir çağırış yazması və aşağı səviyyəli eBPF kodunun generasiyasını kompilyatora buraxması istənir.

  • dynptr və eBPF xəritələri ilə sadələşdirilmiş iş — dil bpf_ringbuf_reserve_dynptr, bpf_dynptr_write və oxşar API-larla əl ilə yerinə yetirilən bəzi işləri gizlədir. eBPF xəritələri müxtəlif proqramlar tərəfindən əldə edilə bilən qlobal dəyişənlər kimi istifadə edilə bilər.

  • Proqram təminatının həyat dövrünə nəzarət — eBPF proqramları tipli dəyərlər kimi təmsil olunur ki, bu da müəlliflərə görə, kompilyasiya zamanı səhvlərin, məsələn, uğurlu yükləmədən əvvəl attach() funksiyasını yerinə yetirməyə cəhd kimi səhvlərin qarşısını almağa imkan verir.

  • kfunc dəstəyi — KernelScript, kernel məkanında icra edilən və eBPF proqramlarından çağırıla bilən @kfunc atributu ilə funksiyaları elan etməyə imkan verir; onlar üçün kernel modulunun və BTF qeydiyyatlarının avtomatik generasiyası vəd edilir.

  • Əsas eBPF proqram növləri üçün dəstək — README, aparat performans sayğacları ilə işləmək də daxil olmaqla, XDP, TC, probe proqramları və perf_event üçün nümunələr göstərir.

Müəlliflər xüsusilə KernelScript-in kernel-in əvəzedicisi olmadığını vurğulayırlar. Linux və ya yeni eBPF işləmə müddəti. Bu, daha çox kompilyator və tanış aşağı səviyyəli komponentləri yaratmalı olan yüksək səviyyəli bir dildir: eBPF kodu, istifadəçi sahəsi yükləyiciləri, Makefiles və zəruri hallarda kernel modulu.

Hələlik, layihə erkən bir təcrübə hesab edilməlidir. Repozitoriya KernelScript-in inkişaf mərhələsində olduğunu açıq şəkildə bildirir. beta, sintaksis və API geri uyğunluğu qorunmadan dəyişdirilə bilər və istehsalda istifadəsi hələlik tövsiyə edilmir.

Mənbə: linux.org.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster