0.25.0-beta.1
-------------
- Fixed skeleton generation when `enum64` types are present


0.25.0-beta.0
-------------
- 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


0.24.7
------
- Fixed handling of empty unions in BPF types


0.24.6
------
- Fixed incorrect Cargo environment variable query when used in build
  script context


0.24.4
------
- Adjusted skeleton generation code to work around `libbpf` forward
  compatibility issue when an old system `libbpf` is being used instead
  of the vendored copy


0.24.3
------
- Silenced possible `clippy` reported warnings in generated skeleton
  when BPF object file does not contain any maps


0.24.2
------
- Fixed panic on "open" of skeleton with `kconfig` map


0.24.1
------
- Fixed missing BPF object cleanup after skeleton destruction


0.24.0
------
- 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


0.23.3
------
- Fixed generation of `Default` impl in presence of large padding arrays


0.23.1
------
- Added "import injection" escape hatch to generated skeletons


0.23.0
------
- 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`


0.22.0
------
- 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`


0.21.2
------
- 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`


0.21.1
------
- Adjusted named padding members in generated types to have `pub` visibility


0.21.0
------
- 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


0.20.1
------
- 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`


0.20.0
------
- 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


0.19.1
------
- Initial documented release
