This release includes some treats for everyday Unison users, like new syntax for forcing delayed computations, and a few fixes to the merge
command. Check it out!
Everyday-impact changes
❣️ Unison supports an additional syntax for forcing delayed computations. foo()
is equivalent to !foo
. You can write either syntax but foo()
is preferred by the UCM when displaying things.
✅ The todo
UCM command will tell you when you leave todo "implement me"
around in your code. It also prints out name conflicts, if you end up with foo#abc
and foo#123
in your codebase, it'll tell you about that.
Fixes and quality of life improvements
🐜 The merge
command received several bug fixes. If you experienced constructors being deleted or unnamed dependencies (hashes in your codebase) occurring after a merge
, this release should help.
🦺 Fixed a situation where the typechecker missed catching a disallowed ability. If an enclosing function does not permit a generic ability, you shouldn’t be able to call a function with an arbitrary ability inside of it!
🔄 Fixed an issue where long ability lists in signatures created a round-trip printer bug. Some of us really took it to heart that Abilities compose. :sweat_smile:
Deprecations and less common situations
🪡 Patches are now hidden from ls
as part of their continuing deprecation. (What are patches, you ask? Shh… don’t worry about it.)
💤 Fixed a bug for sleeping with a large Nat
value. You can write that Rip Van Winkle simulator program now.
🪶 The team squashed some docs roundtrip bugs when header elements, # Like this
, were included in tables and callouts.