Skip to content

Releases: unisonweb/unison

Development Build (trunk)

19 Jul 21:21
Choose a tag to compare

Merge pull request #5232 from sellout/doc-nix-cache


10 Jul 20:45
Choose a tag to compare

What's Changed

  • fix an issue with merge that cause false positives for conflicts (#5194)
  • updated todo command to show issues with the current branch
  • add numbered results to test, io.test and io.test.all
  • improve various CLI command error messages
  • fix an LSP issue with hovering over names ending in !
  • improve LSP completion sorting
  • add unused binding warnings to the LSP

All PRs Since Last Release

Full Changelog: release/0.5.23...release/0.5.24


26 Jun 15:37
Choose a tag to compare

What's changed

  • fixes sleep bug in Unison programs #3957
  • fixes regression with switch
  • updates todo command, now prints name conflicts, one level of missing names, and usages of todo ... in your project
  • fixes merge bug which silently created unnamed dependencies #5092
  • fixes merge bug involving constructor deletion
  • fixes ability list roundtrip bug #4683
  • fixes doc round trip bugs #4476, #4729
  • supports at the branch root, using the same syntax as the fork command
  • hides patches from ls as part of their continuing deprecation
  • fixes typechecking bugs #5129, #3513
  • !foo now renders as foo() in Unison source

All PRs since last release

Full Changelog: release/0.5.22...release/0.5.23


17 Jun 17:40
Choose a tag to compare

What's Changed


  • new command merge.commit (analogous to upgrade.commit). UCM will remind you about it when you run the merge command.

  • ucm transcript now auto-creates a projects given in the transcript prompt:

      Using `project.create-empty` not necessary in this transcript:
      demo-project/main> ls

Fixed Bugs:

  • ls wasn't working right with numbered args
  • edit.namespace was printing record accessors as standalone definitions
  • push error messages were previously not being displayed
  • updating and deleting aliases erroneously tripped “conflicted alias” error during merge
  • improved some error messages for push & merge

All PRs since last release

New Contributors

Full Changelog: release/0.5.21...release/0.5.22


04 Jun 18:57
Choose a tag to compare

What's changed

Fun stuff 🎉

  • This release introduces a much improved merge and pull algorithm. The experience is similar to update or upgrade - if there are conflicts (or if the result doesn't typecheck), you are given a scratch file to get compiling. This is very new; let us know you run into any issues!
  • The new upgrade.commit command will merge and remove the temporary branch created during an upgrade that required manual intervention. An analogous merge.commit will be in an upcoming release.
  • A new lib.install command replaces the use of pull for installing libraries. Usage: lib.install @unison/base/releases/latest and use help lib.install for details.

Important deprecations 🪦

  • UCM can no longer push or pull the old Git-based Unison codebases. Use UCM 0.5.20 or earlier to migrate them to Unison Share!

Lovely bugfixes 🐞

  • A bug was causing delete.namespace to sometimes remove the last names for things without any warning. (4988)
  • A bug was causing some commands to work off of an out-of-date namespace. (5027)
  • find followed by docs <n> would fail. (5012)
  • dependents followed by delete <n> would fail. (5019)
  • UCM would just complain if a scratch file it wanted to write to didn't exist. (4973)
  • auth.login was invisible in help. (5028)
  • The ui command couldn't find its data files when using the ucm launcher script included in manual installs. (5048)/(5050)
  • A bug caused hashes to be displayed in the LSP diagnostics. (#4960)
  • LSP diagnostics were one change behind. (4957)
  • The JIT version of zlib.compress on a >64k buffer. (4961)

All new PRs in this release

New Contributors

Full Changelog: release/0.5.20...release/0.5.21


16 May 02:09
Choose a tag to compare

What's Changed

Fun stuff 🎉

  • This release includes a beta version of the Unison just-in-time/native runtime. You can try it by using the new run.native command in place of the run command. Let us know if you have any issues!
  • Ahead-of-time native compilation to produce a standalone executable is coming soon. If you're running Linux, you can try this today using compile.native; Mac and Windows support are next.
  • @kylegoetz added an implementation of UDP networking, and @etorreborre added an implementation of RSA signing and signature verification. We'll be adding this functionality to base soon!

Important deprecations, please read

  • The cd command and the up command have gone away for maintenance, as they are not yet fully compatible with projects. In the mean time
    • we've added find-in <path> <expression> to replace cd <path>+find <expression>+back
    • and added test <path> to replace cd <path>+test+back.
    • In an emergency where you know what you're doing, you can still use, and then come let us know what happened on Discord.
  • We are starting to deprecate non-project code, and with this release, you can no longer push to the non-project code area on Share. Check out the for help on converting your non-projects to projects. You can still pull non-project code from Share, but that will be going away soon too, so get busy :)

Under-the-hood fixes

  • @upendra1997 submitted a color scheme adjustment which was causing some text to appear invisible for some users.
  • The builtins.merge and builtins.mergeio commands (which most people don't use or need) also accept an optional destination path now.
  • The decompiler output now supports immutable arrays, and partially-applied built-in functions.
  • We fixed an issue in the LSP involving auto-completion and punctuation.
  • The pretty-printer now prefers do <expr> in some cases where it previously printed '(<expr>). The ' syntax is still accepted.
  • We fixed an issue with backtracking in Pattern.many, Pattern.or, and Pattern.replicate.
  • We made a tweak to the name-resolution rules, which were impacting type-directed name resolution.

All PRs since last release

Read more


14 Mar 02:47
Choose a tag to compare

What's changed

  • upgrade now allows library authors to repurpose names for a different definition, without breaking any downstream users. That is, you can rename a definition, then add a new definition with the original name but new behavior, without forcing library users to update to the new definition when they upgrade. #4720
  • Fixes an annoying issue where record types weren't being printed as records (reported and fixed by @runarorama)
  • Improves speed of merge via a faster ancestry check to find the LCA.
  • Greatly improves the error message when the scratch file fails to even parse.
  • Improves error messages and type inference for match statements (now, if the type of the overall match is known, that information is pushed down into the branches of the match, which behaves more nicely)

We've also made improvements and fixes to the new just-in-time native compiler, though the feature is still not quite ready for general use.

All PRs since last release

New Contributors

  • @github-actions made their first contribution in #4784

Full Changelog: release/0.5.18...release/0.5.19


27 Feb 18:53
Choose a tag to compare

What's changed

  • Definitions in operator subnamespaces (like List.++.doc) now round-trip.
  • Builtin support for Ed25519 signatures.

All PRs since last release

Full Changelog: release/0.5.17...release/0.5.18


16 Feb 16:23
Choose a tag to compare

What's Changed

Full Changelog: release/0.5.16...release/0.5.17


06 Feb 13:49
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: release/0.5.15...release/0.5.16