Представлен язык программирования для разработки 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 и функции могут изменяться без обратной совместимости. На данный момент разработчики не рекомендуют использовать его в производственной среде.

ссылка на оригинал статьи https://habr.com/ru/articles/1039578/