Rust library for building and running BPF/eBPF modules
1.2.0 is a significant release, with many improvements regarding build stability, and some new features!
Probably the most important feature is support for LLVM11 through libllvm
, which allows us to target and track Rust LLVM versions in a more flexible way, and actually support the latest stable compilers. There's also support for using RedBPF-based programs in TC, and BPF Stack Traces.
Contributors: @alessandrod @aquarhead @digikata @neallred @quininer @rsdy
Many thanks to everyone who contributed to this release!
This release includes a bug fix for a bad interaction between Red Hat kernel macros and cargo-bpf
's accessor generation logic.
The fix ensures that there's always at most one accessor generated based on macros.
In addition, RedBPF now uses the latest bindgen
version across all crates.
This release includes new packages for cargo-bpf
, bpf-sys
, and redbpf
.
This release contains a single patch that includes an improved way of detecting kernel version during build, making it also work on Debian.
Only bpf-sys
and cargo-bpf
1.1.1 have been published, other crates are unaffected.
This release updates the build scripts so RedBPF projects now compile on kernels 5.7 and newer.
In addition, a new kernel_version
cfg variable is available for probe code that allows conditional compilation for different versions.
Currently, kernel_version
will take up the major and minor versions of Linux (e.g "5.4", "5.7") or "5.7" for kernels newer than "5.7".
This allows customizing probe code based on features supported by the kernel and gracefully degrade capabilities.
This release includes new versions of cargo-bpf
, bpf-sys
, redbpf
, redbpf-macros
, and redbpf-probes
.
Re-tagging this release to include the version bump in redbpf-probes
and redbpf-macros
.
This has been a long time coming, and as of 1.0.0 onwards we commit to following semver rules in releases. This will make the lives of everyone easier, and finally allows us to build applications on stable APIs.
New release notes after 1.0 will also list the API changes, and generally be more diligent about the features that have arrived.
Compared to the latest 0.9 release, in 1.0 we cleaned up a few APIs, and brought uprobe support to RedBPF.
There's also an official website that hosts the documentation: https://ingraind.org
This release focused on improving the documentation around the project, and add better examples using RedBPF without ingraind
.
Another big addition is the redbpf_tools
collection of example programs that use RedBPF. See iotop
and knock
.
Additionally, all docs are now under https://ingraind.org/api.
Additional changes:
use redbpf_probes::xdp::prelude::*
as a best practice to start probes. Also works for kprobe
, and socket_filter
to make imports easierredpbf_probes::xdp::Result
to redbpf_probes::xdp::XdpResult
redbpf::LoadError
to redbpf::Error
This release changed quite a few APIs and fixed unsoundness issues.
panic!()
macroThis release changes the license to allow companies to adapt RedBPF more easily.
Other changes improve API improvements across the board, and added support for better Kprobe handling.