Repository navigation
🚀 Release 0.64.0 (water flea)
water-flea-1.mp4
The video above was generated with Oxen.ai.
Water flea: A tiny see-through crustacean that rows through ponds in little hops with its branched antennae, its heart beating visibly inside its shell.
Breaking changes
- A file's or directory's commit history now reports
has_morein place oftotal_entriesandtotal_pages, and refuses a page size of 0. Olderoxenaipackages can't read a path's history from this server, so please upgrade the Python package along with it. In Python,RemoteRepo.log()exposeshas_more, withpaginationset toNonefor a path's history. This applies to self-hosted and hosted servers. #1007 - Self-hosted only: a server no longer deletes the
$SYNC_DIR/.oxendirectory that releases before 0.59.0 used for access keys, and lists one that's still there as a namespace called.oxen. If yours is still there, delete it as Stop starting the server with-adescribes. #1067 - Self-hosted only: oxen-server's OpenTelemetry log and span fields now follow the semantic conventions, with Oxen-specific fields under
oxen.(oxen.repository_path,oxen.commit_id,exception.message, and so on). Update any saved queries or dashboards that use the old field names. #1055
New features
- Pushing a large file, or adding one to a workspace, now sends it in parts the server stores as they arrive, so the upload no longer ends with the server reassembling the whole file, and a dropped connection costs one part rather than the whole file. Adding a file the server already has sends nothing. A single file can be at most 1 TiB, a provisional limit. #1073 #1078 #1081 #1085
Deprecations
- The chunk upload endpoints (
POST /versions/{hash}/create,PUT /versions/{hash}/chunks,POST /versions/{hash}/complete) are deprecated in favor of upload sessions (POST /versions/uploadsandPUT /versions/uploads/{upload_id}/parts/{part_number}), and will be removed in 0.69.0. Clients from this release on use upload sessions. #1085 #1089
Bug fixes
oxen rm --staged <path>on a committed path did nothing, so neither the CLI norRepo.rm(staged=True)could stop tracking a file while keeping it on disk. It now stages the removal and keeps the file, asgit rm --cacheddoes, andoxen statuslists the kept file as untracked. #1063 #1075- Putting a file back to match the last commit and running
oxen addleft its staged removal or edit in place, so the next commit removed a file that was still on disk, or recorded content the file no longer had. #1068 - On macOS, an LMDB transaction could fail with
Invalid argument (os error 22)when two LMDB environments shared a semaphore and one of them closed. The test suite hit it as failed pushes, and the CLI and Python package on macOS most likely could too. #1071 - Two edits arriving close together on the same workspace data frame could open a second copy of its database, which can corrupt the data frame or lose an edit. #1082
- A migration, prune, or workspace clear could start beside a write whose client had reset the connection partway through. #1017
Performance
- Opening a file's or directory's history reads only the page requested. On a history of 3,200 commits that each changed the file, a page of 15 went from 1.8 s to 9 ms. #1007
- oxen-server keeps serving other requests on the same worker while it creates a repository or handles workspace data frame column, embedding, and schema requests and Merkle tree requests. This applies to self-hosted and hosted servers. #1066 #1084 #1086 #1088 #1090
oxen statuslooks up each path's staged entry once, andoxen addcleans up after unstaged files once per command rather than once per file. #1063 #1068
Internal improvements
- Test suite, CI, and documentation improvements. #1064 #1065 #1069 #1070 #1072 #1074 #1076 #1077 #1079 #1083
- Updated actix-web to 4.17.0 and uuid to 1.27.0. #1073 #1088
Binaries are available for the following platforms:
- Docker arm64
- Docker x86_64
- Linux arm64
- Linux x86_64
- MacOS arm64 (Apple Silicon)
- MacOS x86_64 (Intel)
- Windows x86_64
🐧 Linux Binaries
The Linux binaries require a minimum glibc version of 2.34.
These are the minimum versions of common distributions with glibc 2.34 or later.
| Distribution | First version with glibc 2.34+ |
|---|---|
| Amazon Linux | 2023 |
| Arch | 2021 |
| CentOS | Stream 9 |
| Debian | 12 |
| Fedora | 35 |
| RHEL | 9.0 |
| Ubuntu | 22.04 |
The -rhel8 tarballs and wheels are for RHEL 8 and its rebuilds, which have glibc
2.28. No distribution in the table above needs them.
🖥️ Windows Binaries
The Windows binaries require a minimum version of Visual C++ 2022.
You may need to install the latest Microsoft Visual C++ Redistributable.
🍏 MacOS Binaries
The MacOS arm64 (Apple Silicon) binaries require a minimum version of MacOS 11 Big Sur.
The MacOS x86_64 (Intel) binaries require a minimum version of MacOS 10.13 High Sierra.
🐍 Python Wheels
The Python wheels are abi3 wheels built against Python 3.11 and compatible with
Python 3.11+. They are available for the following platforms:
- Linux arm64
- Linux x86_64
- MacOS arm64 [Apple Silicon]
- MacOS x86_64 [Intel]
- Windows x86_64