Skip to content

Releases

🚀 Release 0.67.1 (orchid mantis)

Choose a tag to compare

@github-actions github-actions released this 10 Nov 16:44
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

🚀 Release 0.67.0 (honeybee)

Choose a tag to compare

@github-actions github-actions released this 06 Nov 01:17
honeybee-mono-2.mp4

The video above was generated with Oxen.ai.

Honeybee: A fuzzy, social bee that carries pollen from flower to flower as it gathers the nectar its hive turns into honey.

Breaking changes

  • Upgrade a self-hosted oxen-server together with its clients. A push from the 0.67.0 oxen CLI or oxenai package whose commit history goes up in chunks (more than 10 MiB of it) fails against a server older than 0.67.0. Older clients keep working against a 0.67.0 server, and repositories hosted on Oxen.ai are not affected. #1165

New features

  • oxen verify now reports a commit whose node will not parse, and a commit missing its directory index, and goes on to check the rest of history instead of stopping at the first unreadable commit. A version file whose size the store does not report is listed as unchecked. #1117

Bug fixes

  • oxen checkout no longer deletes an untracked file, or a file put in place of a tracked directory, when the target branch has a directory at that path. The checkout stops with the "your local changes would be overwritten" error and leaves the working tree as it was. oxen merge --abort still replaces the file. #1153
  • Moving a committed data frame with a workspace file move now moves it. It used to stay at its old path as well as appearing at the new one, and a JSON data frame moved that way lost its staged edits. #1162
  • A move, copy, or data frame rename onto a path the commit already has now gets a 409 whose type is destination_exists, where a file move or rename got a 400. #1162
  • Unstaging an edited CSV, Parquet, or other tabular data frame in a workspace now discards its staged edits. It used to answer success and leave the file staged as modified. #1163
  • Listing a JSON data frame's versions on a branch now gives each version its schema hash. #1163
  • Uploading a file over 2 MiB through PUT /file, which RemoteRepo.upload in oxenai uses, no longer fails with "Payload error". One upload can now carry up to 100 MiB, and a larger one gets a 413 that gives the limit. #1164
  • A push whose commit history the server refuses now stops at the refusal and reports the server's message, instead of resending it for about 55 seconds and then reporting only that the retry failed. #1165
  • Workspace data frame renames and file moves now refuse a path outside the repository with a 400 that says which field was refused, before anything is written. #1161
  • Looking up a file at a path ending in .., or at a path that is not valid UTF-8, now answers not found instead of a server error. #1161

Performance

  • oxen verify checks version file sizes on a local version store in one batch: 1.0 s instead of 1.2 s for 200,000 version files, 17% less. #1117
  • The server reads and hashes a finished chunked commit upload, and lists a file's versions on a branch, without holding a request worker, so other requests keep being served meanwhile. #1163 #1165

Internal improvements

  • Pushes allocate less when the server advances a branch, and the push gate's invalid-path error keeps the directory it refers to. #1117
  • Test suite improvements. #1161 #1162 #1163 #1167

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

🚀 Release 0.66.0 (ladybug)

Choose a tag to compare

@github-actions github-actions released this 04 Nov 15:45
ladybug-5.mp4

The video above was generated with Oxen.ai.

Ladybug: A small, round beetle with a glossy red shell dotted in black, a welcome visitor to any garden, where it feeds on aphids.

Breaking changes

  • oxen rm no longer deletes untracked files. It deletes only the files Oxen tracks, then the tracked directories that leaves empty, so a file under the directory that was never added, or one whose removal was already staged with oxen rm --staged, stays on disk. oxen rm -r . now deletes every tracked file, as git rm -r . does, and removing a path whose removal is already staged now fails instead of succeeding. #1114
  • oxen df --text2sql is removed, since nothing translated its query and it printed every row. oxen df --sql now fails outside a repository instead of ignoring the query, and refuses --revision, which it used to ignore. #1158

New features

  • A data frame that exists only in a workspace, such as a CSV uploaded there and not yet committed, can now be indexed, queried, and edited row by row before it is committed. #1121
  • A workspace can copy a committed file to a new path without the client downloading and uploading it again, through POST /api/repos/<namespace>/<repo>/workspaces/<id>/copy/<path>. This is available on self-hosted servers and not yet on Oxen.ai. #1121

