Releases: unisonweb/unison
Development Build (trunk)
Merge pull request #5964 from unisonweb/25-10-16-run-warn disallow `run` if an update is required
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
release/0.5.45
What's Changed
- New 
ucm transcript.in-placeshell sub-command which modifies the codebase. (normallyucm transcriptcreates a new codebase.) - New 
lib.install.localcommand allows you to install a different local project or branch as a dependency in your current project. A snapshot is installed; it won't automatically be updated over time. - You can set the environment variable 
UNISON_MIGRATION=autoto not prompt on startup before doing a migration. Nice for scripts. - Improved thread fairness in the Unison runtime.
 - Transcripts can omit the 
project/branchfrom the prompt. If omitted, it will just continue to be set as it would in UCM. (See #5826 for details) - Fixed a bug that was preventing code loading.
 - Improved an error message when an ability variable can't be solved.
 - Added an MCP server into UCM itself via the 
ucm mcpcommand. See https://github.com/unisonweb/unison/blob/trunk/docs/mcp.md for details. 
All PRs Since Last Release
- Rework new serialization to be based on explicit numberings. by @dolio in #5818
 - Don't call codebase getTypeOfTerm with non-codebase refs by @ChrisPenner in #5817
 - Add 
transcripts.in-placeby @ChrisPenner in #5819 - Add Env var to skip migration prompt by @ChrisPenner in #5822
 - Insert yields into the interpreter to improve fairness by @dolio in #5820
 - Add lib.install.local by @ChrisPenner in #5823
 - Integrated MCP server by @ChrisPenner in #5775
 - Parse UCM commands without an explicit context by @sellout in #5826
 - Remove 1 of 2 remaining 
ORMOLU_DISABLEpragmas by @sellout in #5828 - Adds Http Stream Server for MCP by @ChrisPenner in #5788
 - Fix loading of certain version 5 serialized values by @dolio in #5829
 - Improve an error message when an ability variable can't be solved. by @dolio in #5825
 
Full Changelog: release/0.5.44...release/0.5.45
release/0.5.44
What's Changed
- More streamlined output after type checking a scratch file
 - Fix an issue that was causing a crash in code serialization
 - Add builtins to efficiently switch between 
BytesandBytesArray 
All PRs since last release
- A couple minor serialization improvements by @dolio in #5810
 - Add transcript test for avro optimization by @runarorama in #5811
 - Add builtins for 
BytestoByteArrayand back by @runarorama in #5812 - Refactor some intermediate and serialization code by @dolio in #5814
 - Unify normal slurp output with update-branch slurp output by @mitchellwrosen in #5816
 
Full Changelog: release/0.5.43...release/0.5.44
release/0.5.43
What's Changed
✨ Updated update workflow: ✨
The update workflow has gotten more sophisticated.  An incomplete update will create a new "update" branch for you to finish it up in; anything deleted from the scratch file at this stage will be omitted from the final result; an easy way to achieve that was an important capability we were missing.
Once you get your scratch file into good shape and issue a successful update from an "update" branch, the results will be merged back into your working branch, and delete the temporary "update" branch.
Other goodies and changes:
- Tab-completion is available for Share project/branches/releases on 
clone/pull/push/lib.install. - A bugfix results in 30% faster downloads from Unison Share .
 - We removed the JIT runtime (
run.native,compile.native) as we've decided to double down on techniques to improve the interpreted runtime. - We merged some performance and other improvements to code serialization.
 - We removed the deprecated 
Docsyntax.[: blah blah :] 
All PRs Since Last Release
- Revert hpack version comment from 0.37.0 to 0.36.0 by @ceedubs in #5780
 - Change slurp output to just say "New definitions:" by @pchiusano in #5784
 - Use 
threadCPUTimein affine handler benchmark transcript by @dolio in #5787 - Remove duplicated hpack file by @sellout in #5791
 - Add check-and-set when running branch updates by @ChrisPenner in #5785
 - Add instructions for updating the Nix cache by @sellout in #5795
 - Have CI check for diffs after integration tests by @sellout in #5798
 - nix flake: add aarch64-linux as supported platform by @ceedubs in #5786
 - Delete errant output.md files by @sellout in #5797
 - Remove old 
Docsyntax by @sellout in #5794 - Fix inverted "should Validate" by @ChrisPenner in #5783
 - Revert "Have CI check for diffs after integration tests" by @aryairani in #5801
 - don't use 
actions/cacheto share artifacts between jobs by @aryairani in #5804 - Performance and other improvements to serialization by @dolio in #5803
 - Revert "Revert "Have CI check for diffs after integration tests"" by @aryairani in #5802
 - remove references to the jit native runtime by @aryairani in #5805
 - Adds tab-completion for Share project/branches/releases on clone/pull/push/lib.install by @ChrisPenner in #5782
 - Try to make the affine-handlers transcript less subject to timing hiccups by @dolio in #5806
 - Some fixes for the new serialization by @dolio in #5807
 - Add Avro-decoder builtin and replacement function by @runarorama in #5799
 - make update v2 the default by @aryairani in #5809
 
Full Changelog: release/0.5.42...release/0.5.43
release/0.5.42
What's New
Features and new behavior:
- New 
list-fuzzy/lsfcommand allows you to quickly skim a project's namespaces usingfzf, and list one upon selection. - New 
branch.squashcommand copies the current branch, but with a collapsed history. addandupdateare the same command now.- On name resolution failure, UCM now suggests similar names, (Thanks @xmbhasin!)
 edit.namespacenow includes.as its topfzfsuggestion.- We added tab-completion and 
fzfcompletion for file arguments. - Releases will include linux-arm64 builds going forward.
 
Experimental:
- Setting the 
UNISON_USE_UPDATE_V2environment variable enables a new workflow forupdate, which puts you into a new branch to complete theupdate, analogous to themergecommand. More details at #5710. 
Speedups:
- Lots of work to improve ability handler optimizations. (read more here)
 - Faster 
mergestartup. 
Fixes:
- The scratch file watcher behaves more predictably.
 upgradeavoids ending up with__2names in some cases- The transcript runner no longer bombs if 
ucmis open due to ports being in use. - Runtime panics can produce better error messages.
 backno longer fails due to navigating to a deleted branch.- Fixes a runtime issue involving nested lambdas
 
All PRs Since Last Release
- perf: fetch unique type guids from merge parents more efficiently by @mitchellwrosen in #5713
 - bugfix: fix file watch buffering behavior by @mitchellwrosen in #5719
 - Include root namespace as option in fzf namespace args by @ChrisPenner in #5727
 - identify renames in merges by @mitchellwrosen in #5716
 - Fix a problem with floating w/r/t some enclosed terms by @dolio in #5730
 - tweak: amend file-watching logic to not toss events older than 1s by @mitchellwrosen in #5729
 - make 
addan alias ofupdateby @mitchellwrosen in #5705 - Support 'nicer' ways of writing affine handlers by @dolio in #5715
 - add more terms/types fields to branch object by @mitchellwrosen in #5725
 - Fix a bug in one of the new peephole optimizations by @dolio in #5731
 - hide ucm output in jit tests by @aryairani in #5735
 - windows 2019 -> 2022 by @ceedubs in #5732
 - Implement 
branch.squashby @ChrisPenner in #5696 - Fix affine handler transcript by @dolio in #5743
 - fix typo by @aryairani in #5739
 - Fix a variable capture during optimization. by @dolio in #5744
 - Relax a criterion for recognizing affine handlers by @dolio in #5745
 - adjust slurp output on update branches by @mitchellwrosen in #5711
 - add a dedicated tmate workflow by @aryairani in #5755
 - try bumping racket version to 8.17 to fix CI errors in windows-2022 by @aryairani in #5748
 - feat: make 
upgraderename a__Nsuffix by @mitchellwrosen in #5750 - Laxify code-server port binding by @ChrisPenner in #5754
 - Improve optimizer to recognize more affine handlers by @dolio in #5753
 - add a way to compare Tls sockets. by @stew in #5756
 - Fix some variable capture potential in the optimizations by @dolio in #5757
 - try replacing windows 2022 with 2025 by @aryairani in #5740
 - a manual transcript for some public tests by @aryairani in #5752
 - update unison racket lib if not already installed by @aryairani in #5760
 - i guess new racket includes libb2 by @aryairani in #5761
 - ors instead of ands by @aryairani in #5762
 - overhaul 
updateflow by @mitchellwrosen in #5710 - Make bpoke(Off) strict in its closure argument by @dolio in #5763
 - Improve caught runtime panics in 
tryEvalby @dolio in #5759 - Try to improve errors during reflection by @dolio in #5766
 - add the arm runners everywhere by @aryairani in #5765
 - update transcripts by @aryairani in #5771
 - bugfix: make getProjectBranchRootCausal not fail if branch doesn't exist by @mitchellwrosen in #5770
 - bugfix: use old branch ppe when rendering deleted things by @mitchellwrosen in #5767
 - silence 
loadoutput for programmatically-generatedupdatefile activity by @mitchellwrosen in #5768 - update failed 
updateoutput by @mitchellwrosen in #5769 - add list-fuzzy / lsf command by @aryairani in #5773
 - bugfix: make 
backnot fail on deleted branch by @mitchellwrosen in #5772 - Revert change to trigger fzf on no-args ls by @ChrisPenner in #5758
 - Add tab-completion and fzf completion for file arguments by @ChrisPenner in #5776
 - Fix some variable naming problems with new optimizations by @dolio in #5778
 - Error Messages: on name resolution failure, suggest similar names by @xmbhasin in #5522
 - Small update to #5522 by @aryairani in #5779
 
Full Changelog: release/0.5.41...release/0.5.42
Development Build (arm-runners)
arm-runners-build please work