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