Bug fixes

  • A SQL query on a committed data frame that failed, from a malformed statement or a column the frame lacks, returned every row of the file with no error, so a filter was silently dropped. It now returns the query's error as a 400. A query on a file type DuckDB can't index, such as .arrow, is refused with a 400 naming the extension rather than a 500. #1154
  • Uploading a file to a workspace with the content it already has committed staged it as modified, and left any earlier staged edit or removal of it in place, so committing the workspace recorded a change nobody made. Such an upload is now a no-op that drops the stale edit, as oxen add is, for multipart uploads, upload sessions, zip uploads, and URL imports alike. #1113 #1130 #1131 #1132
  • A push no longer fails when a connection drops partway through uploading small files. The interrupted batch is retried instead. #1125
  • A download refused for a missing or invalid API key now fails at once with an authentication error, rather than retrying for 55 seconds and then failing with an error that never mentioned the key. #1125
  • A video with a track the MP4 reader doesn't recognize, such as a timecode track, now gets its duration, width, and height recorded, and a video whose movie header has a timescale of 0 no longer causes a panic. #1135
  • A file committed with a modification time before 1970 no longer makes Oxen panic when it checks out a branch or checks the file for changes. #1121
  • oxen-server validates the paths of the files a new repository is seeded with, and accepts only commit history entries in a pushed commit archive, refusing anything else with a 400. The oxen CLI and the oxenai Python package send nothing these refuse. #1157 #1160

Performance

  • The S3 storage backend isn't supported in open source yet, so please hold off on using it for now. On S3, adding a file to a workspace no longer writes a copy of it to the data volume, and re-adding a file the store already has takes 0.35 s rather than 4.31 s for a 512 MiB file (92% less) and 0.16 s rather than 0.37 s for a 64 MiB file (57% less). #1128
  • Re-uploading a directory of mostly unchanged files to a workspace no longer stores or inspects the unchanged ones again, on local storage and S3. #1113 #1130 #1131

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

🚀 Release 0.65.2 (firefly)

Choose a tag to compare

@github-actions github-actions released this 28 Oct 23:48
firefly-1.mp4

The video above was generated with Oxen.ai.

Firefly: A soft-bodied beetle that glows on summer evenings, drifting over meadows in slow, blinking flashes of yellow-green light.

Security

  • URL imports into a repository connect only to public addresses. The server checks every address a host name resolves to as it connects, on the first request and on each redirect, and refuses more reserved address ranges than before. This applies to both self-hosted and hosted servers. On a self-hosted server, URL imports connect directly and ignore proxy environment variables such as HTTP_PROXY and HTTPS_PROXY. #1126

Internal improvements

  • Test suite improvements: smaller test data and merged tests for a faster run, and stronger checks in the prune and remote tests. #1118 #1122

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

🚀 Release 0.65.1 (garden snail)

Choose a tag to compare

@github-actions github-actions released this 24 Oct 18:02
garden-snail-2.mp4

The video above was generated with Oxen.ai.

Garden snail: A small land mollusk that carries its spiral shell on its back and glides along on a single muscular foot, leaving a silvery trail wherever it goes.

Bug fixes

  • After a whole directory was moved in a workspace, later commits inside the moved directory could silently drop files committed there since the move. On Oxen.ai this happened after renaming a Workbench folder, and on self-hosted servers after moving a directory through the workspace API. Reads of repositories already affected are repaired, but files an earlier commit dropped have to be restored by hand. #1119

Internal improvements

  • Test suite improvements. #1115

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

🚀 Release 0.65.0 (leafcutter ant)

Choose a tag to compare

@github-actions github-actions released this 23 Oct 20:32
leafcutter-ant-2.mp4

The video above was generated with Oxen.ai.

Leafcutter ant: A tropical ant that cuts pieces of leaf and carries them home like green sails, where its colony grows the fungus garden it feeds on.

