Skip to content

🚀 Release 0.64.0 (water flea)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 01:23
· 281 commits to main since this release
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_more in place of total_entries and total_pages, and refuses a page size of 0. Older oxenai packages can't read a path's history from this server, so please upgrade the Python package along with it. In Python, RemoteRepo.log() exposes has_more, with pagination set to None for a path's history. This applies to self-hosted and hosted servers. #1007
  • Self-hosted only: a server no longer deletes the $SYNC_DIR/.oxen directory 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 -a describes. #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/uploads and PUT /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 nor Repo.rm(staged=True) could stop tracking a file while keeping it on disk. It now stages the removal and keeps the file, as git rm --cached does, and oxen status lists the kept file as untracked. #1063 #1075
  • Putting a file back to match the last commit and running oxen add left 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 status looks up each path's staged entry once, and oxen add cleans up after unstaged files once per command rather than once per file. #1063 #1068

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