Releases: unisonweb/unison
Development Build (trunk)
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
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