Changelog
Unreleased
- Quieter notes (#55). Notes start with a dimmed
›instead ofℹ, which many terminal fonts draw as a boxed or emoji-style "i". A spinner's final line no longer shows two ticks or runs into the next line.
0.2.0 (2026-10-01)
Measured on the Linux kernel's tree (95 943 files); docs/benchmarks.md has the tables.
- Faster than Git on the first commit, a clean status, fsck, gc and the pack's size.
- First commit: 21.9 s (Git 33.7 s).
- Clean status: 0.17 to 0.19 s (Git 0.22 s).
- fsck: 8.2 s (Git 12.6 s).
- gc: 33.7 s (Git 70 s).
- The pack: 293.5 MB (Git's 295.5 MB).
- Level with Git on a local clone (about 17 s). Status with one file changed, diff, commit, log, blame and checkout are two to six times faster than at 0.1.0. They are still behind Git:
- Status with one file changed: 0.41 s, against 0.22 s.
- Commit: 0.67 s, against 0.21 s.
- Blame: 0.16 s, against 0.07 s.
- Checkout: 0.74 s, against 0.35 s.
- A project's
.gitignorefiles count, below.oxyignore. A project coming from Git no longer commits its build output, and!in.oxyignorecan bring back what.gitignoreleaves out. Ignore rules still apply to untracked paths only. - A folder holding a repository of its own is named.
oxy status,oxy commitandstatus --json(untracked_nested) name a folder with its own.gitor.oxy, rather than skipping it silently. They say how to track its files, keep it as a subrepo, or leave it out. oxy rebase CHANGE --onto T --into-working-copy. Where a rebase would be conflicted, the target is merged into the current bookmark instead, and the conflict is resolved in the working copy, as afteroxy merge.- mimalloc is the allocator. Most of the speed above came from it: status, walks and index loads allocate many small values from every thread.
- Internals. Each item below is a cache and is rebuilt when it does not check:
- the workspace manifest is a checksummed binary file;
- the state index is decoded lazily, caught up by replaying a few changes, and kept for the last two states;
- the store caches change metadata;
- a pack can carry a trained zstd dictionary.
0.1.0 (2026-09-30)
-
The first builds for people to download.
- Linux x86_64 and arm64 (glibc 2.28 or later) as
.tar.gzand.deb. - macOS x86_64 and arm64.
- Windows x86_64.
All are cross-compiled from Linux with
scripts/dist.sh, with SHA256SUMS. A prerelease: formats may still change before 1.0. - Linux x86_64 and arm64 (glibc 2.28 or later) as