Skip to content

🚀 Release 0.67.1 (orchid mantis)

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Nov 16:44
· 27 commits to main since this release
orchid-mantis-1.mp4

The video above was generated with Oxen.ai.

Orchid mantis: An insect whose pink and white legs are shaped like flower petals, so it can stand inside an orchid and look like part of the bloom.

New features

  • Downloading a file from a server now tells you its content hash: GET and HEAD on /file/{revision}/{path} send it in an oxen-file-hash header, so a client that copies a file within a repository can reuse the stored copy rather than downloading and re-uploading it. A self-hosted server sends it to every caller, while requests to repositories hosted on Oxen.ai don't receive it yet. A resized image or video thumbnail has no such header. #1175

Changes

  • oxen diff <rev1> <rev2> <file> and the Python package's diff of one file between two revisions now report an error when the diff fails, where they used to print nothing. A text file over 1 MiB or 20,000 lines in either version is refused as too large to compare line by line, and a file that cannot be compared, such as an image, gets an invalid file type error. A diff of a directory still skips such files. #1174
  • The server's compare view gives no line diff for a text file over 1 MiB or 20,000 lines in either version, and bounds the time a line diff takes. Self-hosted and hosted. #1174
  • Image resizes and video thumbnails accept a width or height from 1 to 2048 pixels and answer anything else with a 400. An image is never scaled past its own size, and an image path with no extension gets a 415. Self-hosted and hosted. #1169
  • A part over 10 MiB sent to the batch upload (POST /versions) or the workspace file upload is refused with a 413 that points to upload sessions. The oxen CLI and the Python package never send parts that large, so this affects only direct HTTP API callers. #1170 #1173

Bug fixes

  • On a self-hosted server whose data is on NFS, a large commit push uploaded in chunks failed to clean up its chunks and logged a "Directory not empty" error. #1172
  • A failed transfer of a repository could leave an empty directory at the destination, which made every retry of the transfer fail. #1166
  • A repository name could be claimed for an address that already led to another repository on the server. Creating, renaming, or transferring to such a name is now refused with a 409. #1166

Performance

  • S3 storage isn't supported in open source yet, so please hold off on using it for now. On a server storing repositories in S3, a file between 10 and 100 MiB written to S3 outside a push (such as a workspace commit or a repository's move to S3) now goes up in up to 16 concurrent 5 MiB parts instead of one request. #1177

Internal improvements

  • Replaced the difference crate with similar for line diffs. #1174
  • CI rebuilds its Rust caches weekly, so a dependency change no longer recompiles every crate. #1171
  • Test suite, logging, documentation, and code organization improvements. #1166 #1169 #1170 #1174 #1177

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