10.24.8 2------ 3- Added `Program::attach_netfilter_with_opts` for attaching to netfilter 4 hooks 5 6 70.24.5 8------ 9- Renamed `Program::get_id_by_fd` to `id_from_fd` 10 - Deprecated `Program::get_id_by_fd` 11- Renamed `Program::get_fd_by_id` to `fd_from_id` 12 - Deprecated `Program::get_fd_by_id` 13- Adjusted `Program::{attach_*, test_run}` methods to work on shared 14 receivers 15- Adjusted `PerfBufferBuilder` to work with `MapCore` objects 16 17 180.24.4 19------ 20- Added `Program::fd_from_pinned_path` method for restoring program descriptor 21 from a pinned path 22 23 240.24.0 25------ 26- Split `{Open,}{Map,Program}` into `{Open,}{Map,Program}` (for shared 27 access) and `{Open,}{Map,Program}Mut` (for exclusive access) 28- Added `AsRawLibbpf` impl for `OpenObject` and `ObjectBuilder` 29- Decoupled `Map` and `MapHandle` more and introduced `MapCore` trait 30 abstracting over common functionality 31- Adjusted `SkelBuilder::open` method to require mutable reference to 32 storage space for BPF object 33- Adjusted `{Open,}Object::from_ptr` constructor to be infallible 34- Added `{Open,}Object::maps{_mut,}` and `{Open,}Object::progs{_mut,}` 35 for BPF map and program iteration 36- Adjusted various APIs to return/use `OsStr` instead of `CStr` or `str` 37- Adjusted `{Open,}Program` to lazily retrieve name and section 38 - Changed `name` and `section` methods to return `&OsStr` and made 39 constructors infallible 40- Adjusted `OpenObject::name` to return `Option<&OsStr>` 41- Removed `Result` return type from 42 `OpenProgram::{set_log_level,set_autoload,set_flags}` 43- Added `Object::name` method 44- Added `Copy` and `Clone` impls for types inside `btf::types` module 45- Adjusted `OpenMap::set_inner_map_fd` to return `Result` 46- Adjusted `ProgramInput::context_in` field to be a mutable reference 47- Made inner `query::Tag` contents publicly accessible 48- Fixed potential memory leak in `RingBufferBuilder::build` 49- Removed `Display` implementation of various `enum` types 50 51 520.23.2 53------ 54- Fixed build failure on Android platforms 55 56 570.23.1 58------ 59- Added support for user ring buffers 60- Fixed handling of bloom filter type maps 61 - Added `Map::lookup_bloom_filter` for looking up elements in a bloom filter 62 63 640.23.0 65------ 66- Overhauled crate feature set: 67 - Removed `novendor` feature 68 - Added `vendored` feature to use vendored copies of all needed libraries 69- Added `Program::attach_ksyscall` for attaching to ksyscall handlers 70- Added `Program::test_run` as a way for test-running programs 71- Added `OpenMap::initial_value{,_mut}` for retrieving a map's initial value 72- Added `replace` functionality to `Xdp` type 73- Added low-level `consume_raw` and `poll_raw` methods to `RingBuffer` type 74- Added `recursion_misses` attribute to `query::ProgramInfo` type 75- Added `AsRawLibbpf` impl for `OpenProgram` 76- Fixed incorrect inference of `btf::types::MemberAttr::Bitfield` variant 77- Fixed examples not building on non-x86 architectures 78- Fixed potentially missing padding byte initialization on some target 79 architectures 80- Fixed compilation issues caused by mismatching function signatures in certain 81 cross-compilation contexts 82- Updated `libbpf-sys` dependency to `1.4.0` 83- Bumped minimum Rust version to `1.71` 84 85 860.22.1 87------ 88- Introduced `Xdp` type for working with XDP programs 89- Fixed handling of autocreate maps with `Object` type 90 91 920.22.0 93------ 94- Reworked `Error` type: 95 - Replaced `enum` with data variants with `struct` hiding internal structure 96 - Added support for chaining of errors 97 - Overhauled how errors are displayed 98- Overhauled `query::ProgramInfo` and `query::ProgInfoIter` to make them more 99 readily usable 100- Added `Btf::from_vmlinux` constructor and adjusted `Btf::from_path` to work 101 with both raw and ELF files 102- Reworked `ObjectBuilder`: 103 - Made `name` method fallible 104 - Adjusted `opts` to return a reference to `libbpf_sys::bpf_object_open_opts` 105 - Removed object name argument from `open_memory` constructor 106 - Added `pin_root_path` setter 107- Added `AsRawLibbpf` trait as a unified way to retrieve `libbpf` equivalents 108 for `libbpf-rs` objects 109- Added `Map::update_batch` method 110- Implemented `Send` for `Link` 111- Bumped minimum Rust version to `1.65` 112- Updated `bitflags` dependency to `2.0` 113 114 1150.21.2 116------ 117- Enabled key iteration on `MapHandle` objects (formerly possible only on `Map` 118 objects) 119- Bumped minimum Rust version to `1.64` 120 121 1220.21.1 123------ 124- Fixed build failures on 32 bit x86 and aarch32 125 126 1270.21.0 128------ 129- Added `TcHook::get_handle` and `TcHook::get_priority` methods for restoring 130 TcHook object 131- Added `Program::get_fd_by_id` and `Program::get_id_by_fd` methods for restoring 132 bpf management data 133- Added `Map::is_pinned` and `Map::get_pin_path` methods for getting map pin status 134- Added `Program::attach_iter` for attaching of programs to an iterator 135- Added `Map::delete_batch` method for bulk deletion of elements 136- Added read/update/delete support for queue and stack `Map` types 137- Added a new `MapHandle` which provides most functionality previously found in 138 `Map` 139- Removed support for creating `Map` objects standalone (i.e. maps not created 140 by libbpf) 141- Removed various `<object-type>::fd()` methods in favor of 142 `<object-type>::as_fd()` 143- Improved `btf_type_match!` macro, adding support for most of Rust's `match` 144 capabilities 145- Added `skel` module exposing skeleton related traits 146- Fixed issue where instances of `Map` created or opened without going through 147 `Object` would leak file descriptors 148- Fixed potential Uprobe attachment failures on optimized builds caused by 149 improper `libbpf_sys::bpf_object_open_opts` object initialization 150- Adjusted various methods to work with `BorrowedFd` instead of raw file 151 descriptors 152- Made `RingBufferBuilder::add` enforce that `self` cannot outlive the maps 153 passed into it 154- Adjusted `Error::System` variant textual representation to include `errno` 155 string 156 157 1580.20.1 159------ 160- Added bindings for BTF via newly introduced `btf` module 161- Added `Map` constructors from pinned paths and from map id 162- Added `Map::as_libbpf_bpf_map_ptr` and `Object::as_libbpf_bpf_object_ptr` 163 accessors 164- Added `MapInfo` type as a convenience wrapper around `bpf_map_info` 165 - Added `Map::info` to `Map` to make it easier to derive `MapInfo` from a 166 `Map` instance 167- Added `set_log_level`, `log_level`, and `autoload` methods to `OpenProgram` 168- Removed deprecated `Link::get_fd` method 169- Bumped minimum Rust version to `1.63` 170 171 1720.20.0 173------ 174- Added support for USDT probes 175- Added BPF linker support with new `Linker` type 176- Added `Program::attach_uprobe_with_opts` for attaching Uprobes with additional 177 options 178- Added `tproxy` example 179- Added option to `RingBuffer::poll` to block indefinitely 180- Added support for querying BPF program type using `OpenProgram::prog_type` 181- Added support for retrieving a BPF program's instructions using 182 `OpenProgram::insns` & `Program::insns` 183- Added `MapType::is_supported`, `ProgramType::is_supported`, and 184 `ProgramType::is_helper_supported` methods 185- Added `PerfBuffer::as_libbpf_perf_buffer_ptr` to access underlying 186 `libbpf-sys` object 187- Adjusted various `Map` methods to work on shared receivers 188- Fixed `Link::open` constructor to be a static method 189- Fixed unsoundness in skeleton logic caused by aliased `Box` contents 190- Implemented `Send` for `PerfBuffer` and `RingBuffer` 191- Made more types implement `Clone` and `Debug` 192- Run leak sanitizer in CI 193- Updated various dependencies 194 195 1960.19.1 197------ 198- Initial documented release 199