Support for BPF functions + tail calls was merged last week! https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=e411901c0b775a3ae7f3e2505f8d2d90ac696178

Even though that doesn't add a new BPF feature per se, it's a pretty big deal! #ebpf
1/4 👇
Up until now, you couldn't use tail calls and BPF functions in the same BPF program.
BPF functions are great because they improve performance by removing the need to inline all code.
2/4
And since v5.6, function-by-function verification (for global functions) can help drastically reduce load times.

But that's not all, global functions can be replaced at runtime, to reload only part of a BPF program and reduce load times even further.
3/4
Unfortunately, the same BPF projects that would benefit from increased performance and reduced load times are heavy users of tail calls. Those include Cilium and Katran.

Now, thanks to Maciej Fijalkowski, we can get all those new exciting features while keeping tail calls! 4/4
You can follow @pchaigno.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: