github GitoxideLabs/gitoxide gix-mailmap-v0.35.0
gix-mailmap v0.35.0

7 hours ago

Chore

  • modernize integration test layout

Bug Fixes

  • build snapshots without quadratic insertion

    Snapshot::from_bytes(), new() and merge() kept email and name vectors
    sorted by inserting each mapping into place. Collect mappings and use stable
    sorting followed by consolidation instead, retaining binary-search lookup
    and input-order precedence. Compact the vectors after removing duplicates.
    This addresses GHSA-pmpw-wwcm-r8rc in both email and per-name construction.

    Comparison with Git also exposed two correctness problems. Email-only
    updates must preserve any previously mapped field they do not provide,
    whereas name-and-email updates replace the entire mapping. ASCII case
    folding must apply to every byte regardless of UTF-8 validity, so equivalent
    keys compare consistently with other keys. Replace the encoding-dependent
    key types with byte strings and one shared comparator.

    The new Git comparisons failed before the fix and exercise every split
    between construction and a later merge. The large-input regression exceeded
    a 15-second local reproduction budget before the fix. In release builds,
    100,000 reverse-ordered entries fell from 8.13 s to 9.19 ms for email keys
    and from 5.74 s to 16.57 ms for name keys. The test records timings without
    imposing a machine-dependent deadline on CI.

    Git reference: mailmap.c (add_mapping()), string-list.c (add_entry()),
    and t/t4203-mailmap.sh at d38352cd43ab9745686d697872408bc3249a153f;
    behavioral comparisons use Git 2.54.0. Git also uses sorted insertion via
    string_list_insert() and MOVE_ARRAY(), rather than sorting once. Its
    reverse-ordered 100,000-entry cases took about 1.15 s locally, including
    process startup and file reading.

Changed (BREAKING)

  • raise MSRV to Rust 1.88

    The newly published dua-core 3.3 release used by linked-worktree removal
    requires Rust 1.88, so raise every workspace crate and the advertised badge
    together.

    Keep the MSRV checks buildable by selecting the latest sysinfo and rusqlite
    release lines that support Rust 1.88.

Commit Statistics

  • 9 commits contributed to the release over the course of 31 calendar days.
  • 32 days passed between releases.
  • 3 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Merge pull request #3019 from GitoxideLabs/mailmap-perf (591380a)
    • Modernize integration test layout (b9b3d42)
    • Build snapshots without quadratic insertion (4163b89)
    • Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
    • Merge pull request #2949 from GitoxideLabs/error-conversion-review (a095334)
    • Raise MSRV to Rust 1.88 (4b42e0c)
    • Merge pull request #2955 from GitoxideLabs/transport-url-encoding (7e35849)
    • Release gix-path v0.12.6, gix-error v0.3.2, gix-command v0.10.1, gix-transport v0.59.2 (888677a)
    • Merge pull request #2940 from GitoxideLabs/vendor-bisync (dda600d)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.