Releases: manic-systems/dix
Releases · manic-systems/dix
Better tests, more tests, working tests
What's Changed
- Nix: re-enable package checks, fix tests & ci by @faukah in #75
- build(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #76
- dix-diff: version: fix ordering transitivity by @faukah in #80
- version: derive
OrdforComponentRankby @amaanq in #81 - meta: tag v2.0.1 by @faukah in #79
New Contributors
Full Changelog: v2.0.0...v2.0.1
Dix 2.0: More info, more diff, more good!
Added
- Added the
dix-diffcrate for the pure package/version diff engine. This
crate contains the core diff model and algorithms, but does not depend on any
Nix-specific data sources or APIs. It is intended for users who want to
perform package/version diffs without needing to query the Nix store, and for
users who want to build on top of the diff engine with their own custom data
sources or APIs. - Added public diff event types for version-level changes:
VersionDiff,
VersionAmount, and theAmountChangedevent for count-only changes. - Added
PackageSnapshotanddiff_snapshotsfor callers that want to diff
package/version data without querying the Nix store. - Added root
dixre-exports for the main diff model types:DiffStatus,
Version,VersionAmount, andVersionDiff. - Added exact closure path statistics to reports. Human output now shows old
and new closure path counts plus exact added and removed store path counts,
and JSON output includes the same data in thepathsobject. - Added package size deltas to reports. Human output shows significant
per-package NAR size changes, and JSON diff entries include old, new, and
delta size fields in bytes.
Changed
- Changed the repository layout from a single Cargo package to a workspace.
Source installs now usecargo install --path crates/dix. - Changed the Rust diff model from separate
oldandnewversion lists to a
versionsevent list. - Changed diff statuses from
DiffStatus::Changed(Change::...)to flat variants
such asChanged,Mixed,Upgraded, andDowngraded. - Changed version counts to use
VersionAmountandVersionDiff::AmountChanged
instead of storing counts onVersion. - Changed version parsing and status classification to treat Git short or full
hash suffixes as unordered versions. These changes are now reported as
changed instead of arbitrary upgrades or downgrades. - Changed report querying from
DiffReport::query(...)to the
query_diff_report(...)free function. - Changed
DiffReportandPathStatsto expose read-only accessor methods
instead of public fields. - Changed JSON output. Diff entries now contain tagged
versionsevents and
has_omitted_versionsinstead ofold,new, andhas_common_versions,
and reports include exact closure path statistics inpaths.
Removed
- Removed the old
dix::diffanddix::versionmodule paths. - Removed
generate_diffs_from_paths(...)andmatch_version_lists(...)from
thedixpublic API. - Removed the public
DiffReport::between(...)constructor. Store-backed
reports should be built withquery_diff_report(...); pure package/version
diffs should usedix-diff. - Removed the
Changeenum. - Removed
Version.amount. - Removed direct serde serialization of the public diff model types.
Breaking Changes
cargo install --path .no longer works because the repository root is now a
workspace manifest. Usecargo install --path crates/dixinstead.- Rust users importing
dix::diffordix::versionmust update their imports.
The main diff model types are re-exported fromdix; lower-level engine APIs
live indix-diff. - Rust users constructing or matching diffs must migrate from the old
old/newlist model to the newVersionDiffevent model. - Rust users matching
DiffStatus::Changed(Change::...)must migrate to the new
flatDiffStatusvariants. - Rust users reading or writing
Version.amountmust useVersionAmountor
VersionDiff::AmountChangedinstead. - Rust users calling
DiffReport::query(...)must callquery_diff_report(...)
instead. - Rust users calling
DiffReport::between(...)must use
query_diff_report(...)for store-backed reports ordix-difffor pure
package/version diffs. - Rust users reading
DiffReportorPathStatsfields directly must use the
new accessor methods instead. Direct construction ofDiffReportis no
longer supported. - Rust users implementing
dix::store::StoreBackendmust implement
query_closure_path_info(...). The defaultquery_closure_size(...)
implementation now derives aggregate closure size from that path info. - JSON consumers must update to the new
--output jsonschema. The oldold,
new, andhas_common_versionsfields are no longer emitted, and exact
closure path statistics are emitted in the newpathsobject. Diff entries
also includesize_old,size_new, andsize_deltafields.
What's Changed
- docs: update dix pic by @faukah in #52
- big cleanup, tests by @faukah in #53
- Json output by @Dragyx in #51
- nix.yml: update action versions by @faukah in #54
- store: clean up StoreBackend by @faukah in #62
- split up dix into dix-diff and dix by @faukah in #64
- change size diff colors by @SandaruKasa in #65
- dix: show exact path stat difference by @faukah in #66
- dix: mark git shorthashes as changes instead of up/downgrades by @faukah in #67
- dix: add package size deltas to reports by @faukah in #70
- dix: canonicalize old path as well by @faukah in #71
- dix: strip .drv suffixes by @faukah in #72
- dix: rename to by @faukah in #73
New Contributors
- @SandaruKasa made their first contribution in #65
Full Changelog: v1.4.2...v2.0.0
v1.4.2
v1.4.1
Small release to mark the Nix database as immutable by default. Fixes some issues where sqlite fails to connect to the database.
Full Changelog: v1.4.0...v1.4.1
Dix 1.4.0: <others>, more speed and better diffing
Diff Nix now does Nix diffing even better!
v1.3.0
What's Changed
We've seen great improvements to diffing in this release, mainly by using both the edit distance and the Hungarian algorithm for matching versions.
Full Changelog: v1.2.2...v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
What's Changed
Dix is now quite a bit faster thanks to @Dragyx :
Version splitting and sorting of programs is better thanks to @RGBCube:
- version: split into components using '+' too by @RGBCube in #28
- version: split on '=' for components as well by @RGBCube in #31
- fix DiffStatus cmp by @RGBCube in #30
Full Changelog: v1.0.0...v1.1.0