v0.42.0

NVlabs/VILAv0.42.0Jun 4, 2026by martinvonz

AI Summary

This update focuses on performance improvements by switching to the mimalloc memory allocator for better multi-threaded performance. It also enhances the `jj show` command to accept multiple revisions and removes several deprecated command and configuration options.

Key Highlights

  • Switched to the mimalloc memory allocator for better multi-threaded performance.
  • `jj show` now accepts multiple revisions, behaving closer to `git show`.
  • `jj git fetch` now generates evolution history based on change IDs.
  • Added a new `jj util backend name` command to print the commit backend.

Breaking Changes

  • The deprecated command options `jj commit --reset-author`/`--author`, `jj describe --no-edit`/`--edit`/`--reset-author`/`--author`, `jj git push --allow-new`, and `jj metaedit --update-committer-timestamp` have been removed.
  • The deprecated config options `git.auto-local-bookmark` and `git.push-new-bookmarks` have been removed.

New Features

  • Shell completions now surface descriptions for custom aliases, revset-aliases, and template-aliases.
  • `jj show` accepts multiple revisions.
  • `jj git fetch` generates evolution history based on change IDs.
  • Added `jj util backend name` command.
  • Added `edit-invocation-mode` config option for diff editors.

Full Release Notes

### About

jj is a Git-compatible version control system that is both simple and powerful. See
the [installation instructions](https://jj-vcs.github.io/jj/v0.42.0/install-and-setup/) to get started.

### Release highlights

* Switched to the mimalloc memory allocator for better multi-threaded
  performance.

### Breaking changes

* The following deprecated command options have been removed:
  - `jj commit --reset-author`/`--author`
  - `jj describe --no-edit`/`--edit`/`--reset-author`/`--author`
  - `jj git push --allow-new`
  - `jj metaedit --update-committer-timestamp`

* The following deprecated config options have been removed:
  - `git.auto-local-bookmark`
  - `git.push-new-bookmarks`

### Deprecations

* `jj evolog` no longer supports legacy commit predecessors recorded in `jj` <
  0.30.

### New features

* Shell completions now surface descriptions for custom aliases,
  revset-aliases, template-aliases, and fileset-aliases. Descriptions are
  extracted from the `.doc` field of the alias definition if it is a table
  with `.doc` and `.definition` properties.

* `jj show` now accepts multiple revisions, showing all of them one after the
  other, behaving closer to `git show`.

* `jj git fetch` now generates evolution history based on change IDs. If change
  IDs are preserved by the remote, local descendant revisions will be rebased
  onto the rewritten parents.

* Added `jj util backend name` command that prints the commit backend being used
  in the current repo.

* Added `edit-invocation-mode` config option for diff editors (e.g.
  `jj diffedit`, `jj split`). When set to `"file-by-file"`, the editor is
  launched once per changed file, making it possible to use per-file tools like
  `vimdiff` for editing.

### Fixed bugs

* `jj git remote add` now reports an error instead of panicking when the
  remote name is empty or contains whitespace.
  [#9099](https://github.com/jj-vcs/jj/issues/9099)

* Color-words diffs are now shown as separate before and after lines when color
  output is disabled, making piped or redirected diffs readable.
  [#5894](https://github.com/jj-vcs/jj/issues/5894)

* `jj bookmark forget` no longer prints `Forgot N local bookmarks.` when no
  local bookmarks were actually forgotten (e.g. when only an untracked remote
  bookmark matched). [#9181](https://github.com/jj-vcs/jj/issues/9181).

* The `builtin_log_redacted` template now also redacts workspace names.

### Contributors

Thanks to the people who made this release happen!

* Alex Jaspersen (@ajaspers)
* Archer (@archer-321)
* ase (@adamse)
* Austin Seipp (@thoughtpolice)
* David Rieber (@drieber)
* Eyüp Can Akman (@eyupcanakman)
* Jakub Stasiak (@jstasiak)
* James Dixon (@lemonase)
* Joseph Lou (@josephlou5)
* Laurynas Keturakis (@laulauland)
* Luna Schwalbe (@lunagl)
* Martin von Zweigbergk (@martinvonz)
* Niko Savola (@nikosavola)
* OlshaMB (@OlshaMB)
* Sergey Kasmy (@SergeyKasmy)
* truffle (@truffle-dev)
* Vincent Ging Ho Yim (@cenviity)
* Yuya Nishihara (@yuja)