OXYGENHUB
# c07406bcc237 oxygen / CHANGELOG.md
2.5 KiB · Markdown · last changed Notes start with a quieter mark; a spinner's last line prints once (closes #55) 1 month ago renderedsource blame history raw
8fd78eb5 Andy McCall 1
# Changelog
2
c07406bc Andy McCall ↶ 3
## Unreleased
4
5
- **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.
6
b0461604 Andy McCall ↶ 7
## 0.2.0 (2026-10-01)
8fd78eb5 Andy McCall 8
9
Measured on the Linux kernel's tree (95 943 files); `docs/benchmarks.md` has the tables.
10
11
- **Faster than Git on the first commit, a clean status, fsck, gc and the pack's size.**
12
  - **First commit:** 21.9 s (Git 33.7 s).
13
  - **Clean status:** 0.17 to 0.19 s (Git 0.22 s).
14
  - **fsck:** 8.2 s (Git 12.6 s).
15
  - **gc:** 33.7 s (Git 70 s).
16
  - **The pack:** 293.5 MB (Git's 295.5 MB).
17
- **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:
18
  - **Status with one file changed:** 0.41 s, against 0.22 s.
19
  - **Commit:** 0.67 s, against 0.21 s.
20
  - **Blame:** 0.16 s, against 0.07 s.
21
  - **Checkout:** 0.74 s, against 0.35 s.
22
- **A project's `.gitignore` files count**, below `.oxyignore`. A project coming from Git no longer commits its build output, and `!` in `.oxyignore` can bring back what `.gitignore` leaves out. Ignore rules still apply to untracked paths only.
23
- **A folder holding a repository of its own is named.** `oxy status`, `oxy commit` and `status --json` (`untracked_nested`) name a folder with its own `.git` or `.oxy`, rather than skipping it silently. They say how to track its files, keep it as a subrepo, or leave it out.
24
- **`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 after `oxy merge`.
25
- **mimalloc is the allocator.** Most of the speed above came from it: status, walks and index loads allocate many small values from every thread.
26
- **Internals.** Each item below is a cache and is rebuilt when it does not check:
27
  - the workspace manifest is a checksummed binary file;
28
  - the state index is decoded lazily, caught up by replaying a few changes, and kept for the last two states;
29
  - the store caches change metadata;
30
  - a pack can carry a trained zstd dictionary.
31
32
## 0.1.0 (2026-09-30)
33
34
- **The first builds for people to download.**
35
  - Linux x86_64 and arm64 (glibc 2.28 or later) as `.tar.gz` and `.deb`.
36
  - macOS x86_64 and arm64.
37
  - Windows x86_64.
38
39
  All are cross-compiled from Linux with `scripts/dist.sh`, with SHA256SUMS. A prerelease: formats may still change before 1.0.