Releases: unisonweb/unison
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
release/0.5.11
What's changed:
- New
move
command will move existing namespaces, terms, and types, all at once. - Several fixes to
upgrade
, pretty-printing, docs parsing, and type-directed name resolution. - A fix related to displaying docs in Unison Local.
- We've switched to a less weird version numbering scheme (0.5.11 instead of M5k)
All PRs since last release:
- verify 'stack ghci' startup on mac at least by @aryairani in #4455
- Add a new Pattern.captureAs builtin by @stew in #4452
- Allow layout blocks within Doc transclusion by @pchiusano in #4458
- Change urls to use
/docs
instead of/learn
by @pchiusano in #4459 - bugfix: tweak upgrade to ignore aliases of old things by @mitchellwrosen in #4471
- Add
move
command that moves existing namespaces,terms, and types by @tstat in #4477 - Use minimal suffix that's distinct from local var names by @ChrisPenner in #4481
- switch generic-monoid to semigroups (the two overlapping packages) by @aryairani in #4457
- bugfix: make
upgrade
not require a latest-touched file (default to "scratch.u") by @mitchellwrosen in #4479 - provide some deps for the nix linker by @tstat in #4464
- Return evaluation errors rather than just silencing them. by @ChrisPenner in #4433
- Don't typecheck dependents of unchanged defns in upgrade by @tstat in #4486
- Unison Local - Search for docs by exact name, not suffix by @ChrisPenner in #4485
- bugfix: make upgrade not over-suffixify in certain cases by @mitchellwrosen in #4500
- Bugfix: Prefer shallow lib depth in TDNR by @tstat in #4502
- update UpdateIncompleteConstructorSet message by @aryairani in #4503
- use semver for ucm by @aryairani in #4504
Full Changelog: release/M5j...release/0.5.11
release/M5j
What's changed:
- We fixed a bug where saving a scratch file with watch expressions could cause UCM to crash with a SQL error. #4454
- Updates are faster when nothing new needs to be typechecked.
All PRs since last release:
- in update, don't bother typechecking again if we haven't changed the unison file by @mitchellwrosen in #4446
- Unique type churn transcript: add case of revert by @ceedubs in #4447
- update transcripts due to out-of-order merges by @aryairani in #4451
- bugfix: update no longer tries to put non-test watches into the namespace by @mitchellwrosen in #4454
- PackageImports to workaround
stack ghci
failure by @aryairani in #4453
Full Changelog: release/M5i...release/M5j
release/M5i
This release fixes some bugs related to the new update
process. Upgrading is recommended!
All changes since last release:
- Update release-steps.md by @aryairani in #4390
- Force push to avoid keeping tons of old docs by @ChrisPenner in #4396
- Fix spacing in
create.author
help by @pchiusano in #4401 - add some more info than just calling
fromJust
by @aryairani in #4404 - Improve kind error messages by @tstat in #4398
- Add build-tools only devShell that doesn't depend on haskell.nix by @tstat in #4394
- Nix flake: set default app to haskell-nix unison-cli app by @ceedubs in #4412
- Fix bug in scratch file updates by @tstat in #4414
- fix for test watches in
update
by @aryairani in #4413 - Fix name resolution bug in the parser by @tstat in #4419
- Add support for the
controls
attribute in Video by @hojberg in #4431 - fix unsigned int error in update by @aryairani in #4434
- Add entity validation on pull. by @ChrisPenner in #4377
- don't use
deepTermMetadata
fortest
by @aryairani in #4428 - Fix suffixification bug #4424 by @tstat in #4437
Full Changelog: release/M5h...release/M5i
release/M5h
What's new:
Simplified update
process
See the #4374 for more details. TL;DR:
Given your already type-checked scratch file, UCM attempts to substitute the new definitions everywhere the old were referenced in your namespace and other definitions, propagating recursively.
- If successful, you are done!
- If unsuccessful, UCM will load the dependent definitions into the scratch file for you to edit until they typecheck.
Library upgrade
command
See #4386 for more details. TL;DR:
With both an <old>
and <new>
version of a library installed under lib.<old>
and lib.<new>
respectively, the upgrade <old> <new>
command will attempt to replace any usages in your project of definitions from <old>
with definitions from <new>
with the same names.
- If successful,
<old>
is removed fromlib
, and you are done! - If unsuccessful, UCM will switch you to a new temporary branch (without
<old>
), and load the dependent definitions into the scratch file for you to edit until they typecheck. - When you finish the migration, you can
update
and then use themerge
command to merge the temporary branch into your original branch.
Kind checking
We have kind checking now!
Various improvements to
- Error messages
- Pretty-printing and code round-trips
- Request timeout fixes for Share
All changes since last release:
- refactor: add generic-lens to prelude, export orphan IsLabel instance by @mitchellwrosen in #4332
- Restructure decompilation by @dolio in #4336
- Add new BranchV3 type by @mitchellwrosen in #4333
- Add Term Hash Validation by @ChrisPenner in #4329
- Add kind inference by @tstat in #4331
- add expectDeclNumConstructors by @mitchellwrosen in #4341
- JIT: Added
Code.lookup
function and various supporting code changes by @dolio in #4339 - quick fix for delete.type #4315 for next steps by @sixfourtwelve in #4342
- Fill out more scheme builtins by @dolio in #4355
- improve rendering of uncaught exceptions by @mitchellwrosen in #4358
- Fix kind inference context bug by @tstat in #4366
- Delay kind defaulting by @tstat in #4359
- Assorted pretty-printing round trip fixes by @pchiusano in #4368
- Implement Murmurhash in racket by @jaredly in #4365
- Fix parser issue caused by virtual semicolons being emitted inside parens by @pchiusano in #4369
- Scheme builtin optimization and associated tweaks by @dolio in #4371
- Add missing spaces to
pull
explanation by @JohanWinther in #4361 - Align client timeouts with server-side timeouts by @ChrisPenner in #4364
- Add @lexi-lambda to contributors by @pchiusano in #4379
- Add @SystemFw to contributors by @SystemFw in #4380
- print/parse
update
by @aryairani in #4374 - Bump haskell.nix dependency by @tstat in #4376
- feat: add
upgrade
command by @mitchellwrosen in #4386 - update
update
info messages by @aryairani in #4387 - make findCtorNames return an Output instead of error by @aryairani in #4388
New Contributors
- @JohanWinther made their first contribution in #4361
Full Changelog: release/M5g...release/M5h
release/M5g
What's Changed
- Warn on invalid awk version by @ChrisPenner in #4291
- Use gawk if installed by @ChrisPenner in #4292
- add haskell-language-server-wrapper symlink by @mitchellwrosen in #4298
- try to set a custom workflow name on release by @aryairani in #4289
- [jit] Add setCurrentDirectory, renameDirectory, isDirectory, systemTime, systemTimeMicroseconds, isSeekable, and handlePosition by @jaredly in #4296
- Port Name lookups to Postgres by @ChrisPenner in #4265
- refactor: eliminate duplicate ShortHash type by @mitchellwrosen in #4299
- Add extra help line for delete command by @sixfourtwelve in #4302
- Add @sixfourtwelve to the contribution list by @sixfourtwelve in #4307
- Relax hash-mismatch errors if the remote head is what we wanted by @ChrisPenner in #4309
- Add logic to flip welcome hint message by @sixfourtwelve in #4304
- Prefer triple backtick syntax during doc source printing, even for old docs by @pchiusano in #4312
- Add tip for existing branches by @sixfourtwelve in #4308
- Endpoint exposing chosen project, branch and working path by @chuwy in #4285
- Make
pull.without-history
work for Share project branches by @ChrisPenner in #4301 - Add windows stack build retry on pre-release by @ChrisPenner in #4313
- refactor: one reference type by @mitchellwrosen in #4310
- Add fuzzy-finder for project switching by @ChrisPenner in #4317
- Modify intermediate code/value format to be less Haskell-runtime specific by @dolio in #4311
- Fix compile error in benchmarks by @pchiusano in #4323
- Allow multiple ignored bindings in a block by @pchiusano in #4324
- Fixes to suffix-based name resolution when local file names shadow codebase names by @pchiusano in #4325
- Add new combinator for getting ALL the dependencies of a decl. by @ChrisPenner in #4322
- refactor: replace runEitherTransaction with more ergonomic runTransactionWithRollback by @mitchellwrosen in #4327
- Add missing dependency crawling for MCode by @dolio in #4326
New Contributors
- @sixfourtwelve made their first contribution in #4302
Full Changelog: release/M5f...release/M5g
release/M5f
What's Changed
- bump haskell.nix to support new lsp by @tstat in #4275
- Don't completely crash mid-update on missing metadata by @ChrisPenner in #4281
- Clear temp entity tables on login by @ChrisPenner in #4286
- Implement verified hashing for racket backend, with assorted changes by @dolio in #4287
- feat: allow pulling /releases/latest by @mitchellwrosen in #4288
Full Changelog: release/M5e...release/M5f