Releases: unisonweb/unison
Releases · unisonweb/unison
release/0.5.21
What's changed
Fun stuff 🎉
- This release introduces a much improved
merge
andpull
algorithm. The experience is similar toupdate
orupgrade
- if there are conflicts (or if the result doesn't typecheck), you are given a scratch file to get compiling. This is very new; let us know you run into any issues! - The new
upgrade.commit
command will merge and remove the temporary branch created during anupgrade
that required manual intervention. An analogousmerge.commit
will be in an upcoming release. - A new
lib.install
command replaces the use ofpull
for installing libraries. Usage:lib.install @unison/base/releases/latest
and usehelp lib.install
for details.
Important deprecations 🪦
- UCM can no longer
push
orpull
the old Git-based Unison codebases. Use UCM 0.5.20 or earlier to migrate them to Unison Share!
Lovely bugfixes 🐞
- A bug was causing
delete.namespace
to sometimes remove the last names for things without any warning. (4988) - A bug was causing some commands to work off of an out-of-date namespace. (5027)
find
followed bydocs <n>
would fail. (5012)dependents
followed bydelete <n>
would fail. (5019)- UCM would just complain if a scratch file it wanted to write to didn't exist. (4973)
auth.login
was invisible inhelp
. (5028)- The
ui
command couldn't find its data files when using theucm
launcher script included in manual installs. (5048)/(5050) - A bug caused hashes to be displayed in the LSP diagnostics. (#4960)
- LSP diagnostics were one change behind. (4957)
- The JIT version of
zlib.compress
on a >64k buffer. (4961)
All new PRs in this release
- Fix hashes in LSP diagnostic names by @ChrisPenner in #4960
- Update sqlite3 codebase before changing in-app values by @ChrisPenner in #4957
- feat: add
lib.install
command by @mitchellwrosen in #4953 - feat: better merge algorithm by @mitchellwrosen in #4910
- Fix jit
zlib-deflate
by @dolio in #4961 - Unison local Definition Diffs API by @ChrisPenner in #4964
- Definition Diff machinery by @ChrisPenner in #4766
- tweak: make upgrade-failed branch name more informative by @mitchellwrosen in #4974
- tweak: make
prependUtf8
create file if it doesn't exist by @mitchellwrosen in #4973 - feat: make
pull
call newmerge
instead of oldmerge
by @mitchellwrosen in #4966 - tweak: slightly improve
help lib.install
by @mitchellwrosen in #4972 - Remove unused incoming hashes event by @ChrisPenner in #4991
- improve
push
output by @mitchellwrosen in #4990 - Fix delete namespace dependents check by @ChrisPenner in #4998
- bugfix:
lib.install
couldn't install something from a project with a dash in its name, like@unison/uri-parser
by @mitchellwrosen in #4999 - update cachix actions to latest by @aryairani in #5001
- update workflows for lib.install by @aryairani in #5002
- Remove unused
Unison.Util.Convert
module by @sellout in #5005 - cleanup: delete a bunch of patch manipulation commands by @mitchellwrosen in #5008
- Repair the Nix flake by @sellout in #4923
- Add an EditorConfig config by @sellout in #5015
- Remove support for Git push/pull and gists by @ChrisPenner in #5013
- bug(?)fix: relax lca merge preconditions by @mitchellwrosen in #5020
- Avoid printing/parsing numbered args by @sellout in #4962
- Docs name by @sellout in #5012
- Remove
Reference
fromStructuredArgument
by @sellout in #5019 - Type the
main
arg toexecute
by @sellout in #5003 - make
auth.login
visible by @aryairani in #5028 - Update .mergify.yml by @aryairani in #5029
- feat: add
upgrade.commit
command by @mitchellwrosen in #4977 - improve merge precondition violation output messages by @mitchellwrosen in #5032
- only use iohk cache on linux by @aryairani in #5033
- Restrict
NameSegment
operations by @sellout in #5010 - Add a Nix formatter and run it by @sellout in #5035
- Remove flake-compat flake input by @sellout in #5037
- Fix branch invariants by @ChrisPenner in #5027
- Run Cabal test-suites as Nix checks by @sellout in #5036
- improve upgrade failure message by @mitchellwrosen in #5039
- tweak pull-related error messages by @mitchellwrosen in #5046
- pass --ui flag in default launcher by @aryairani in #5048
- Fix a few minor typos in InputPatterns.hs by @atroche in #5038
- Add a transcript illustrating that #1532 is fixed by @sellout in #5042
- the
--ui
flag conflicts with commands, liketranscript
by @aryairani in #5050
New Contributors
Full Changelog: release/0.5.20...release/0.5.21
release/0.5.20
What's Changed
Fun stuff 🎉
- This release includes a beta version of the Unison just-in-time/native runtime. You can try it by using the new
run.native
command in place of therun
command. Let us know if you have any issues! - Ahead-of-time native compilation to produce a standalone executable is coming soon. If you're running Linux, you can try this today using
compile.native
; Mac and Windows support are next. - @kylegoetz added an implementation of UDP networking, and @etorreborre added an implementation of RSA signing and signature verification. We'll be adding this functionality to
base
soon!
Important deprecations, please read
- The
cd
command and theup
command have gone away for maintenance, as they are not yet fully compatible with projects. In the mean time- we've added
find-in <path> <expression>
to replacecd <path>
+find <expression>
+back
- and added
test <path>
to replacecd <path>
+test
+back
. - In an emergency where you know what you're doing, you can still use
deprecated.cd
, and then come let us know what happened on Discord.
- we've added
- We are starting to deprecate non-project code, and with this release, you can no longer push to the non-project code area on Share. Check out the https://www.unison-lang.org/docs/tooling/projects-library-migration/ for help on converting your non-projects to projects. You can still pull non-project code from Share, but that will be going away soon too, so get busy :)
Under-the-hood fixes
- @upendra1997 submitted a color scheme adjustment which was causing some text to appear invisible for some users.
- The
builtins.merge
andbuiltins.mergeio
commands (which most people don't use or need) also accept an optional destination path now. - The decompiler output now supports immutable arrays, and partially-applied built-in functions.
- We fixed an issue in the LSP involving auto-completion and punctuation.
- The pretty-printer now prefers
do <expr>
in some cases where it previously printed'(<expr>)
. The'
syntax is still accepted. - We fixed an issue with backtracking in
Pattern.many
,Pattern.or
, andPattern.replicate
. - We made a tweak to the name-resolution rules, which were impacting type-directed name resolution.
All PRs since last release
- Update language-server.markdown for helix 23.10 by @bbarker in #4792
- Update nix development docs by @tstat in #4793
- Disable hoogle in haskell-nix shell by @ceedubs in #4795
- Fix auto-completion's treatment of paths by @ChrisPenner in #4791
- figure out windows CI issue by @aryairani in #4797
- Prefer
do
instead of'
in pretty-printer by @pchiusano in #4796 - add a sentence distinguishing reusable workflows and composite actions by @aryairani in #4803
- move
stack
install to composite action by @aryairani in #4798 - build test and bench dependencies with "build dependencies" by @aryairani in #4799
- split off ormolu task by @aryairani in #4800
- Update cabal.project by @ceedubs in #4794
- Fix many pattern not backtracking by @dolio in #4790
- Fix up uses of typelinks in the jit by @dolio in #4810
- bugfix: tweak name priority for tdnr by @mitchellwrosen in #4808
- Add missing builtin links to unison/data and /boot by @dolio in #4814
- see if this fixes the haddocks workflow by @aryairani in #4812
- trying to fix
pre-release.yaml
by @aryairani in #4815 - clean up release workflows (no jit yet) by @aryairani in #4804
- fixup re haddocks which is weird and only gets tested on merge to trunk by @aryairani in #4816
- fix up refs for release builds by @aryairani in #4819
- accept
stack.yaml
dir as input to stack caching by @aryairani in #4820 - fix surprise invalid string by @aryairani in #4821
- Improve kind inference docs by @tstat in #4822
- A few jit nimbus related fixes/tweaks by @dolio in #4823
- Neglected to update ci.yaml for jit by @dolio in #4825
- Fix a bug in the jit's runtime code caching operation by @dolio in #4826
- move stack actions to dedicated repo by @aryairani in #4824
- haddocks workflow: git config needed before commit by @aryairani in #4827
- Update pre-release.yaml download to match upload by @aryairani in #4831
- Give a more informative error for miscellaneous try-eval by @dolio in #4832
- add github.ref to prerelease workflow name by @aryairani in #4833
- that did not work by @aryairani in #4834
- split TH parts of unison-cli into unison-cli-main by @aryairani in #4829
- Fix conversion from referent2to1 for Doc fuzzyfind results by @ChrisPenner in #4840
- hide
run.native
andcompile.native
until release by @aryairani in #4842 - Flesh out jit universal comparison by @dolio in #4841
- actually do jit release stuff by @aryairani in #4828
- tweaks for jit packaging by @aryairani in #4845
- Split corrected many pattern into two patterns by @dolio in #4846
- Fix an issue with rehashing and scratch files by @dolio in #4847
- Fix some inconsistencies in the time functions in the jit by @dolio in #4849
- add quotes around path to
ucm
by @aryairani in #4862 - try retrieving runtime tests from Share by @aryairani in #4857
- merge unison-cli:lib and unison-cli:lib:unison-cli-lib by @mitchellwrosen in #4860
- split off transcripts and interpreter tests to separate jobs by @aryairani in #4865
- bugfix: don't go looking for field names of a hash-only decl by @mitchellwrosen in #4818
- Some jit fixes for cloud tests by @dolio in #4864
- restore git user setup for transcripts test by @aryairani in #4866
- chore: remove repetitive words by @guqicun in #4867
- Updates for Share diffs feature by @ChrisPenner in #4870
- install linux libb2 on build or test by @aryairani in #4874
- Check the exit code during native evaluation by @dolio in #4869
- Upgrade jit share dependency to fix link validation by @dolio in #4876
- Adds the scheme-libs hash to the cache keys for jit binaries and jit runtime test results by @aryairani in #4889
- Decompile partially applied builtin functions by @dolio in #4888
- Deprecate pushing loose code from UCM by @ChrisPenner in #4890
- Add docker image to nix outputs by @ceedubs in #4891
- Use a socket to communicate with the jit runtime process by @dolio in #4887
- Try define-runtime-path for libb2 by @aryairani in #4892
- Allow decompilation of arrays by @dolio in #4895
- Fix duplicate definitions in jit when using scratch files by @dolio in #4897
- Tweak crypto ffi for better dependencies by @dolio in #4900
- try libb2-1 instead of libb2-dev by @aryairani in #4901
- deprecate
cd
,up
; addfind-in
by @aryairani in #4883 - re-merge #4883 by @aryairani in #4903
- transcripts
mergeio
cleanup by @aryairani in #4885 - add an optional destination path to
builtins.merge{,io}
by @aryairani in #4886 - Merge in 3 by @aryairani in #4905
- rename job in ci-test-jit.yaml by @aryairani in #4906
- Add Ed25519 to racket crypto.rkt by @jaredly in #4902
- Add history lines AFTER numbered arg and fzf expansion by @ChrisPenner in #4907
- Jit eror ci fixes by @aryairani in #4917
- Fix representation mismatches w...
release/0.5.19
What's changed
upgrade
now allows library authors to repurpose names for a different definition, without breaking any downstream users. That is, you can rename a definition, then add a new definition with the original name but new behavior, without forcing library users to update to the new definition when theyupgrade
. #4720- Fixes an annoying issue where record types weren't being printed as records (reported and fixed by @runarorama)
- Improves speed of
merge
via a faster ancestry check to find the LCA. - Greatly improves the error message when the scratch file fails to even parse.
- Improves error messages and type inference for
match
statements (now, if the type of the overallmatch
is known, that information is pushed down into the branches of thematch
, which behaves more nicely)
We've also made improvements and fixes to the new just-in-time native compiler, though the feature is still not quite ready for general use.
All PRs since last release
- Update release-steps.md by @aryairani in #4739
- tweak: make upgrade not touch things that exist in new dep by @mitchellwrosen in #4720
- updated third-party-facing Slack to Discord refs by @kylegoetz in #4743
- Fix a variable capture issue during let floating by @dolio in #4756
- Fix field accessors not showing up in
view
in some cases by @runarorama in #4752 - Allow tuning sync config with env vars by @ChrisPenner in #4767
- Vastly speed up ancestry check by not re-crawling duplicate histories. by @ChrisPenner in #4753
- Rework racket based runtime/compilation by @dolio in #4675
- Push type checking through match statements by @dolio in #4768
- fix default path for
unison-runtime
by @aryairani in #4774 - YAML: try changing ormolu commit conditions by @aryairani in #4775
- Create ormolu.yaml by @aryairani in #4776
- Minor JIT fixes by @dolio in #4779
- Fix builtin link reflection in jit by @dolio in #4785
- Better error messages for generic parser failures by @ChrisPenner in #4788
- fix condition on ormolu manual workflow by @aryairani in #4778
- autoformat aryairani-patch-4 by @github-actions in #4784
New Contributors
- @github-actions made their first contribution in #4784
Full Changelog: release/0.5.18...release/0.5.19
release/0.5.18
What's changed
- Definitions in operator subnamespaces (like
List.++.doc
) now round-trip. - Builtin support for Ed25519 signatures.
All PRs since last release
- Update CI badge in README.md by @aryairani in #4710
- stop forgetting to ping
@everyone
for new releases by @aryairani in #4700 - add export list to
Unison.Codebase.Metadata
by @aryairani in #4712 - Update copyright by @aryairani in #4718
- remove metadata types from the in-memory branches by @aryairani in #4714
- remove metadata types from the in-memory branches by @aryairani in #4719
- Backticky symbol parsing by @mitchellwrosen in #3525
- Ed25519 builtins for Haskell by @dolio in #4717
- Enable Hash Validation in UCM by @ChrisPenner in #4716
- Local Hash Validation fixups by @ChrisPenner in #4694
- Ensure we tag latest trunk for releases by @ChrisPenner in #4721
Full Changelog: release/0.5.17...release/0.5.18
release/0.5.17
What's Changed
- Fix Folding Ranges by @ChrisPenner in #4674
- Add tab-completion and fzf for upgrade command by @ChrisPenner in #4677
- Add Name ToJSONKey instance by @ChrisPenner in #4679
- Add parens to annotation of lexed symboly segments by @ChrisPenner in #4689
- Disable lsp-formatting by default, opt in via
--lsp-format
flag by @ChrisPenner in #4691
Full Changelog: release/0.5.16...release/0.5.17
release/0.5.16
What's Changed
- Add Explicit Export Lists for Modules that involve Parsing by @setupminimal in #2664
- update release template, urls and discord syntax by @aryairani in #4663
- Add message for share hash mismatch by @ChrisPenner in #4665
- Allow multi-line bold, italics, and strikethrough by @ChrisPenner in #4670
- Fix formatting on handle-with blocks by @ChrisPenner in #4671
New Contributors
- @setupminimal made their first contribution in #2664
Full Changelog: release/0.5.15...release/0.5.16
release/0.5.15
What's Changed
New features:
- LSP support for "format file" / "format selection" / "format on save"
- New
edit.namespace
command, see here for example usage (reported by @ceedubs)
Bug fixes:
- Better tab-completion of branch-relative paths
- Nicer errors when type-directed name resolution fails (reported by @hojberg)
- Fixed bug when parsing docs for a
unique type
withunique
omitted (reported by @hojberg) - Fixed an indentation issue in Docs that was causing parse failures (reported by @alvaroc1)
- Fixed a bug with
use
and names starting with_
(reported by @alvaroc1) - Fixed raw text-block indentation (reported by @SystemFw)
- Fixed an issue where
''string''
and then fails to parse ifstring
contains'
(reported by @SystemFw) - Fixed a type-checking bug where local functions were not generalized (reported by @SystemFw)
- Fixed a
Set.findMin: empty set has no minimal element
bug onupdate
(reported by @alvaroc1) - UCM now deletes a remote branch mapping when a push fails because the branch doesn't exist.
Speed-ups:
- LSP no longer preloads names for the entire codebase
docs.to-html
no longer preloads names for the entire codebase
All PRs since last release:
- Changes to UCM for PG Share by @ChrisPenner in #4608
- LSP Format support by @ChrisPenner in #3460
- define IMAGE_NAME for the docker build step by @stew in #4629
- use relative paths in Dockerfile by @stew in #4630
- remove docker from relelase by @stew in #4631
- Add
edit.namespace
command by @ChrisPenner in #4535 - Fix special case for type doc in lexer by @ChrisPenner in #4635
- Support tab-completion of branch relative paths by @tstat in #4636
- Fix for doc formatter by @ChrisPenner in #4637
- Don't implicitly close transclude blocks by @tstat in #4643
- Make errors nicer when TDNR fails by @runarorama in #4641
- Local definition generalization and possible TDNR improvement by @dolio in #4642
- Delete invalid remote mappings on push by @tstat in #4648
- LSP startup time speedup and CWD fix by @ChrisPenner in #4647
- Speed up docs.to-html by not using root-branch by @ChrisPenner in #4650
- Fix parsing bug involving
use
and underscore-prefixed names by @tstat in #4654 - Fix raw text-block indentation by @ChrisPenner in #4655
- Add
debug.term
debug.type
for debugging by @ChrisPenner in #4653 - Default to single-quotes by @ChrisPenner in #4659
- Fix bug in
update
by @tstat in #4661
Full Changelog: release/0.5.14...release/0.5.15
release/0.5.14
What's changed:
- We've implemented the first stage of getting rid of “metadata”.
link
,links
, andunlink
commands go away.- “default metadata” is no longer applied from your config file on
add
, nor copied onupdate
. diff.namespace
doesn’t report anything about metadata. Note that we used to rely on metadata to exclude uninteresting changes from a diff. That already doesn’t work with the newupdate
process, but we will fix this again eventually.
- Types are now
unique
by default, if neitherunique
norstructural
is specified.unique
is also left off when viewing the code for a unique type (reported by @ceedubs and others) fork
now lets you refer to paths in other branches usingproject/branch:path
syntax. Other commands will support this soon, at which point you hopefully won’t need to go outside of projects for scratch space anymore.- UCM no longer searches the global namespace for names not present in or below your current namespace. The upshot is that many commands will complete much more quickly, but you will now see hashes where you would currently see a crazy out-of-scope name. But you wanted to fix that name anyway.
- This situation is particularly likely when you are
cd
ed deeper into your project, into a subnamespace that isn’t completely self-contained, we’re looking into solutions to this.view.global
,names.global
, andnamespace.dependencies
will still do a global search. view and display will use the global names if provided an absolute argument.
- This situation is particularly likely when you are
- upgrade command now tells you what file to edit (reported by @stew)
edit
and other commands which modify your scratch file now uniformly produce output in transcript output.md files. It will show up in an```unison:added-by-ucm <filename.u>
code block.- Fixed an issue where numbered args unexpectedly got cleared (reported by @ceedubs)
- Fixed an issue where sub-types of
Doc
and[Test.Result]
showed up on Share as Docs and Tests when they shouldn’t have. - Fixed an issue where
update
/upgrade
produced a scratch file that ambiguously referred to aliases in a way that couldn’t typecheck. - Globbing (
view foo.?
) went away; you probably won’t notice. The improvedfzf
support introduced in 0.5.13 is nicer anyway.
All PRs since last release
- cleanup: remove a bunch of metadata-related code by @mitchellwrosen in #4574
- don't call M releases the latest by @aryairani in #4538
- Unorsk/unique as default type modifier by @unorsk in #4557
- add "update transcripts" workflow by @aryairani in #4584
- remove irrelevant
changed-files
step from update-transcripts-workflow by @aryairani in #4585 - feat: mention the name of the file we put failed upgrades in by @mitchellwrosen in #4571
- Remove UCM globbing as a feature by @ChrisPenner in #4595
- bugtweak: make suffixification a little worse when rendering unison files via update/upgrade by @mitchellwrosen in #4589
- add CI reminder to commit message by @aryairani in #4588
- Don't display definitions in console output for
edit
(and new transcript outputs to replace it) by @ChrisPenner in #4576 - Don't do file IO in
OutputMessages
for upgrade/update by @ChrisPenner in #4577 - Don't replace numbered args list with an empty one. by @ChrisPenner in #4603
- bugfix: fix upgrade suffixifier by @mitchellwrosen in #4605
- Push docker images to github when we release by @stew in #4599
- Exports for Share migration to Postgres by @ChrisPenner in #4338
- Exact match on term types when determining whether doc or test. by @ChrisPenner in #4408
- change pre-release tag name again to
trunk-build
by @aryairani in #4612 - feat: better suffixification in update and upgrade by @mitchellwrosen in #4613
- Add decl verification by @ChrisPenner in #4381
- Huge speedup to startup time by leveraging branch cache by @ChrisPenner in #4617
- Allow forking between projects/branches by @tstat in #4615
- Scope all commands to current namespace (no global fallbacks for names or PPE) by @ChrisPenner in #4579
- Improve fork output and input description by @tstat in #4622
- Lex wordy/symboly identifiers into names, not strings by @mitchellwrosen in #3720
Full Changelog: release/0.5.13...release/0.5.14
release/0.5.13
Fixed these bugs:
add.run
CallStack error issue on 0.5.11 (reported by @rlmark)- Feedback when a scratch file change is picked up (reported by @ceedubs)
- speed up
find
, by eliminating historical name search (reported by @stew and others)- may show a few more hashes than previously; you can use
names.global <hash>
to investigate the name, and thenalias.term
oralias.type
to create a name in your branch.
- may show a few more hashes than previously; you can use
- extend
fzf
support to all required arguments (multiply reported by @ceedubs) Nat.fromHex
fails for some input when it is a substring of larger Text (reported by @hagl)- Baffling error messages when using
/
instead ofFloat./
(reported by @stefanholzmueller) - update issue with sum type, adding a new type constructor (reported by @kylegoetz)
All PRs since last release
- Adding a message for when ucm started reloading changes by @unorsk in #4540
- Fix TDNR bug by @tstat in #4558
- Use explicit 'writeSource' method when writing back to scratch files from UCM by @ChrisPenner in #4541
- Bump lsp lib and handle trace notifications by @ChrisPenner in #4372
- cleanup: dont use NamesWithHistory by @mitchellwrosen in #4566
- Bump tj-actions/changed-files from 37 to 41 in /.github/workflows by @dependabot in #4552
- bugfix: make addDefinitionsToUnisonFile not strip decl names from constructors by @mitchellwrosen in #4559
- FZF on argument types by @ChrisPenner in #4519
- update the name of the pre-release build again by @aryairani in #4565
- refactor: delete NamesWithHistory by @mitchellwrosen in #4569
- Improve error messages on un-resolvable fuzzy command invocations by @ChrisPenner in #4573
Full Changelog: release/0.5.12...release/0.5.13
release/0.5.12
What's Changed
- new
io.test.all
command runs all the IO tests in your namespace - new
rename
command, is the same asmove
namespace.dependencies
now ignoreslib
. You cancd
intolib
and run it there if you are curious about the state of your libraries.- auto-completion improvements for many project commands
- several bugfixes
All PRs since last release
- io.test.all by @ChrisPenner in #4507
- make
namespace.dependencies
ignorelib
by @mitchellwrosen in #4509 - Partial implementation for native execution/compilation via a standalone executable by @dolio in #4511
- Better project-branch completion for many project commands by @ChrisPenner in #4513
- add
rename
as an alias formove
by @aryairani in #4523 - don't
isTest
-check entiredeepTerms
onview
/edit
by @ChrisPenner in #4520 - bugtweak: force result of
synthesizeForce
earlier by @mitchellwrosen in #4530 - update the name of the pre-release build by @aryairani in #4508
- bugfix: make
run
able to run things that don't return builtins by @mitchellwrosen in #4533 - fix "branch already exists" error message to show project, too by @mitchellwrosen in #4505
- Fix bug in
Bytes.fromBase16
when chunks have an odd size by @runarorama in #4529
Full Changelog: release/0.5.11...release/0.5.12