| ▲ | hnlmorg 4 hours ago | |
> Why transpile, not generate BPF directly > gc, the Go compiler, has no LLVM-based BPF backend. Adding one is a multi-year compiler project. rustc is built on LLVM and that's why Aya works. So gobee emits C and reuses clang's BPF backend, which gives us mature codegen, BTF, and CO-RE relocations for free. I wonder if TinyGo (https://tinygo.org/) might be a better fit here: > TinyGo brings the Go programming language to embedded systems and to the modern web by creating a new compiler based on LLVM. I've not played with TinyGo much so would be interested to hear other peoples experiences. | ||
| ▲ | atgreen 2 hours ago | parent | next [-] | |
Here's another option.. I created an optimizing eBPF compiler in Common Lisp for a lisp-ish DSL. It's nice because you can compile and load your eBPF code all in-process in lisp (even from your REPL) without any external tooling. https://github.com/atgreen/Whistler | ||
| ▲ | mickael-kerjean 2 hours ago | parent | prev [-] | |
I did work on a plugin system for Filestash leveraging wasm. Plugins made with tinygo were 10x slower than the same code in rust or c compiled to wasm [1] https://github.com/mickael-kerjean/filestash/blob/master/ser... | ||