Releases: unisonweb/unison
Development Build (trunk)
trunk-build Merge pull request #5906 from unisonweb/project-name
release/0.5.49
What's Changed
-
Setting the
UNISON_DEBUG
variable withTIMING
now displays runtimes for individual tests when usingtest
. -
Setting the
UNISON_DEBUG
variable withTESTS
now 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 incompleteupgrade
supports deletions. That's a little different from before, so be careful while you get used to it!undo
is 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
ls
output now end in.
instead of/
- There are a few new command aliases:
lib.install
can be run asinstall.lib
or justinstall
lib.upgrade
can be run asupgrade.lib
or justupgrade
namespace.dependencies
command 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 incompleteupgrade
supports deletions.
That's a little different from before, so be careful while you get used to it!undo
is 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
ls
output now end in.
instead of/
- There are a few new command aliases:
lib.install
can be run asinstall.lib
or justinstall
lib.upgrade
can be run asupgrade.lib
or justupgrade
namespace.dependencies
command 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
update
performance 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}
asg
in kind checker'slookupType
by @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
Arr
andMap
cases inblitLinks
by @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-place
shell sub-command which modifies the codebase. (normallyucm transcript
creates a new codebase.) - New
lib.install.local
command 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=auto
to not prompt on startup before doing a migration. Nice for scripts. - Improved thread fairness in the Unison runtime.
- Transcripts can omit the
project/branch
from 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 mcp
command. 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-place
by @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_DISABLE
pragmas 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
Bytes
andBytesArray
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
Bytes
toByteArray
and 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
Doc
syntax.[: 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
threadCPUTime
in 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
Doc
syntax 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/cache
to 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
/lsf
command allows you to quickly skim a project's namespaces usingfzf
, and list one upon selection. - New
branch.squash
command copies the current branch, but with a collapsed history. add
andupdate
are the same command now.- On name resolution failure, UCM now suggests similar names, (Thanks @xmbhasin!)
edit.namespace
now includes.
as its topfzf
suggestion.- We added tab-completion and
fzf
completion for file arguments. - Releases will include linux-arm64 builds going forward.
Experimental:
- Setting the
UNISON_USE_UPDATE_V2
environment variable enables a new workflow forupdate
, which puts you into a new branch to complete theupdate
, analogous to themerge
command. More details at #5710.
Speedups:
- Lots of work to improve ability handler optimizations. (read more here)
- Faster
merge
startup.
Fixes:
- The scratch file watcher behaves more predictably.
upgrade
avoids ending up with__2
names in some cases- The transcript runner no longer bombs if
ucm
is open due to ports being in use. - Runtime panics can produce better error messages.
back
no 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
add
an alias ofupdate
by @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.squash
by @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
upgrade
rename a__N
suffix 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
update
flow by @mitchellwrosen in #5710 - Make bpoke(Off) strict in its closure argument by @dolio in #5763
- Improve caught runtime panics in
tryEval
by @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
load
output for programmatically-generatedupdate
file activity by @mitchellwrosen in #5768 - update failed
update
output by @mitchellwrosen in #5769 - add list-fuzzy / lsf command by @aryairani in #5773
- bugfix: make
back
not 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