Repository navigation
🚀 Release 0.62.0 (mote sprite)
mote-sprite-1.mp4
The video above was generated with Oxen.ai.
Mote sprite: A tiny winged sprite no bigger than a speck of dust, glowing softly as it drifts through shafts of sunlight.
Breaking changes
- Oxen no longer opens a repository whose Merkle nodes are still on the filesystem backend, and the
merkle_nodes_to_lmdbmigration that moved them to LMDB is gone. Run that migration with Oxen 0.61.1 before upgrading, as described in Move a repository's Merkle nodes to LMDB. A self-hosted server answers requests for such a repository with a 400. Repositories hosted on Oxen.ai are already on LMDB. #1035
New features
- The S3 backend isn't supported in open source yet, so please hold off on using it for now. With that in mind, a server can now move a repository's version files between local storage and S3 with
PUT /api/repos/{namespace}/{repo_name}/storage, and pushes keep working while the files copy. A second move of the same repository while one is running is refused with a 409. #1049 #1053
Bug fixes
- A workspace commit no longer overwrites a file the branch added or changed after the workspace was created, brings back a file the branch removed, or drops files the branch added under a directory the workspace removes. Such a commit now gets a 409 conflict. #1040
- Two workspace commits to the same branch at the same moment no longer leave one of them on no branch while both report success. #1037
- Two overlapping commits of the same workspace no longer fail with a "workspace is behind" conflict when nothing conflicts, and a commit of a workspace deleted while it waited gets a 404. #1036
- A commit of a file staged without the directories above it, as a batch upload can stage it, no longer empties the branch. #1039
- Two commits with the same parents, message, and author made in the same second no longer share one tree. The second is refused with a 429 and
Retry-After: 1, and a retry lands. #1041
Performance
- A
HEADrequest for a file no longer reads the file. For a 50 MB file on local storage it went from 52 ms to under 1 ms, and from 19 to about 2,100 requests per second on one connection. #1054 - The S3 backend isn't supported in open source yet, so please hold off on using it for now. On it, each request that reads a version file is about 10 ms faster, for example a text file view from 74 ms to 61 ms (18% faster), and an S3 call that stops answering now times out instead of holding its request open. #1052
- A slow workspace commit no longer stalls other requests handled by the same server worker. #1011
- A burst of workspace commits to one repository now recalculates the repository's size once at a time rather than once per commit. #1038
Dependency updates
oxenainow requires polars below 2.0, since the bindings have not been tested against polars 2. #1051- aws-sdk-s3 1.152.0. #1052
Internal improvements
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