Breaking changes

  • oxen rm refuses to delete work that exists nowhere else, as git rm does: a file whose staged edit has not been committed, a file added under a directory given with -r since the last commit, and an edited file whose committed content is missing locally. Pass the new -f (force=True on Python's Repo.rm) to remove them anyway. -f also overrides the existing refusal of a file with unsaved edits. Scripts that relied on oxen rm deleting such files need -f. #1105
  • oxen rm --staged refuses when the staged content matches neither the file on disk nor the last commit, since that content has no other copy. #1105
  • oxen rm --staged with a glob whose every match already has its removal staged fails with an error pointing at oxen restore --staged, rather than exiting 0 having done nothing. #1101

New features

  • Workspaces move and remove whole directories in one request. A move takes every file under the directory along with its subfolders and data frame edits, and either all of it moves or none of it does. Removing a directory also drops files staged only in the workspace under it, so committing no longer re-creates the deleted folder. #1094

Bug fixes

  • In a workspace, moving or renaming a file or data frame whose removal was staged brought the deleted content back at the new path. It now returns a 409. #1094
  • Renaming a data frame in a workspace onto a path where the workspace had staged another file replaced that file, losing its rows and edits without an error. Moving anything to a path beneath a file staged a directory over that file. Both now return a 409. #1094
  • Renaming a data frame that had not been opened in the workspace failed. #1094
  • Deleting every row of a .json data frame in a workspace and committing left a file with no columns that could not take rows again. That commit is now refused, as it already was for .jsonl. #1109
  • Audio added to a workspace, through oxen workspace add, the web UI, or the API, was committed without its duration, channel count, and sample rate, which oxen add records. Both routes now record the same metadata. #1100
  • oxen merge and oxen pull run from a subdirectory of a repository refused with "your local changes to the following files would be overwritten" for files that already matched the merge. #1104
  • After oxen add staged the removal of a deleted directory, oxen status kept listing files that had been staged under it as new files. #1097

Performance

  • Adding files to a workspace stores the uploaded copy directly instead of writing each file twice: adding 100 small files went from 865 ms to 771 ms (11% faster), and adding one 128 MiB file from 146 ms to 104 ms (29% faster). #1096
  • The server runs the repository work of directory zip downloads, merges, and imports off its request worker threads, so a slow one no longer holds up other requests on the same worker. #1092 #1098 #1107

Security

  • The oxen CLI, the Python package, and oxen-server distrust the compromised eMudhra intermediate CAs, and the server's Docker image requires the Debian ca-certificates update that distrusts them. #1110

Internal improvements

  • Rust 1.99.1, DuckDB 1.10506.1, and tempfile in place of async-tempfile. #1099 #1109 #1095
  • File types and metadata are read from a file's bytes through one function that opens each file once, with every file's metadata and hash unchanged. #1103 #1106
  • Test suite, CI, and documentation improvements. #1087 #1091 #1093 #1102 #1108 #1111

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

🚀 Release 0.64.0 (water flea)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 01:23
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

🚀 Release 0.63.0 (springtail)

Choose a tag to compare

@github-actions github-actions released this 12 Oct 17:56
springtail-1.mp4

The video above was generated with Oxen.ai.

Springtail: A tiny six-legged creature of moss and leaf litter that keeps a spring-loaded tail folded under its body and flicks it to leap out of harm's way.

Breaking changes

  • An oxen client older than 0.54.0 can no longer push, since the server no longer answers the request those clients send on every push to mark commits as synced. Upgrade the client to push to a 0.63.0 server, self-hosted or on Oxen.ai. #1062

Bug fixes

  • oxenai's create_repo(name, host=..., files=[...]) created the repository on hub.oxen.ai whatever host it was given, so a caller pointed at a self-hosted server got a 404 on its next call, and with hub.oxen.ai credentials a repository it never meant to create there. #1061
  • A data frame operation could lose its database connection when the server closed idle connections while it was still running. #1018
  • Reading the size of a repository whose recorded size was written by a release before 0.58.0 logged an error. #1058

Performance

  • The S3 backend isn't supported in open source yet, so please hold off on using it for now. On it, a version file larger than 10 MiB is now read as several ranged requests in parallel rather than one stream, for file views, downloads, and server work that needs the file on disk. #1060
  • Opening a data frame no longer holds up the server's other data frame operations while it opens. #1018

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

🚀 Release 0.62.0 (mote sprite)

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:03
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

🚀 Release 0.61.1 (diatom)

Choose a tag to compare

@github-actions github-actions released this 05 Oct 17:03
diatom-v2-1.mp4

The video above was generated with Oxen.ai.

Diatom: A single-celled alga that lives inside a glass shell it builds from silica, gliding through ponds, streams, and oceans in countless intricate shapes.

Breaking changes

  • oxen init, oxen clone, and oxen create-remote no longer take --merkle-backend. Every new repository is created on LMDB, a backend an older client still sends in a create request is ignored, and repository responses no longer include merkle_node_backend. #1034

Hardening

  • The server answers a request path with a .., absolute, or drive component with a 400, so every request resolves inside its repository. #1042
  • File uploads, zip archives, URL imports, and chunked uploads that name a .oxen path, in any letter case or by its Windows stream and short-name spellings, are refused. A zip upload checks every entry before extracting any of them. #1043
  • A from_directory data frame request whose output_path is missing or leaves the workspace is refused with a 400. #1044
  • Clone, pull, checkout, merge, restore, and oxen download refuse to write a path from a commit's tree that would land outside the working tree or inside a .oxen directory, with a hint to ask the repository's owner to rename or remove it. A merge checks all of its incoming paths before writing any of them. #1045
  • The server refuses a push whose commit adds an entry name that is not a single plain path component or that names a .oxen directory. A repository that already holds such a name still accepts pushes elsewhere in its tree. #1046

Performance

  • Reading from an LMDB store through a new handle no longer waits out a write in progress, which took a read behind a busy writer from about 2 ms to about 4 microseconds. This covers every LMDB store, the per-repository Merkle node store included. #1003

Internal improvements

  • Opening different LMDB environments no longer waits on one process-wide lock. #1026
  • Documentation updates. #1034

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