Releases: unisonweb/unison
Development Build (trunk)
release/1.1.0
What's Changed
Features:
- The
dependentscommand now work on constructors and ability requests. (#6115) - Support for "Edit Definition" and "Open on Share" in the Unison Language VS Code extension v1.5.0. (#6129, #6105)
- Adds new builtins for Argon2id password hashing. (#6094, thanks @bbarker!)
- Adds MCP tools for
history,reflog, andshare-project-info(for authenticated project lookups). (#6103, #6118, also @bbarker) - More FFI work (#6131).
Fixed:
Bytesdecoding and comparisons are much faster.runnow allows unquoted numbers as arguments; sorry.branch.diffnow accepts numbered args and branch hashes.runnow gives a nicer message if the program name is ambiguous.(#6111)updateno longer leaves deleted constructors in the underlying namespace of an update branch.casesnow parses correctly in Doc eval blocks.- The MCP server to avoid the use of
oneOfin JSON Schema, which was defined in 2014 and will surely be supported by coding agents any moment now. - A certain kind of infinite loop no longer occurs in the runtime. (#5889)
- Fixed a backwards subtyping check in pattern type checking. (thanks to @lJoublanc for reporting!)
- Fixed a typo in the
reflog.(showingalias.typeasalias.term) - Fixed a pattern-matching bug around duplicate binding names .(thanks to @jcwilk, @etorreborre, and @gvolpe for reporting!)
ucm 1.1.0 updates the codebase version (not backwards-compatible) in order to support syncing of history comments.
All PRs Since Last Release
- claude seems to not support the "oneOf" type. by @stew in #6095
- Add a missing case to the lambda lifting transformation by @dolio in #6093
- Fix backwards subtyping checks in pattern type checking by @dolio in #6087
- delete Relative path type by @mitchellwrosen in #6097
- fix reflog typo by @mitchellwrosen in #6092
- bugfix: disallow duplicate binders by @mitchellwrosen in #6090
- Add some better implementations for some bytes reading/decoding functions by @dolio in #6104
- Open on share VS-Code plugin api endpoint by @ChrisPenner in #6105
- diff.branch: include current branch in completion by @ceedubs in #6102
- Rework Bytes Chunk type and tweak comparison by @dolio in #6112
- improve ambiguous
runerror message by @mitchellwrosen in #6111 - allow delete.force to delete things out of lib by @mitchellwrosen in #6088
- make
dependentswork on constructors by @mitchellwrosen in #6115 - make
alias.typename the constructors as well by @mitchellwrosen in #6099 - Remove unused scratch files by @ceedubs in #6114
- Added message argument to history.comment by @ChrisPenner in #6123
- Implements the Pull side of comment sync by @ChrisPenner in #6117
- Hash history comments and sign them with the author's personal key. by @ChrisPenner in #6004
- History Comment Sync API by @ChrisPenner in #6017
- disallow adding or updating things in lib with
updateby @mitchellwrosen in #6083 - Replace pseudo-extensible Foreign with a big union by @dolio in #6125
- Add Argon2id password hashing builtins; switch from cryptonite to crypton by @bbarker in #6094
- Fix install-hooks.bash script by @sellout in #5910
- Edit Commands for VS Code plugin by @ChrisPenner in #6129
- bugfix:
updateno longer leaves deleted constructors in underlying namespace of update branch by @mitchellwrosen in #6133 - generate cabal files by @mitchellwrosen in #6132
- Add additional FFI types and pointer operations by @dolio in #6131
- bugfix: fix
casesparsing in doc eval block by @mitchellwrosen in #6137 - Don't expand numbers in non-structured arguments by @ChrisPenner in #6135
- Add share project info MCP tool by @bbarker in #6118
- properly handle hashes and numbered args in branch.diff arg parser by @mitchellwrosen in #6142
- Add Reflog and History MCP Tools by @bbarker in #6103
- update help for branch.squash by @aryairani in #6146
Full Changelog: release/1.0.2...release/1.1.0
release/1.0.2
What's Changed
- New
diff.updatecommand highlights changes in the scratch file. (#6080; thanks @bbarker!) - MCP improvements. (#6081, #6082; thanks @kn0ll!)
- Fixed a parsing error involving multi-line
matchscrutinees. (#6078) - Fixed
text.findwhich was not finding numbers that appeared in patterns. (#6073)
All PRs Since Previous Release:
- Fix MCP: Successful responses contain duplicate outputs by @kn0ll in #6082
- Adding MCP commands: "rename", "move", "moveTo", "delete", "delete.namespace" by @kn0ll in #6081
- format
trunkwith ormolu 0.7.2.0 by @github-actions[bot] in #6084 - fix parsing certain multiline
match/ indentation cases by @aryairani in #6078 - let
text.finddetect numbers in patterns by @aryairani in #6079 - update transcripts by @aryairani in #6085
- [Draft] Add diff.update to show preview of changes before running update by @bbarker in #6080
New Contributors
Full Changelog: release/1.0.1...release/1.0.2
release/1.0.1
What's Changed
Faster:
- big speed-up to type-checking in certain common situations. #6053 (thanks @bbarker for reporting)
- faster JSON generation #6058
Features:
- new
moveTocommand collects definitions from different places into a single target namespace. #6054 - new
renamecommand lets you rename a definition with a long path without having to type the long path twice. #6054 - new
watchandunwatchcommands let you monitor multiple locations for scratch file changes. #6063 findno longer searches transitive deps by default. #6065- support single-quotes when parsing args in ucm. #6072
- more readable errors for
dataBranchfailures. #6068 - add 16-bit and 32-bit FFI types. #6060
- allow passing pinned arrays to DLL imported functions. #6067
Fewer bugs:
- ucm now prints definitions within definitions in a more predictable order. #6039
- show library upgrades as automatic changes (de-emphasized in diffs). #6020
- correctly pretty-print "symboly" binders with surrounding parens. #6030
- don't disable paged output after a file event. #6045
- avoid giving an under-application error for 0 arguments. #6042
All PRs Since Last Release
- fixup hpack file for unison-dynlib by @aryairani in #6019
- canonicalize libnames for synhashing by @mitchellwrosen in #6020
- Fail hashing if components are ambiguously ordered. by @ChrisPenner in #6007
- pretty-print symboly binders with surrounding parens by @mitchellwrosen in #6030
- Fix typo in init command help message by @larsw in #6022
- Only check for incomplete element orderings on top-level-bindings by @ChrisPenner in #6035
- Add FQN to syntax text by @ChrisPenner in #6036
- Prevent hash failure errors in runtime by @ChrisPenner in #6038
- Avoid giving an under-application error for 0 arguments by @dolio in #6042
- Guard dll smoke tests behind cache results by @dolio in #6041
- Human-centric let-rec, constructor and ability orderings by @ChrisPenner in #6039
- Re-enable paged output after a file event. by @ChrisPenner in #6045
- Switch to an asymptotically better typing context implementation by @dolio in #6053
- implement
moveToandrenameby @aryairani in #6054 - Add missing fingertree dependency to parser-typechecker by @aryairani in #6056
- Update runtime-tests version by @dolio in #6061
- Add 16-bit and 32-bit FFI types by @dolio in #6060
- test
moveTo <blah> .by @aryairani in #6066 - add
watch/unwatchcommands by @aryairani in #6063 - Allow passing pinned arrays to DLL imported functions by @dolio in #6067
- Support single-quotes in ucm arg parsing by @ChrisPenner in #6072
- don't search transitive deps by default by @aryairani in #6065
- Give more readable errors for
dataBranchfailures by @dolio in #6068 - Speed up
emitJsonreplacement by @dolio in #6058 - block for lock during
transcript.inplaceby @aryairani in #6075
New Contributors
Full Changelog: release/1.0.0...release/1.0.1
release/1.0.0
What's Changed
- README: Fix factorial example by @leetemil in #5998
- don't require github templates to go through transcript runner by @aryairani in #6000
- fix bug in UnisonFile.constructorsId - effects were treated as decls by @mitchellwrosen in #5999
- tweak stale
runoutput by @mitchellwrosen in #6005 - make diff.branch visible and give it a help by @mitchellwrosen in #6009
- make dependents look at file if nothing in codebase matches by @mitchellwrosen in #6003
- Print Refs as short hashes in ambiguous hash error by @ChrisPenner in #6006
- Initial implementation of actual dynamic FFI to DLLs by @dolio in #6008
New Contributors
Full Changelog: release/0.5.50...release/1.0.0
release/0.5.50
What's New
ucm 0.5.50 has lots of updates and new features (and is also a 1.0 release candidate)!
workflow improvements
- new
branch.diffcommand for comparing branches, also with difftool support viaUCM_DIFFTOOLvariable with fallback to theUCM_MERGETOOLvariable - new
commentcommand to add comments to your branch's change history upgradecommand can now take more than one lib pair simultaneously- status line indicates 🧩 when you are piecing together an incomplete
update,delete,upgrade, ormerge- in this mode, definitions removed from your scratch file will be removed from final result once you successfully
update, which is different than usual, but necessary for making certain kinds of changes updateorcancelwill complete or cancel the update; themerge.commitcommand has gone away.
- in this mode, definitions removed from your scratch file will be removed from final result once you successfully
- fixes to to the
runcommandrunwill stop you from running a program in your scratch file that would result in running stale code due to needing toupdatefirst- multi-word ucm args can be passed to
runby putting them in"double quotes" - avoid numbered args expansion with
runby putting quotes around the numbers also
- updated project naming rules: 1+ characters in the set {ascii letter, digit,
-,_}. - add
mvandrmcommand aliases
core language and runtime improvements
- parser, type-checker, code printer, and runtime fixes
- code serialization speedup
- new support for zstd compression/decompression (thanks @regiskuckaertz)
editor support improvements
- LSP file outline support and error highlighting improvements
vimsyntax highlighting improvements (thanks @avysk)
MCP improvements
- new MCP tools allow an agent to use the
test,update, andruncommands - implemented a fix for the
typecheckcommand for agents (e.g. codex) that don't support the latest json schema version
All PRs Since Last Release
- regenerate mcp.output.md by @aryairani in #5900
- Prevent uName from overwriting other syntax groups by @avysk in #5901
- Don’t treat docs as transcripts by @sellout in #5903
- Add
mvandrmcommand aliases by @regiskuckaertz in #5904 - Handle kind-inference of unkown builtins more gracefully by @ChrisPenner in #5899
- fix new project name rules by @mitchellwrosen in #5906
- Prevent new dead Haskell code by @sellout in #5909
- Fix
useinsertion whendoblock starts with destructuring bind by @pchiusano in #5911 - Correct
Semis when reordering stanzas by @sellout in #5915 - Minimal nix update by @sellout in #5912
- Add support for ZStandard (de)compression by @regiskuckaertz in #5907
- Use
Builderdirectly instead ofPutfor serialization by @dolio in #5919 - add cancel command by @mitchellwrosen in #5921
- remove merge.commit command by @mitchellwrosen in #5922
- LSP scratch-file outline by @ChrisPenner in #5933
- Speed up serialized value loading by @dolio in #5928
- Fix Cabal smoke-test workflow by @sellout in #5936
- feat: overhaul delete implementation by @mitchellwrosen in #5894
- Implement side-by-side diffs by @ChrisPenner in #5925
- Delete unison-src/transcripts/idempotent/builtins.output.md by @aryairani in #5935
- Delete loop.prof.wakeup by @aryairani in #5937
- put puzzle piece on prompt on update/upgrade/merge branches by @mitchellwrosen in #5938
- Add (pure) tests command to MCP by @ChrisPenner in #5954
- Reimplement code/value deserialization based on a custom parser by @dolio in #5943
- Try to fix typecheck schema usage in Codex by @ChrisPenner in #5957
- Convert a bunch of types and functions from String -> Text by @ChrisPenner in #5958
- Add Run tool to MCP by @ChrisPenner in #5955
- Better handle newlines in diffs by @ChrisPenner in #5959
- disable nix development cache job due to failures by @aryairani in #5966
- standardize wording of failed delete/update/upgrade/merge by @mitchellwrosen in #5953
- Fix a runtime problem from overapplying ability requests by @dolio in #5970
- Make profiler-smoketest.md delete profile files after run by @dolio in #5951
- Add data type variance to type checking by @dolio in #5960
- Add support for quoted UCM args. by @ChrisPenner in #5968
- Parse number expansions in args by @ChrisPenner in #5973
- slurp unnamed test watches properly by @mitchellwrosen in #5969
- generalize upgrade to take more than one lib pair simultaneously by @mitchellwrosen in #5963
- Fix completion edge-cases by @ChrisPenner in #5975
- Change Comments by @ChrisPenner in #5895
- Remove speech bubbles by @ChrisPenner in #5977
- Make more use of inferred variances during type checking by @dolio in #5976
- disallow
runif an update is required by @mitchellwrosen in #5964 - fix upgrade fzf behavior by @mitchellwrosen in #5981
- Add
branch.diffcommand by @mitchellwrosen in #5962 - Attempt to improve function under-application and over-application errors by @ChrisPenner in #5665
- Strictify LSP Vars by @ChrisPenner in #5978
- Add libdeps diffs to
branch.diffoutput by @mitchellwrosen in #5979 - Try to improve information flow down through 'branching' constructs by @dolio in #5984
- update macos runners due to deprecation by @aryairani in #5986
- MCP Update tool by @ChrisPenner in #5952
- Improve error LSP ranges on type mismatches by @ChrisPenner in #5284
- Refine pull request template for clarity by @aryairani in #5994
- run transcripts by @mitchellwrosen in #5996
- don't launch mergetool in transcripts by @mitchellwrosen in #5995
- allow
diff.branchbetween unrelated branches by @mitchellwrosen in #5982 - Create a dedicated failure type for AsyncCancelled by @ceedubs in #5991
- compute fast-forward diffs much more efficiently by @mitchellwrosen in #5989
New Contributors
- @avysk made their first contribution in #5901
- @regiskuckaertz made their first contribution in #5904
Full Changelog: release/0.5.49...release/0.5.50
release/0.5.49
What's Changed
-
Setting the
UNISON_DEBUGvariable withTIMINGnow displays runtimes for individual tests when usingtest. -
Setting the
UNISON_DEBUGvariable withTESTSnow displays names for individual tests when usingtest. -
A new murmur hash primitive which doesn't tumble in type info. It's much faster than the existing one, but good chance of collisions when you're mixing hashes from values of different types, so choose appropriately.
-
Everything from the stealth release of 0.5.48:
New Features ✨ 🦄 🌈 ⭐
- Profiling!
- Arbitary precision integer arithmetic!
- git-style mergetool support!
- Like when resolving an incomplete
update, resolving an incompleteupgradesupports deletions. That's a little different from before, so be careful while you get used to it!undois your friend.
Fixes
- We updated project naming rules to match Unison Share; sorry not sorry!
Project names may now consist of ASCII letters, digits, and hyphens; between 2–40 characters.
Fiddling
- Namespaces in
lsoutput now end in.instead of/ - There are a few new command aliases:
lib.installcan be run asinstall.libor justinstalllib.upgradecan be run asupgrade.libor justupgrade
namespace.dependenciescommand has been removed in favor oftodo.
All PRs Since Last Release
- Delete old Name Lookup methods in UCM by @ChrisPenner in #5875
- Add Dependents/Dependencies API for UCM Desktop by @ChrisPenner in #5876
- Add debug info for tests by @runarorama in #5890
- Implement a direct murmur hash on values that omits type references by @dolio in #5884
- Fix the return type of Integer.signum by @runarorama in #5892
Full Changelog: release/0.5.48...release/0.5.49
release/0.5.48
What's Changed
New Features ✨ 🦄 🌈 ⭐
- Profiling!
- Arbitary precision integer arithmetic!
- git-style mergetool support!
- Like when resolving an incomplete
update, resolving an incompleteupgradesupports deletions.
That's a little different from before, so be careful while you get used to it!undois your friend.
Fixes
- We updated project naming rules to match Unison Share; sorry not sorry!
Project names may now consist of ASCII letters, digits, and hyphens; between 2–40 characters.
Fiddling
- Namespaces in
lsoutput now end in.instead of/ - There are a few new command aliases:
lib.installcan be run asinstall.libor justinstalllib.upgradecan be run asupgrade.libor justupgrade
namespace.dependenciescommand has been removed in favor oftodo.
All PRs Since Last Release
- Add profiling support to UCM by @dolio in #5856
- Transcript change: help from new profiling commands by @dolio in #5857
- Fix interpreter tests by @sellout in #5853
- swap trailing slash for trailing dot in ls output by @mitchellwrosen in #5860
- Builtins for arbitrary precision integer arithmetic by @runarorama in #5852
- Report internal errors more clearly by @sellout in #5661
- Improve displayed names in profiles by @dolio in #5861
- Better name out-of-scope error message by @mitchellwrosen in #5863
- Avoid redundant re-hashing when squashing an already squashed branch by @ChrisPenner in #5867
- Don’t prettify exceptions written to the stack by @sellout in #5868
- Defer error serialization by @sellout in #5869
- Add message when pulling to indicate from and to causal hashes. by @ChrisPenner in #5870
- Rename BigInt and BigNat to Integer and Natural by @runarorama in #5871
- allow deleting while resolving an upgrade failure by @mitchellwrosen in #5872
- Add Codex notes for mcp.md by @bbarker in #5873
- add more restrictive project name check by @mitchellwrosen in #5862
- fix bad transcript caching and syntax error in mcp.md by @aryairani in #5879
- silence typechecking output after merge failure by @mitchellwrosen in #5874
- make $MERGED absolute by @mitchellwrosen in #5882
- Add a few new aliases by @ChrisPenner in #5881
- delete namespace.dependencies by @mitchellwrosen in #5865
- Add a second type of profile that samples after wakeup by @dolio in #5883
Full Changelog: release/0.5.47...release/0.5.48
release/0.5.47
What's Changed
- Faster
update,diff, andmerge. - Support a few more TLS operations.
All PRs Since Last Update
- consolidate timing helpers by @mitchellwrosen in #5847
- Sanity check Cabal build by @sellout in #5827
- Fix CI
download-artifact“unknown input” warning by @sellout in #5851 - improve
updateperformance by @mitchellwrosen in #5849 - Don’t override hashtables version in stack.yaml by @sellout in #5855
- add some new builtins for TLS by @stew in #5854
- tweak: don't bother synhashing when synhashes would be the same by @mitchellwrosen in #5718
Full Changelog: release/0.5.46...release/0.5.47
release/0.5.46
What's Changed
- An important fix to code deserialization for arrays and maps
- Several type checking fixes
- Several new builtins (pinned byte arrays, little-endian reads)
All PRs Since Last Release
- Add YAML frontmatter support to transcripts by @sellout in #5824
- Treat
{g}asgin kind checker'slookupTypeby @dolio in #5831 - Add to an error message to address issue #5722 by @dolio in #5830
- Handle case where a handler's type is an existential variable by @dolio in #5834
- Add pinned byte array builtin by @runarorama in #5832
- Use full type when reporting a mismatch error by @dolio in #5833
- Attempt a couple type error improvements by @dolio in #5837
- Missing transcript update from #5837 by @dolio in #5838
- Add little-endian reads for byte arrays by @runarorama in #5836
- Clean up pinned buffer socket/handle reads by @runarorama in #5841
- Share http clients in transcripts by @ChrisPenner in #5840
- Handle
ArrandMapcases inblitLinksby @dolio in #5846 - Add some missing instances for a Share client by @ChrisPenner in #5845
Full Changelog: release/0.5.45...release/0.5.46