Chore
- modernize integration test layout
Bug Fixes
-
build snapshots without quadratic insertion
Snapshot::from_bytes(),new()andmerge()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()),
andt/t4203-mailmap.shatd38352cd43ab9745686d697872408bc3249a153f;
behavioral comparisons use Git 2.54.0. Git also uses sorted insertion via
string_list_insert()andMOVE_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-core3.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
sysinfoandrusqlite
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)