Skip to content

🚀 Release 0.62.0 (mote sprite)

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:03
· 387 commits to main since this release
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_lmdb migration 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 HEAD request 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

  • oxenai now 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