Releases: foniod/redbpf
LLVM11, TC & Stack Trace support
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!
Bug fix for RedHat kernels
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
.
Improve on kernel version detection
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.
Support for kernels 5.7+
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
.
The return to SemVer
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
Documentation, new redbpf-tools collection
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:
- Improve reliability of loop unrolling
- Expose a high-level, typesafe Map/HashMap API
- Add
use redbpf_probes::xdp::prelude::*
as a best practice to start probes. Also works forkprobe
, andsocket_filter
to make imports easier - rename
redpbf_probes::xdp::Result
toredbpf_probes::xdp::XdpResult
- rename
redbpf::LoadError
toredbpf::Error
Stabilising APIs
This release changed quite a few APIs and fixed unsoundness issues.
- Add support for socket filters
- Improved binding management
- Add support for
panic!()
macro - Rework XDP accessors so we don't require a copy
- Fix ARM64 builds
- Fix unsoundness issues
Revert bad patches that break ingraind build
v0.9.9 Bump version number
Fix builds on newer kernels
v0.9.8 Bump version number
API improvements, Apache 2/MIT license
This 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.