Release notes for perf-event-open-sys

3.0.0

  • Based on Linux kernel headers packaged by Fedora as kernel-headers-5.18.4-200.fc36.

  • Fix build for Android, x86_64-unknown-linux-musl.

  • Remove redundant prefixes from bindings constants derived from enums in the Linux kernel headers.

    For example, the kernel headers have the definition:

    /*
     * attr.type
     */
    enum perf_type_id {
        PERF_TYPE_HARDWARE			= 0,
        PERF_TYPE_SOFTWARE			= 1,
        PERF_TYPE_TRACEPOINT		= 2,
        ...
    };
    

    This crate used to render the above as constants like this:

    pub const perf_type_id_PERF_TYPE_HARDWARE: perf_type_id = 0;
    pub const perf_type_id_PERF_TYPE_SOFTWARE: perf_type_id = 1;
    pub const perf_type_id_PERF_TYPE_TRACEPOINT: perf_type_id = 2;
    ...
    

    The names incorporate the names of both the C enum and its constants. But since the constants' names are already prefixed (necessary because C places enumeration constants in the ‘ordinary identifier’ namespace), this is redundant.

    In v3.0.0, these constants are rendered in Rust like this:

    pub const PERF_TYPE_HARDWARE: perf_type_id = 0;
    pub const PERF_TYPE_SOFTWARE: perf_type_id = 1;
    pub const PERF_TYPE_TRACEPOINT: perf_type_id = 2;
    

    Here's the full list of prefixes that were stripped, in case you want to sed your way through a conversion:

    bp_type_idx_
    perf_bpf_event_type_
    perf_branch_sample_type_
    perf_branch_sample_type_shift_
    perf_callchain_context_
    perf_event_ioc_flags_
    perf_event_ioctls_
    perf_event_read_format_
    perf_event_sample_format_
    perf_event_type_
    perf_hw_cache_id_
    perf_hw_cache_op_result_id_
    perf_hw_id_
    perf_record_ksymbol_type_
    perf_sample_regs_abi_
    perf_sw_ids_
    perf_type_id_