Skip to content

Releases: unisonweb/unison

Development Build (trunk)

05 Jun 01:15
3d8eca4
Compare
Choose a tag to compare
Pre-release

Commits

  • 0247854: [create-pull-request] automated change (aryairani) #5051

release/0.5.21

04 Jun 18:57
b44044a
Compare
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

release/0.5.20

16 May 02:09
d06f0d5
Compare
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 deprecated.cd, 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 https://www.unison-lang.org/docs/tooling/projects-library-migration/ 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

release/0.5.19

14 Mar 02:47
7d95ed5
Compare
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

release/0.5.18

27 Feb 18:53
404a9f9
Compare
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

release/0.5.17

16 Feb 16:23
9d1c75a
Compare
Choose a tag to compare

What's Changed

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

release/0.5.16

06 Feb 13:49
4f345fe
Compare
Choose a tag to compare

What's Changed

New Contributors

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

release/0.5.15

01 Feb 22:30
f98ea54
Compare
Choose a tag to compare

What's Changed

New features:

  • LSP support for "format file" / "format selection" / "format on save"
  • New edit.namespace command, see here for example usage (reported by @ceedubs)

Bug fixes:

  • Better tab-completion of branch-relative paths
  • Nicer errors when type-directed name resolution fails (reported by @hojberg)
  • Fixed bug when parsing docs for a unique type with unique omitted (reported by @hojberg)
  • Fixed an indentation issue in Docs that was causing parse failures (reported by @alvaroc1)
  • Fixed a bug with use and names starting with _ (reported by @alvaroc1)
  • Fixed raw text-block indentation (reported by @SystemFw)
  • Fixed an issue where string gets transformed to ''string'' and then fails to parse if string contains ' (reported by @SystemFw)
  • Fixed a type-checking bug where local functions were not generalized (reported by @SystemFw)
  • Fixed a Set.findMin: empty set has no minimal element bug on update (reported by @alvaroc1)
  • UCM now deletes a remote branch mapping when a push fails because the branch doesn't exist.

Speed-ups:

  • LSP no longer preloads names for the entire codebase
  • docs.to-html no longer preloads names for the entire codebase

All PRs since last release:

Full Changelog: release/0.5.14...release/0.5.15

release/0.5.14

23 Jan 03:43
f991abe
Compare
Choose a tag to compare

What's changed:

  • We've implemented the first stage of getting rid of “metadata”.
    • link, links, and unlink commands go away.
    • “default metadata” is no longer applied from your config file on add, nor copied on update.
    • diff.namespace doesn’t report anything about metadata. Note that we used to rely on metadata to exclude uninteresting changes from a diff. That already doesn’t work with the new update process, but we will fix this again eventually.
  • Types are now unique by default, if neither unique nor structural is specified. unique is also left off when viewing the code for a unique type (reported by @ceedubs and others)
  • fork now lets you refer to paths in other branches using project/branch:path syntax. Other commands will support this soon, at which point you hopefully won’t need to go outside of projects for scratch space anymore.
  • UCM no longer searches the global namespace for names not present in or below your current namespace. The upshot is that many commands will complete much more quickly, but you will now see hashes where you would currently see a crazy out-of-scope name. But you wanted to fix that name anyway.
    • This situation is particularly likely when you are cded deeper into your project, into a subnamespace that isn’t completely self-contained, we’re looking into solutions to this. view.global, names.global, and namespace.dependencies will still do a global search. view and display will use the global names if provided an absolute argument.
  • upgrade command now tells you what file to edit (reported by @stew)
  • edit and other commands which modify your scratch file now uniformly produce output in transcript output.md files. It will show up in an ```unison:added-by-ucm <filename.u> code block.
  • Fixed an issue where numbered args unexpectedly got cleared (reported by @ceedubs)
  • Fixed an issue where sub-types of Doc and [Test.Result] showed up on Share as Docs and Tests when they shouldn’t have.
  • Fixed an issue where update/upgrade produced a scratch file that ambiguously referred to aliases in a way that couldn’t typecheck.
  • Globbing (view foo.?) went away; you probably won’t notice. The improved fzf support introduced in 0.5.13 is nicer anyway.

All PRs since last release

Full Changelog: release/0.5.13...release/0.5.14

release/0.5.13

05 Jan 22:02
014b3fc
Compare
Choose a tag to compare

Fixed these bugs:

  • add.run CallStack error issue on 0.5.11 (reported by @rlmark)
  • Feedback when a scratch file change is picked up (reported by @ceedubs)
  • speed up find, by eliminating historical name search (reported by @stew and others)
    • may show a few more hashes than previously; you can use names.global <hash> to investigate the name, and then alias.term or alias.type to create a name in your branch.
  • extend fzf support to all required arguments (multiply reported by @ceedubs)
  • Nat.fromHex fails for some input when it is a substring of larger Text (reported by @hagl)
  • Baffling error messages when using / instead of Float./ (reported by @stefanholzmueller)
  • update issue with sum type, adding a new type constructor (reported by @kylegoetz)

All PRs since last release

Full Changelog: release/0.5.12...release/0.5.13