PackageTrack
Sign in Get early access

libbpf-cargo

Cargo plugin to build bpf programs

0.27.0 6.0M downloads/mo #4134 most downloaded on crates.io libbpf/libbpf-rs

What this package is like to depend on

Last release 24 days ago

30 Jul 2026

Release timing varies

gaps range from 2 weeks to 6 months

Some releases are documented

notes for 22 of 58 stable releases

Nothing withdrawn

no release was ever pulled

6 years old

62 releases · first in 2020

4 releases in the last 12 months

see the full history below

Release timeline

62 releases · Jun 2020 to Jul 2026
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 62
  1. 0.27.0 30 Jul 2026
    Release notes

    What's Changed

    libbpf-rs

    • Added KprobeMultiLinkInfo & UprobeMultiLinkInfo fields that required a second info call
    • Added key_size, value_size and more getters to OpenMap{,Mut}
    • Added specific IterLinkInfo fields for LinkTypeInfo::Iter
    • Added ErrorKind::TooBig variant, surfaced when the underlying operation fails with E2BIG (e.g., a map reaching max_entries)
    • Added MapHandle::from_pinned_path_with_file_flags for opening maps with custom file flags
    • Changed name members of query info types to be OsString instead of CString
    • Made various query::*Info types non-exhaustive

    New Contributors

    Full Changelog: v0.26.2...v0.27.0

    Open source →
  2. 0.26.2 08 Apr 2026
    Release notes

    What's Changed

    libbpf-rs

    • Added ProgramMut::assoc_struct_ops for associating non-struct_ops programs with struct_ops maps
    • Added IterOpts::None variant for attach_iter_with_opts()
    • Updated libbpf-sys dependency to 1.7.0

    libbpf-cargo

    • Included missing-docs lint suppression on generated skeleton

    Full Changelog: v0.26.1...v0.26.2

    Open source →
    Release notes
    • Included missing-docs lint suppression on generated skeleton
    • Updated libbpf-sys dependency to 1.7.0
    Open source →
  3. 0.26.1 26 Feb 2026
    Release notes

    What's Changed

    libbpf-rs

    • Added MapCore::query_fdinfo for querying map fdinfo
    • Added ProgramType::Netfilter variant
    • Adjusted Program::attach_uprobe_multi_with_opts to work with empty func_pattern

    libbpf-cargo

    • Added SkeletonBuilder::reference_obj for enabling generate skeleton to reference an object file instead of embedding it

    New Contributors

    Full Changelog: v0.26.0...v0.26.1

    Open source →
    Release notes
    • Added SkeletonBuilder::reference_obj for enabling generate skeleton to reference an object file instead of embedding it
    Open source →
  4. 0.26.0 04 Feb 2026
    Release notes

    What's Changed

    libbpf-rs

    • Added Link::info method for retrieving LinkInfo
    • Extended LinkTypeInfo::PerfEvent variant to contain newly added PerfEventLinkInfo object
    • Added Linker::add_buf method for adding in-memory ELF files to the set of objects to link
    • Added Program::attach_iter_with_opts for attaching to iterators with additional options
    • Added Program::attach_uprobe_multi & Program::attach_uprobe_multi_opts to enable attachments of multi uprobes at once
    • Added Program::{stdout,stderr} for accessing BPF stdout and stderr streams
    • Added OpenProgram::autoload getter
    • Added OpenMap::autocreate and Map::autocreate getters
    • Added MapCore::lookup_into for looking up values into preallocated buffers
    • Added verified_insns attribute to query::ProgramInfo type
    • Made query::ProgramInfo non-exhaustive
    • Added ObjectBuilder::btf_custom_path setter

    libbpf-cargo

    • Fixed Rust type generation for trailing bitfields in composite C types
    • Fixed handling of XxxSkelBuilder::obj_builder customizations when using open() constructor
    • Allowlisted libbpf-sys 1.6.3

    New Contributors

    Full Changelog: v0.26.0-beta.1...v0.26.0

    Open source →
    Release notes
    • Fixed Rust type generation for trailing bitfields in composite C types
    • Fixed handling of XxxSkelBuilder::obj_builder customizations when using open() constructor
    • Allowlisted libbpf-sys 1.6.3
    Open source →
  5. 0.26.0-beta.1 11 Aug 2025 pre-release
    Release notes

    What's Changed

    libbpf-cargo

    • Allowlisted libbpf-sys 1.6.1

    Full Changelog: v0.26.0-beta.0...v0.26.0-beta.1

    Open source →
    Release notes
    • Allowlisted libbpf-sys 1.6.1
    Open source →
  6. 0.26.0-beta.0 24 Jul 2025 pre-release
    Release notes

    What's Changed

    libbpf-rs

    • Added target_obj_id and target_btf_id fields to TracingLinkInfo to expose BTF information directly from kernel queries
    • Removed previously deprecated Program::get_id_by_fd method
    • Bumped minimum Rust version to 1.82

    libbpf-cargo

    • Moved BPF object content in generated skeletons into .bpf.objs section allowing easy extraction from the final binary
    • Bumped minimum Rust version to 1.82

    New Contributors

    Full Changelog: v0.25.0...v0.26.0-beta.0

    Open source →
    Release notes
    • Moved BPF object content in generated skeletons into .bpf.objs section allowing easy extraction from the final binary
    • Bumped minimum Rust version to 1.82
    Open source →
  7. 0.25.0 30 May 2025
    Release notes

    What's Changed

    libbpf-rs

    • Added kprobe multi support for attaching programs, with and without providing additional options
    • Added Program::attach_perf_event_with_opts for attaching to perf events with additional options
    • Allow to provide additional options when attaching programs to raw tracepoints
    • Allow to provide additional options when attaching programs to kprobes
    • Introduced TracepointCategory enum for specifying tracepoint categories
    • Added max_entries getter to various map types
    • Added OpenProgramMut::set_autoattach
    • Added additional ProgramAttachType and query::LinkTypeInfo variants
    • Adjusted UprobeOpts::func_name to be an Option
    • Implemented Sync for Link
    • Updated libbpf-sys dependency to 1.5.0
    • Added ProgramInput::repeat field to run a test multiple times
    • Added ProgramOutput::duration field which represent the average duration per repetition
    • Added RingBuffer::consume_raw_n method to consume up to N items

    libbpf-cargo

    • Adjusted all <xxx>_data BPF map skeleton members to be Options
    • Adjusted numbering of generated Rust structs for anonymous C types to be less fragile in the presence of type additions
    • Removed SkeletonBuilder::skip_clang_version_check and SkeletonBuilder::debug
    • Removed --skip-clang-version-checks option of libbpf build sub-command
    • Replaced --debug option of libbpf sub-command with -v / --verbose
      • Removed --quiet option of libbpf make sub-command
    • Replaced CompilationOutput type with tracing based solution using newly added util::CargoWarningFormatter
    • Fixed handling of multiple types of same name in BTF by enumerating them in the generated skeleton
    • Bumped minimum Rust version to 1.78

    New Contributors

    Full Changelog: v0.25.0-beta.1...v0.25.0

    Open source →
    Release notes
    • Adjusted all <xxx>_data BPF map skeleton members to be Options
    • Adjusted numbering of generated Rust structs for anonymous C types to be less fragile in the presence of type additions
    • Removed SkeletonBuilder::skip_clang_version_check and SkeletonBuilder::debug
    • Removed --skip-clang-version-checks option of libbpf build sub-command
    • Replaced --debug option of libbpf sub-command with -v / --verbose
      • Removed --quiet option of libbpf make sub-command
    • Replaced CompilationOutput type with tracing based solution using newly added util::CargoWarningFormatter
    • Fixed handling of multiple types of same name in BTF by enumerating them in the generated skeleton
    • Bumped minimum Rust version to 1.78
    Open source →
  8. 0.25.0-beta.1 17 Dec 2024 pre-release
    Release notes

    What's Changed

    libbpf-rs

    • Adjusted btf::types::EnumMember to store value as i64
    • Adjusted btf::types::Enum64Member to store value as i128

    libbpf-cargo

    • Fixed skeleton generation when enum64 types are present

    New Contributors

    Full Changelog: v0.25.0-beta.0...v0.25.0-beta.1

    Open source →
    Release notes
    • Fixed skeleton generation when enum64 types are present
    Open source →
  9. 0.25.0-beta.0 19 Nov 2024 pre-release
    Release notes

    What's Changed

    libbpf-rs

    • Added Map::lookup_batch and Map::lookup_and_delete_batch method

    libbpf-cargo

    • Represent C enums with custom types and const fields
      • Adjusted Rust correspondents in generated skeletons to no longer be wrapped in MaybeUninit
    • Adjusted SkeletonBuilder::build* methods to return CompilationOutput on success

    New Contributors

    Full Changelog: v0.24.8...v0.25.0-beta.0

    Open source →
    Release notes
    • Represent C enums with custom types and const fields
      • Adjusted Rust correspondents in generated skeletons to no longer be wrapped in MaybeUninit
    • Adjusted SkeletonBuilder::build* methods to return CompilationOutput on success
    Open source →
  10. 0.24.8 08 Nov 2024
    Release notes

    What's Changed

    libbpf-rs

    • Added Program::attach_netfilter_with_opts for attaching to netfilter hooks

    Full Changelog: v0.24.8...v0.24.8

    Open source →
  11. 0.24.7 04 Nov 2024
    Release notes
    • Fixed handling of empty unions in BPF types
    Open source →
  12. 0.24.6 11 Oct 2024
    Release notes
    • Fixed incorrect Cargo environment variable query when used in build script context
    Open source →
  13. 0.24.5 30 Sep 2024

    Nothing published for this version

  14. 0.24.4 27 Aug 2024
    Release notes
    • Adjusted skeleton generation code to work around libbpf forward compatibility issue when an old system libbpf is being used instead of the vendored copy
    Open source →
  15. 0.24.3 23 Aug 2024
    Release notes
    • Silenced possible clippy reported warnings in generated skeleton when BPF object file does not contain any maps
    Open source →
  16. 0.24.2 15 Aug 2024
    Release notes
    • Fixed panic on "open" of skeleton with kconfig map
    Open source →
  17. 0.24.1 08 Aug 2024
    Release notes
    • Fixed missing BPF object cleanup after skeleton destruction
    Open source →
  18. 0.24.0 07 Aug 2024
    Release notes
    • Reworked generated skeletons to contain publicly accessible maps and program members, no longer requiring method calls
    • Adjusted skeleton creation logic to generate Rust types for all types available in BPF
    • Renamed module for generated Rust types from <project>_types to just types
    • Renamed generated struct_ops type to StructOps and moved it out of types module
    • Fixed Rust code generation logic to properly create Default impl for arrays of pointers
    Open source →
  19. 0.23.3 11 Jun 2024
    Release notes
    • Fixed generation of Default impl in presence of large padding arrays
    Open source →
  20. 0.23.2 21 May 2024

    Nothing published for this version

  21. 0.23.1 08 May 2024
    Release notes
    • Added "import injection" escape hatch to generated skeletons
    Open source →
  22. 0.23.0 02 Apr 2024
    Release notes
    • Removed novendor feature in favor of having disableable default feature
    • Added support for struct_ops shadow objects for generated skeletons
    • Added support for handling custom data sections in generated skeletons
    • Adjusted SkeletonBuilder::clang_args to accept an iterator of arguments instead of a string
    • Added --clang-args argument to make and build sub-commands
    • Put all generated types into single <project>_types module as opposed to having multiple modules for various sections (.bss, .rodata, etc.)
    • Fixed potential naming issues by escaping reserved keywords used in identifiers
    • Fixed potential unsoundness issues in generated skeletons by wrapping "unsafe" types in MaybeUninit
    • Added pointer based ("raw") access to datasec type to generated skeletons
    • Added better handling for bitfields to code generation logic
    • Updated libbpf-sys dependency to 1.4.0
    • Bumped minimum Rust version to 1.71
    Open source →
  23. 0.22.1 04 Jan 2024

    Nothing published for this version

  24. 0.22.0 06 Dec 2023
    Release notes
    • Adjusted skeleton creation logic to generate shared and exclusive datasec accessor functions
    • Removed Error enum in favor of anyhow::Error
    • Bumped minimum Rust version to 1.65
    Open source →
  25. 0.21.2 31 Jul 2023
    Release notes
    • Added Default impl for generated struct types containing pointers
    • Fixed handling of function prototype type declaration inference in BTF and skeleton generation
    • Improved error reporting in build script usage
    • Bumped minimum Rust version to 1.64
    Open source →
  26. 0.21.1 06 Jul 2023
    Release notes
    • Adjusted named padding members in generated types to have pub visibility
    Open source →
  27. 0.21.0 05 Jul 2023
    Release notes
    • Adjusted skeleton generation code to ensure implementation of libbpf-rs's SkelBuilder, OpenSkel, and Skel traits
    • Improved error reporting on BPF C file compilation failure
    Open source →
  28. 0.20.1 12 Apr 2023
    Release notes
    • Switched over to using libbpf-rs's BTF support internally for skeleton generation
    • Fixed potential build failures on systems defaulting to stack protector usage by passing -fno-stack-protector to clang
    Open source →
  29. 0.20.0 15 Mar 2023
    Release notes
    • Fixed mismatch in size of generated types with respect to corresponding C types
    • Fixed generated skeleton potentially being unstable (changing each time)
    • Implemented Sync for generated skeletons
    • Made formatting using rustfmt optional
    • Updated various dependencies
    Open source →
  30. 0.13.1 13 Oct 2022

    Nothing published for this version

  31. 0.13.0 11 Oct 2022

    Nothing published for this version

  32. 0.12.0 15 Jul 2022

    Nothing published for this version

  33. 0.11.0 13 Apr 2022

    Nothing published for this version

  34. 0.10.0 10 Jan 2022

    Nothing published for this version

  35. 0.9.4 03 Dec 2021

    Nothing published for this version

  36. 0.9.3 10 Nov 2021

    Nothing published for this version

  37. 0.9.2 14 Oct 2021

    Nothing published for this version

  38. 0.9.1 16 Aug 2021

    Nothing published for this version

  39. 0.9.0 03 Aug 2021

    Nothing published for this version

  40. 0.8.1 22 Jul 2021

    Nothing published for this version

  41. 0.8.0 16 Jul 2021

    Nothing published for this version

  42. 0.7.2 25 Jun 2021

    Nothing published for this version

  43. 0.7.1 03 Jun 2021

    Nothing published for this version

  44. 0.7.0 30 May 2021

    Nothing published for this version

  45. 0.6.3 11 May 2021

    Nothing published for this version

  46. 0.6.2 11 May 2021

    Nothing published for this version

  47. 0.6.1 10 May 2021

    Nothing published for this version

  48. 0.6.0 20 Apr 2021

    Nothing published for this version

  49. 0.5.1 21 Mar 2021

    Nothing published for this version

  50. 0.5.0 05 Mar 2021

    Nothing published for this version

  51. 0.4.3 25 Jan 2021

    Nothing published for this version

  52. 0.4.2 06 Jan 2021

    Nothing published for this version

  53. 0.4.1 04 Jan 2021

    Nothing published for this version

  54. 0.4.0 30 Dec 2020

    Nothing published for this version

  55. 0.3.0 29 Dec 2020

    Nothing published for this version

  56. 0.2.1 28 Dec 2020

    Nothing published for this version

  57. 0.2.0 24 Dec 2020

    Nothing published for this version

  58. 0.1.4 23 Nov 2020

    Nothing published for this version

  59. 0.1.3 26 Aug 2020

    Nothing published for this version

  60. 0.1.2 10 Jun 2020

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive