26 мая 2026, 14:47
Представлен публике язык программирования для разработки eBPF-программ
Представлен язык программирования KernelScript 0.1. Он представляет собой экспериментальный типобезопасный DSL для написания кода eBPF, пользовательского пространства и пространства ядра из одной кодовой базы.
KernelScript 0.1 теперь доступен в качестве первого публичного релиза нового языка программирования с открытым исходным кодом для разработки ядра Linux, ориентированного на eBPF, опубликованного под лицензией Apache 2.0. Вместо того чтобы вручную писать программы eBPF на C, загрузчики пользовательского пространства и модули ядра, KernelScript генерирует нужный код на C, программы пользовательского пространства, Make-файлы и интеграцию модулей ядра из одного исходного файла.
Он предназначен для разработчиков, работающих с eBPF. Это технология ядра Linux, которая позволяет небольшим проверенным программам функционировать в контексте ядра без его модификации. Хотя eBPF широко используется для работы с сетями, трассировки, мониторинга, безопасности и анализа производительности, его разработка обычно требует глубоких знаний ограничений верификатора, вспомогательных функций BPF, карт, загрузки программ и координации пользовательского пространства на основе libbpf.
KernelScript решает эту проблему с помощью высокоуровневого синтаксиса, адаптированного для рабочих процессов eBPF. Он поддерживает основные типы программ eBPF, в том числе XDP для обработки пакетов, TC для управления трафиком, зонды для трассировки функций ядра и программы событий perf для счётчиков производительности.
Кроме того, KernelScript обеспечивает встроенную поддержку карт eBPF, в том числе хэш-карты, массивы для каждого ЦП, карты LRU и закреплённые карты. Эти переменные доступны на уровне языка, что даёт возможность программам eBPF и коду пользовательского пространства совместно применять состояние без необходимости ручного создания шаблонного кода libbpf. KernelScript равным образом поддерживает расширенные возможности eBPF, в том числе автоматическую оркестровку хвостовых вызовов, прозрачную обработку dynptr, проверки жизненного цикла программы, поддержку struct_ops и встроенную интеграцию с kfunc.
Тем не менее этот релиз является экспериментальным. В репозитории KernelScript помечен как бета-версия программного обеспечения, и предупреждается, что синтаксис, api и функции могут изменяться без обратной совместимости. Сейчас разработчики не рекомендуют применять его в производственной среде.
Продолжить читать
