Whistler: Common Lisp REPL에서 실시간 eBPF 프로그래밍
Whistler는 Common Lisp 기반의 DSL로, eBPF 코드를 간결하게 작성하면서도 clang 수준 이상의 최적화된 eBPF 바이트코드를 생성하는 컴파일러입니다.
이 도구는 eBPF 바이트코드를 매크로 확장 시점에 컴파일하여, 실행 시에는 이미 완성된 바이트코드를 직접 커널에 로드하며, 디스크에 객체 파일을 남기지 않고도 REPL 환경에서 즉시 개발과 테스트가 가능합니다.
또한, 커널 구조체와 트레이스포인트를 런타임 커널 상태에서 직접 가져와 사용할 수 있고, BPF와 사용자 공간 양쪽에서 동일한 구조체 정의를 공유하여 데이터 파싱의 일관성과 편리함을 제공합니다.
Whistler의 로더 역시 순수 Common Lisp으로 작성되어 있어 C 의존성이 없으며, 다양한 언어(Go, Rust, Python 등)용 구조체 헤더를 자동 생성해 다중 언어 환경에서도 호환됩니다.
마지막으로, 루트 권한 없이도 필요한 권한만 부여하면 일반 사용자로 실행 가능해, 개발과 배포의 진입 장벽을 크게 낮춘 점이 실용적 가치로 꼽힙니다.