Skip to content

v0.13.0

Latest

Choose a tag to compare

@epic-lore-bot epic-lore-bot released this 06 Nov 16:12

The latest release of Lore, Epic Games' next-generation open source version control system.

Quickstart | Design | Documentation | Discord

Quick Install

Windows

irm https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.ps1 | iex

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.sh | bash

Release Notes

Changes since v0.12.0.

Breaking changes

  • lore.user.v1: UserService partition RPCs are replaced by RepositoryRegistryService; with user_url set, the directory there must serve it before lore-server is upgraded
  • lore-server authorization: changing a partition needs write, changing branch protection needs owner or admin (or write for the creator), and presigned URLs need presign instead of is_service_account
  • Server hooks: Hook::pre_handler is now async; a timeout fails the request with UNAVAILABLE instead of INTERNAL
  • Clients on a lores:// remote refuse advertised endpoints that don't authenticate the server, such as lore://
  • Ignore and view rules match paths as .gitignore does: ** and character classes stay within one path component
  • .loreignore applies only to untracked paths, so changes to committed files it matches are reported and staged (ADR-00027)
  • lore sync --reset and lore branch switch --reset leave untracked files in place, and lore reset no longer consults the ignore file
  • A failed link push exits with its error's code instead of 255, or the new code 52 (LinkDivergent)
  • File names Windows reads as something else, such as C:, file. or file::$DATA, are refused on every platform

Features

  • Progress is printed every 30 seconds when stdout is not a terminal (LORE_PROGRESS_INTERVAL)
  • lore auth login --reuse-session reuses a still-valid login
  • The AuthUserToken event reports when the stored OIDC session expires
  • [sync] prefetch_tree = true fetches a sync's tree in bulk requests
  • lore-server: server.trust_unsigned_identity names callers in locks and notifications on servers without auth
  • lore-server: the lock service's Query can be forwarded to a remote server (lock_query)
  • lore-server: configurable QUIC initial congestion window (initial_cwnd_bytes) and, on Linux, several UDP sockets per endpoint (num_sockets)

Fixes & Improvements

  • Much faster scans under large views and ignore files (157 s to 11 s for a 6,342-rule view over 450,000 files)
  • Whole-directory adds and deletes in a sync run on every core, and large syncs use less memory
  • Windows: fewer file system calls for antivirus and other filter drivers to inspect
  • Written files take fewer stats and only change executable bits where needed
  • Throttled storage copies back off and retry instead of uploading the full payload
  • gRPC over TLS falls back to bundled root certificates when the OS store has none
  • Sparse views: excluded directories are skipped by clone, diff and scans, and created only for content the view keeps
  • Scans and staging add or delete excluded directories only along with content below them
  • Directory-only rules such as Intermediate/ apply to directories only
  • lore status lists and lore unstage takes back staged changes to ignored paths
  • Fixed lore stage --scan taking in some ignored files under nested re-inclusions
  • Fixed scans keeping untracked entries an ignore rule later excludes
  • Fixed lore stage taking in every file of a new directory where only some were marked
  • Merges keep both a move and an edit of the same file, and report conflicts for paths with [ or ]
  • Case-only renames commit without --force
  • Fixed deleted directories left behind when a file in them is spelled in another case
  • Merges under a sparse view show up in diffs, file history and lore link list
  • Fixed several staging, unstaging and reset problems with links and layers
  • lore reset keeps nested repositories
  • Fixed a failed removal on Unix making files world-writable; removals no longer follow symbolic links
  • Lore service closes its SWFS mounts on exit, and on Windows a second service no longer takes over the socket
  • lore repository instance prune keeps unreadable instances on file systems such as Btrfs
  • Revisions named by number resolve faster, and common-ancestor lookups no longer return a too-new revision
  • lore-server: faster branch push and BranchList, and the legacy BranchPush handles deleted branches as v1 does
  • lore-server: replicated store requests no longer stall during a client refresh, and composite reads fall back to the durable store sooner
  • lore-aws: shared DynamoDB reads, and batch reads back off on unprocessed keys
  • lore-server: more branch push metrics under lore.branch_push

Release Assets

Important

These can be downloaded under the "Assets" section below.

Installer

  • lore-setup - Lore CLI Windows installer

Binaries

  • lore - Lore CLI
  • loreserver - Lore Server
  • liblore - Lore Shared Library

Headers

  • lore.h - Single header for liblore (packaged with liblore)

Supported Platforms

  • Windows x86_64
  • macOS AArch64
  • Linux x86_64
  • Linux AArch64
  • Linux AArch64, optimized for Graviton/Neoverse 512-tvb

Lore Desktop Client

Important

Lore Desktop Client is available as binaries only, download the installer for your platform here:

⬇️ Open Source Lore Assets Below ⬇️