Releases: unisonweb/unison
release/0.5.25
What's Changed
- Non-project code has been migrated to a project called
legacy
(or similar, if that name was already taken)- absolute paths are now relative to the root of your project.
- more commands now accept paths/names from other branches in the form
/branch:path.in.project
- new reflog commands:
reflog
/branch.reflog
/reflog.branch
shows the changes for the current branchproject.reflog
/reflog.project
shows changes to any branches in the current projectreflog.global
shows changes across all projectsdeprecated.root-reflog
will show the reflog you had prior to the migration.
reset #hash
can be used to reset the current branch to the hash you got from one of the reflog commands.undo
rewinds one node of history on the current branch, and will no longer cause any corruption or weirdness 😅🎉
- We replaced our custom pseudo-markdown parser for transcripts with a better, off-the-shelf one
- Misc message and speed improvements
All PRs since last release
- Nix support for GHC upgrade by @sellout in #5155
- Replace transcript parser with
cmark
by @sellout in #5204 - Use pretty text in MsgTrace case of debug toText by @dolio in #5210
- Project Roots by @ChrisPenner in #5041
- Remove
NoSync
versions of root branch primitives by @ChrisPenner in #5057 - Use builtin reference names in foreign decompiling by @dolio in #5216
- Fix unused binding annotations by @ChrisPenner in #5218
- Keep most recent path and branches through migration to version 17 by @ChrisPenner in #5220
- Don't evaluate the unison file if there are no watch expressions. by @ChrisPenner in #5223
- Speed up watch expression eval by @ChrisPenner in #5226
- Merge newest trunk in "Upgrade to LTS 22.26 GHC 9.6.5" by @neduard in #5224
- Upgrade to LTS 22.26 GHC 9.6.5 by @ChrisPenner in #5142
- Pin Haskell tool versions for VS Code by @sellout in #5228
- Silence some Stack complaints by @sellout in #5231
- Avoid duplicating YAML info in Markdown by @sellout in #5227
- Support native compilation on non-GNU Unix systems by @neduard in #5237
- Reformat all Haskell code by @sellout in #5239
- Remove now-unused sync types by @ChrisPenner in #5230
- Add cachix to the Nix devShell by @sellout in #5233
- Refactor transcript parser by @sellout in #5235
- Document Nix cache configuration by @sellout in #5232
- Remove reset-root, fix docs for reset by @ChrisPenner in #5243
- Update JIT generation template in ci.yaml by @neduard in #5240
- branch.reflog -> reflog by @ChrisPenner in #5244
Full Changelog: release/0.5.24...release/0.5.25
release/0.5.24
What's Changed
- fix an issue with
merge
that cause false positives for conflicts (#5194) - updated
todo
command to show issues with the current branch - add numbered results to
test
,io.test
andio.test.all
- improve various CLI command error messages
- fix an LSP issue with hovering over names ending in
!
- improve LSP completion sorting
- add unused binding warnings to the LSP
All PRs Since Last Release
- fix: fix the textual representation of an ordinal number by @etorreborre in #5135
- feat: add
alias.term.force
by @mitchellwrosen in #5118 - port old merge transcripts by @mitchellwrosen in #5138
- Add numbered results to
test
,io.test
, andio.test.all
by @sellout in #5140 - feat: add debug.alias.type.force by @mitchellwrosen in #5139
- Group test results by definition by @sellout in #5144
- Use projects in transcripts by @ChrisPenner in #5078
- JIT Infrastructure for continuation serialization by @dolio in #5152
- don't output nothing when there's nothing to do by @mitchellwrosen in #5147
- port old merge transcripts by @mitchellwrosen in #5146
- refactor: merge unison-util-nametree into unison-core1 by @mitchellwrosen in #5174
- Include trailing '!' in identifier names for hover by @ChrisPenner in #5175
- Port more transcripts to projects by @ChrisPenner in #5172
- Improve various CLI command error messages by @sellout in #5054
- move pretty-print helpers out of CommandLine.hs by @aryairani in #5180
- Improve LSP completion sorting by @ChrisPenner in #5182
- fix merge error, and use
makeExample
more by @aryairani in #5185 - Adds unused binding warnings to the LSP by @ChrisPenner in #5186
- Unused binding detection cleanup by @ChrisPenner in #5188
- avoid numeric vs textual clash in args length error by @aryairani in #5192
- bugfix: synhash var debruijn indices, not names by @mitchellwrosen in #5194
- Use
SyntaxText.Unit
as style forfoo()
by @pchiusano in #5195 - feat: report merge precondition violations in
todo
by @mitchellwrosen in #5177
Full Changelog: release/0.5.23...release/0.5.24
release/0.5.23
What's changed
- fixes
sleep
bug in Unison programs #3957 - fixes regression with
switch
- updates
todo
command, now prints name conflicts, one level of missing names, and usages oftodo ...
in your project - fixes
merge
bug which silently created unnamed dependencies #5092 - fixes
merge
bug involving constructor deletion - fixes ability list roundtrip bug #4683
- fixes doc round trip bugs #4476, #4729
- supports
docs.to-html
at the branch root, using the same syntax as thefork
command - hides patches from
ls
as part of their continuing deprecation - fixes typechecking bugs #5129, #3513
!foo
now renders asfoo()
in Unison source
All PRs since last release
- Update ormolu.yaml by @aryairani in #5103
- Update ormolu.yaml by @aryairani in #5104
- Implement custom Word64 delay by @dolio in #5102
- updating tj-actions/changed-files to v44 by @aryairani in #5105
- bugfix: switch to most recent branch by @mitchellwrosen in #5100
- bugfix: merge involving constructor deletion by @mitchellwrosen in #5110
- Remove the
Convert
andParse
type classes by @sellout in #5115 - Improve Haddock for
Path
andName
by @sellout in #5109 - drop branch filter for CI runs by @aryairani in #5113
- bugfix: don't emit virtual semis inside { or [ by @mitchellwrosen in https://github.com//pull/5117
- Fix roundtrip bug when sub-docs contain headings by @neduard in #5120
- Fix roundtrip bug in Bytes.splitAt.doc by @neduard in #5121
- Support branch-relative paths for
docs.to-html
by @sellout in #5111 - Improve some lexer error messages by @sellout in #5108
- feat: hide patches from ls output by @mitchellwrosen in #5123
- feat: (partially) revamp todo by @mitchellwrosen in #5107
- add transcript that demonstrates bug in merge by @mitchellwrosen in #5130
- Prefer
foo()
to!foo
by @pchiusano in #5114 - GHC 964 Fixes by @neduard in #5106
- Don't relax type when doing an instantiateL during subtyping by @dolio in #5133
- feat: show dependents of
todo
(builtin) intodo
(command) output by @mitchellwrosen in #5124
Full Changelog: release/0.5.22...release/0.5.23
release/0.5.22
What's Changed
Features:
-
new command
merge.commit
(analogous toupgrade.commit
). UCM will remind you about it when you run themerge
command. -
ucm transcript
now auto-creates a projects given in the transcript prompt:Using `project.create-empty` not necessary in this transcript: ```ucm demo-project/main> ls ```
Fixed Bugs:
ls
wasn't working right with numbered argsedit.namespace
was printing record accessors as standalone definitionspush
error messages were previously not being displayed- updating and deleting aliases erroneously tripped “conflicted alias” error during
merge
- improved some error messages for
push
&merge
All PRs since last release
- format
trunk
with ormolu 0.5.2.0 by @github-actions in #5051 - Convert
ShallowListEntry
inInputPattern
handlers by @sellout in #5056 - Improve
ls
with numbered arg behavior by @sellout in #5061 - bugfix: show
push
error messages by @mitchellwrosen in #5065 - bugfix: updating and deleting aliases erroneously tripped "conflicted alias" merge precondition by @mitchellwrosen in #5067
- tweak: make
edit.namespace
not render record accessors by @mitchellwrosen in #5068 - Create issue templates by @aryairani in #5064
- Update merge precondition message: Conflicted aliases by @aryairani in #5070
- fix conflicted alias message 2 by @aryairani in #5071
- Auto-create project-branches referenced in transcript prompts by @ChrisPenner in #5077
- feat: add
merge.commit
command by @mitchellwrosen in #4986 - Remove no longer necessary special setup instructions for Mac Silicon by @neduard in #5087
New Contributors
Full Changelog: release/0.5.21...release/0.5.22
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