This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
Affected surfaces
ReleasePort's take
Moderate signalSnapshots in v0.17.0 now use format version 1; older binaries cannot read them.
Why it matters: All deployments must upgrade to the new binary before creating or restoring snapshots, as pre‑v0.17.0 tools will fail on version 1 files.
Summary
AI summarySnapshots now use format version 1; older binaries cannot read them, requiring coordinated upgrades.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
Snapshots now use format version 1; older binaries cannot read them. Snapshots now use format version 1; older binaries cannot read them. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Feature | Medium |
Hard links are preserved across backup and restore, regrouping members by source (dev, ino). Hard links are preserved across backup and restore, regrouping members by source (dev, ino). Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Feature | Medium |
Non‑UTF8 file paths are preserved byte‑faithfully on Unix during backup and restore. Non‑UTF8 file paths are preserved byte‑faithfully on Unix during backup and restore. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Feature | Medium |
Restore now applies uid/gid (when run as root), directory mtimes, and symlink mtimes with a defined ordering. Restore now applies uid/gid (when run as root), directory mtimes, and symlink mtimes with a defined ordering. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Feature | Medium |
S3 multipart upload is used for packs larger than 16 MiB, allowing independent part retries on connection reset. S3 multipart upload is used for packs larger than 16 MiB, allowing independent part retries on connection reset. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Feature | Medium |
Special files (FIFOs, sockets, device nodes) now emit a per‑entry warning instead of being dropped silently during backup. Special files (FIFOs, sockets, device nodes) now emit a per‑entry warning instead of being dropped silently during backup. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Feature | Medium |
GUI shows a clickable “(update)” link when a newer release is available. GUI shows a clickable “(update)” link when a newer release is available. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Bugfix | Medium |
Restore now fsyncs data and inode before rename, and the destination directory after rename, eliminating unflushed‑content windows. Restore now fsyncs data and inode before rename, and the destination directory after rename, eliminating unflushed‑content windows. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Bugfix | Medium |
A killed restore no longer leaves a temporary directory that blocks subsequent attempts; temp dirs are safely swept on the next run. A killed restore no longer leaves a temporary directory that blocks subsequent attempts; temp dirs are safely swept on the next run. Source: llm_adapter@2026-06-10 Confidence: high |
— |
Full changelog
⚠️ Breaking Changes — Coordinated Upgrade Required
This release stamps snapshots with format version 1 to support non-UTF8 path fidelity. Compatibility is backward-readable but not forward-compatible:
- New 0.17.0 binaries read all existing repositories and older snapshots.
- Older binaries cannot read snapshots written by 0.17.0 — they fail cleanly with a decode error, not silent corruption.
If multiple machines share a repository, upgrade them all at the same time. An older binary restoring a snapshot written by 0.17.0 is the direction that is not supported. Existing repositories and old snapshots remain fully readable by this release.
Features
- Hard links: regular files with multiple links are now preserved across backup and restore. Each member records its source
(dev, ino); restore regroups members and relinks them, with the relink path hardened against malformed-snapshot attacks (authoritative chunk-id fingerprint, parent-containment checks, O_EXCL creation). - Non-UTF8 paths: filenames and symlink targets that are not valid UTF-8 are now preserved byte-faithfully through backup and restore on Unix. Snapshots additively gain a
format_versiondiscriminator (see Breaking Changes). - Restore metadata: restore now applies uid/gid (when run as root), directory mtimes, and symlink mtimes, with a uniform
chown → xattrs → chmod → mtimeordering so restored caps/setuid and read-only modes survive. - S3 multipart upload: packs larger than 16 MiB upload via the S3 multipart API, so a connection reset mid-transfer costs one 16 MiB part instead of restarting the whole pack. Each part is retried independently. We recommend an
AbortIncompleteMultipartUploadlifecycle rule (#154). - Special files: FIFOs, sockets, and device nodes that vykar cannot represent now emit a per-entry warning instead of being dropped silently. Warn-only — the backup still succeeds.
- GUI: notifies you with a clickable "(update)" link when a newer release is available.
Bug Fixes
- Restore durability: restored files are now fsynced (data + inode) before rename, and the destination directory is fsynced after — closing a window where a crash could leave correct-sized files with unflushed contents.
- Restore retry: a killed restore no longer leaves a temp dir that blocks the next attempt; reserved temp dirs are swept safely on the following run.
Documentation
- Corrected crash-orphan reclamation guidance (
vykar check --repair) in the architecture and maintenance docs, with a regression test.
Updating
To update to the latest version, run:
curl -fsSL https://vykar.borgbase.com/install.sh | sh
See the quickstart guide for other install options.
Downloads
| Platform | Artifact |
|---|---|
| Linux x86_64 (gnu) | vykar-v0.17.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.17.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (gnu) | vykar-v0.17.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.17.0-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.17.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.17.0-x86_64-pc-windows-msvc.zip |
| GUI (AppImage) | vykar-gui-v0.17.0-x86_64.AppImage |
SHA256 checksums are attached to this release.
Breaking Changes
- Snapshots written by vykar 0.17.0 (format_version 1) are unreadable by binaries older than 0.17.0; coordinated upgrade of all machines accessing a shared repository is required.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Beta — feedback welcome: [email protected]