[ANNOUNCEMENT] libbpf v1.5.0 release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Libbpf v1.5.0 has been released ([0]).

It's been almost 7 months (!) since the last release, so we can say
that v1.5 is a nicely aged release by now. As you can see below from
the release notes, there aren't all that many new features and APIs in
libbpf, which I take as a good sign of libbpf's maturity. A big part
of v1.5 is actually addressing various bugs and usability
shortcomings, and generally rounding up the overall user experience.
All of this is important and these improvements are driven by various
real-world production use cases. See the detailed changelog for
yourself, below.

Thanks to everyone contributing fixes, features, code reviews, as well
as feature requests and bug reports!

## User space-side features and APIs
- libbpf can now open (but not load!) BPF objects of non-native
endianness, enabling cross-architecture support for BPF skeleton
generation and BPF object introspection;
- BPF skeleton will now auto-attach `SEC(".struct_ops")` maps as part
of `<skeleton>__attach()` call;
- BPF kprobe session programs support (`SEC("kprobe.session")`);
- allow specifying kernel module name for fentry/fexit BPF programs
(`SEC(fentry/module:function`);
- libbpf recognizes `LIBBPF_LOG_LEVEL` environment variable, which can
be used to set default log verboseness;
- BPF ringbuf APIs that limit maximum number of consumed records at a
time (`ring_buffer__consume_n()`, `ring__consume_n()`);
- distilled BTF support (`btf__distill_base()`, `btf__relocate()`);
- BPF link-based attachment of `BPF_PROG_TYPE_SOCKMAP` programs
(`bpf_program__attach_sockmap()`);
- `bpf_object__token_fd()` API to fetch BPF token FD of a BPF object, if any;

## BPF-side features and APIs
- fixes for fetching syscall arguments on arm64, s390x, risc-v architectures;
- better GCC-BPF source code compatibility;
- `__bpf_fastcall` support for a few BPF helpers;
- `__uptr` annotation definition added to `bpf/bpf_helpers.h` API header;

## Bug fixes
- fixes and improvements around handling missing and nulled out
`struct_ops` programs;
- fixed `mmap()`-ing logic for global data, fixing interop between
generic `bpf_object__open()` APIs and BPF subskeletons;
- BPF skeleton backwards compatibility handling fixes;
- handle LTO-produced `*.llvm.<hash>` symbols better;
- feature detection fixes in the presence of BPF token inside user namespace;
- older kernels have broken PID filtering logic for multi-uprobes,
libbpf now detects this and avoids the use of multi-uprobes for USDTs;
- fix accidental drop of `FD_CLOEXEC` flag during BPF map reuse;
- few BTF dumper formatting fixes;
- a few more small fixes all around.

  [0] https://github.com/libbpf/libbpf/releases/tag/v1.5.0
  [1] Full Changelog: https://github.com/libbpf/libbpf/compare/v1.4.0...v1.5.0

-- Andrii




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux