Releases: unisonweb/unison
release/M4e
What's Changed
- update: discover new cycles by @mitchellwrosen in #3466
- Refactor: make isTerm in Transaction, not IO by @mitchellwrosen in #3569
- Don't re-save branches that already exist by @ChrisPenner in #3555
- Refactor: make updateNameLookup in Transaction, not IO by @mitchellwrosen in #3595
- cleanup: add a couple cached transaction helpers by @mitchellwrosen in #3576
- Refactor: make putTerm in Transaction, not IO by @mitchellwrosen in #3571
- edit command: don't bring all members of a component into scratch file by @mitchellwrosen in #3591
- lazy version of more direct implementation of deepTerms by @aryairani in #3570
- Add configuration docs by @ChrisPenner in #3586
- Allow disabling file watching by @ChrisPenner in #3602
- Refactor: make putTypeDeclaration in Transaction, not IO by @mitchellwrosen in #3572
- Make universal compare do lexicographic comparison on lists by @dolio in #3606
- Refactor: make dependentsOfComponent in Transaction, not IO by @mitchellwrosen in #3573
- Fix skipped sync in add.run by @ChrisPenner in #3612
- Refactor: Derive instance Show NameSegment by @mitchellwrosen in #3607
- Refactor: remove a couple functions from the Codebase record by @mitchellwrosen in #3574
- Mention glob patterns in help for
view
by @pchiusano in #3621 - Indent after newline in pattern lists by @runarorama in #3628
- Swap name priority so shorter fqn come first by @ChrisPenner in #3618
- Implement commands for building/running via scheme by @dolio in #3589
- Make ucm use multiple capabilities by default by @tstat in #3620
- Clean up applyPropagate by @tstat in #3611
- Avoid justifying case arrows if the pattern doesn't fit by @runarorama in #3632
- Eta-reduce Doc term links to undo compiler expansion by @runarorama in #3634
- Cleanup: delete unused strings dependency by @mitchellwrosen in #3630
- Cleanup: delete inaccessible case by @mitchellwrosen in #3633
- Cleanup: delete prelude-extras package by @mitchellwrosen in #3629
Full Changelog: release/M4d...release/M4e
release/M4d
What's Changed
- add putTypeDeclarationComponent to codebase interface by @mitchellwrosen in #3508
- Add putTermComponent to codebase interface by @mitchellwrosen in #3491
- Refactor: make addToDependentsIndex take a collection of dependencies by @mitchellwrosen in #3489
- Refactor: monomorphize
v
toSymbol
in slurp stuff by @mitchellwrosen in #3463 - Add putTermComponent to codebase record by @mitchellwrosen in #3503
- Surgical name lookup index updates by @ChrisPenner in #3505
- LSP Auto-completion by @ChrisPenner in #3488
- Pull out unison-util-rope into its own package by @mitchellwrosen in #3518
- Fewer parens inside list types by @runarorama in #3512
- Generate stack traces for calls to
bug
and similar. by @dolio in #3531 - slightly better error description for unhandled ability requests by @stew in #3534
- Add export list to Unison.Var by @mitchellwrosen in #3528
- Pull out unison-util-bytes into its own package by @mitchellwrosen in #3519
- Fix to
Pattern.or
andPattern.replicate
to properly do backtracking when given composite patterns by @pchiusano in #3540 - Do TDNR substitutions in a single term traversal by @ChrisPenner in #2789
- Allow specifying custom base version for releases by @ChrisPenner in #3522
- Improve errors on bad short-hashes by @ChrisPenner in #3541
- Fix universal quantifiers disappearing in nested bindings by @runarorama in #3543
- fix Cli.time logic by @aryairani in #3545
- Pull out a couple modules into new
unison-syntax
package by @mitchellwrosen in #3521 - Comment out builtins from the edit command by @runarorama in #3548
- run ucm main in an unbound thread by @mitchellwrosen in #3546
- do an in-sqlite before-check before reconstructing FF-path proof client-side by @mitchellwrosen in #3550
- Fixes #3523 by @tstat in #3544
- Split V2.ShortCausalHash from V2.ShortBranchHash by @ChrisPenner in #3549
- Improve decompilation via undoing lambda lifting transformations by @dolio in #3553
- add Cli.time calls to HandleInput by @aryairani in #3552
- Add 'Show' for backend errors for usage in Sentry errors by @ChrisPenner in #3554
- Refactor: make dependents in Transaction, not IO by @mitchellwrosen in #3561
- Refactor: make isType in Transaction rather than IO by @mitchellwrosen in #3564
- Refactor: make getDeclComponent in Transaction, not IO by @mitchellwrosen in #3563
Scope.bytearrayOf
builtin had reversed arguments by @dolio in #3567
Full Changelog: release/M4c...release/M4d
release/M4c
What's Changed
- Update cycle element first draft by @mitchellwrosen in #3443
- Fix windows release... again by @ChrisPenner in #3470
- Address PR feedback on #3443 by @mitchellwrosen in #3462
- network: 3.1.1.1 -> 3.1.2.7 by @ceedubs in #3483
- refactor: leave getTermComponentWithTypes in Transaction by @mitchellwrosen in #3473
- Adding set echo io bindings by @unorsk in #3476
- Fix record trailing comma parsing by @ceedubs in #3492
- Fix a shadowing bug in
instantiateL
by @dolio in #3493 - Term/Type Summary API tweaks by @ChrisPenner in #3472
- Fixed the code of fromBase64UrlEncoded builtin by @runarorama in #3498
- Refactor: delete hash1 <-> hash2 conversions by @mitchellwrosen in #3490
- Fix pretty-printing of empty docs by @runarorama in #3507
- Add Unison.Util.Map.upsert by @mitchellwrosen in #3500
- Cli monad simplification: implement scoped short-circuit with exceptions by @mitchellwrosen in #3496
- Fix roundtrip error with lambda as a final argument, which ignores its own argument by @runarorama in #3511
New Contributors
Full Changelog: release/M4b...release/M4c
release/M4b
What's Changed
- Instant startup by @ChrisPenner in #3391
- Pin stack version in CI by @ChrisPenner in #3465
- Fix Static Linking issue on Windows Subsystem for Linux.
Full Changelog: release/M4a...release/M4b
release/M4a
What's Changed
Editor Integration via Language Server Protocol
You can now get error messages and hints directly inside your editor.
Most editors which support LSP should also be compatible.
We now have an official Unison Language VSCode extension!
See the language server setup guide for more information.
Other Changes
- Update release-steps.md by @aryairani in #3242
- Don't expect patch LHS when git-syncing by @mitchellwrosen in #3252
- monomorphize Action/Command to IO by @mitchellwrosen in #3255
- Fix issues with continuations and pending arguments by @dolio in #3266
- Fix a variable handling bug in the pattern compiler by @dolio in #3269
- delete unused root branch watching code by @mitchellwrosen in #3262
- Simplify Command and HandleCommand by @tstat in #3264
- Fix erroneous 'compiled' runtime state by @dolio in #3284
- Request 'cloud' scope when authorizing by @ChrisPenner in #3287
- add some windows build tips to development.md by @aryairani in #3279
- Avoid inferring duplicate concrete abilities by @dolio in #3274
- Make sure we're actually caching the right stack root by @ChrisPenner in #3176
- Fix incorrect calculation of list of constructor ids for types with 0 constructors by @mitchellwrosen in #3293
- Float local function definitions to their own reference during compilation by @dolio in #3296
- Enforce branch sharing and cache already loaded branches by @ChrisPenner in #3297
- Missed Name instructions as a source of combinator deps by @dolio in #3301
- Bias PPE towards term being printed by @ChrisPenner in #3260
- Fix serialization issue with code that uses abilities by @ceedubs in #3303
- Expose source ranges from errors for use with LSP by @ChrisPenner in #3267
- Replace Action monad with Cli monad by @mitchellwrosen in #3281
- Collect syntax modules under
Unison.Syntax
by @seagreen in #3319 - Fix Label instance by @mitchellwrosen in #3321
- Fix garbled UCM prompt on Windows by @jesselooney in #3307
- Vacuum SQLite after pull by @mitchellwrosen in #3310
- Prepare for GHC 9.2.* upgrade by @ChrisPenner in #3304
- update to ghc 9.2.3 by @aryairani in #3117
- Make fzf commands local to the current perspective by @ChrisPenner in #3318
- Don't show denominator entity count in push/pull by @mitchellwrosen in #3323
- Tab completion speedup by @ChrisPenner in #3312
- Correct docs selection by @ChrisPenner in #3305
- Limit name search of
view
to current namespace by @ChrisPenner in #3332 - Don't suggest find.global when running find.global by @tstat in #3350
- Mark Clock.internals.{sec, nsec} as Tracked by @ceedubs in #3353
- Move histories during
move.namespace
by @ChrisPenner in #3348 - Add
add.run
command by @tstat in #3326 - Implement a primop for catching runtime exceptions by @dolio in #3365
- Resolve path remappings to a partial prefix if one exists by @ChrisPenner in #3358
- Add tip to reflog output showing example diff.namespace usage by @jesselooney in #3302
- Improve error messages for ability equality errors by @dolio in #3317
- Fix delete.term-replacement to only check requested type/term exists by @scott-christopher in #1810
- Fix a bug in the
tryEval
wrapper code by @dolio in #3372 - Fix behaviour of names.global by @ChrisPenner in #3367
- Fix a bug in the argument handling of the runtime by @dolio in #3374
- Don't abort 'add' on missing metadata by @ChrisPenner in #3359
- Ensure pull-request.load doesn't mangle history by @ChrisPenner in #3354
- Move reflog into sqlite by @ChrisPenner in #3364
- Allow conflicted updates by @mitchellwrosen in #3375
- Store namespace statistics by @ChrisPenner in #3378
- More intuitive tab completion behaviour by @ChrisPenner in #3406
- LSP Mk I by @ChrisPenner in #3213
- Move to shallow lsBranch implementation everywhere by @ChrisPenner in #3405
- Allow caller to specify migration strategy when loading codebase. by @ChrisPenner in #3408
- ANSI on Windows fix by @ChrisPenner in #3410
- Change error message, constructor, functions from
vector
tolist
(closes #3360) by @cstml in #3380 - pr.create help text: use proper share names by @ceedubs in #3414
- Fix the way builtins were building Failure values by @dolio in #3413
- Show self-references in
todo
output by @mitchellwrosen in #3400 - Pull: update the success message when pulling by @hojberg in #3416
- Term Definition Summaries by @ChrisPenner in #3404
- Type Summaries by @ChrisPenner in #3411
- Add error handling for LSP startup to avoid crashing UCM by @ChrisPenner in #3415
- Fix JSON Representations by @ChrisPenner in #3427
- Introduce a framework for testing serialization and hashing across sessions by @dolio in #3401
- Uniformize translation between internal/external closure representations by @dolio in #3377
- LSP Mk II by @ChrisPenner in #3217
- io.test alias, completion, and doc fix by @ceedubs in #3420
- Don't clobber latest file on view by @ChrisPenner in #3429
- Update serialized test cases by @dolio in #3433
- Export Term/Type Summary types for use in Share by @ChrisPenner in #3432
- Refactor: pull
update
handler out ofHandleInput.hs
by @mitchellwrosen in #3412 - Tab completion for share namespaces by @ChrisPenner in #3426
- Pull base from the most recent major milestone by @ChrisPenner in #3438
- Exit with non-zero error codes on failure. by @ChrisPenner in #3446
- Accept trailing commas in records by @ChrisPenner in #3453
- Use locally installed stack in CI by @ChrisPenner in #3444
- less verbose migration progress by @mitchellwrosen in #3452
- Option for starting path by @ChrisPenner in #3430
- Automate Releases by @ChrisPenner in #3435
New Contributors
- @jesselooney made their first contribution in #3307
- @cstml made their first contribution in #3380
Full Changelog: release/M4...release/M4a
release/M4
Here's a summary of what's new in Version M4:
Unison-native code hosting on Unison Share
Create your account at https://share.unison-lang.org and then push your code like so:
.projects.corla> push.create aryairani.public.corla
Then head over to https://share.unison-lang.org to see your rendered code and docs!
You can still upload to Github by wrapping the git repository location in git(...)
, like:
.projects.corla> push.create git([email protected]:aryairani/unison).corla
Self-contained namespaces
We've introduced the idea of self-contained namespaces to help keep things under control. Just fork
the libraries you want into lib
relative to the namespace you're working in, and the rest of the universe of code will stay out of your hair. Absolute paths are out.
New builtins
The base
library has some new goodies. See the blog post for an overview.
- #3029 getBytes with improved blocking
- #3068 nanosecond-precision clock primitives
- #3126 Sha1 primitives
- #3104, #3146 builtin arrays
- #3173, #3178 efficient text matching
New syntax
- #3135
do
parses as'let
now
And:
Loads of bugfixes, performance improvements, UI improvements.
Codebase Upgrade
For existing installations, Release M4 will perform an automated codebase upgrade. If prompted to upgrade, close any currently open copies of UCM, and then press Enter. Your existing codebase will be backed up automatically.
$ ucm
📋 I backed up your codebase to ~/.unison/v2/unison.sqlite3.1657826988
⚠️ Please close all other ucm processes and wait for the migration to complete before interacting with your codebase.
Press <enter> to start the migration once all other ucm processes are shutdown...
🔨 Migrating codebase to version 4...
🏗 1148 / ~1148 entities migrated. 🚧
Finished.
🛠 Cleaning up unreachable branches and causals...
🔨 Migrating codebase to version 5...
🕵️ Checking codebase integrity...
Checking Namespace Integrity...
Checking Causal Integrity...
Cleaning up...
🏁 Migration complete 🏁
Let us know in Slack if you encounter any trouble with this.
Fetching the latest base library
UCM will automatically download the base library for new installations, but you can also get it manually with:
.> pull unison.public.base.releases.M4 .base
Acknowledgements
Thanks to everyone who helped with this release, either by writing code or docs or submitting bug reports. For unisonweb/unison, here's all the folks with commits in this release (alphabetically by Github full name):
» git shortlog -s --no-merges "release/M3".."release/M4" | cut -f 2- | sort -f
Alberto Flores
Alvaro Carrasco
Arya Irani
Chris Penner
Cody Allen
Dan Doel
Dan Freeman
Emil Hotkowski
iamevn
Jens Petersen
Karthik Ravikanti
Mitchell Rosen
Paul Chiusano
Phil de Joux
Rúnar Bjarnason
Sgeo
Simon Højberg
Travis Staton
A number of people contributed to the Unison base library. You can view author information for any definition using the links
command:
.> links base.List.filter Author
1. base.metadata.authors.pete_ts : Author
Tip: Try using `display 1` to display the first result or `view 1` to view its source.
PRs merged since last release
% git log --oneline release/M3..release/M4 | grep 'Merge pull request #' | cut -d' ' -f 5- | sed -e 's/^/* /'
- update version parser for new base release naming #3240
- Fix constructor name for records nested in a subnamespace #3238
- don't assume ucm trunk versions start with latest- #3234
- add PRAGMA busy_timeout = 1000 to sqlite connections #3237
- Ignore things with lib in their name in docs.to-html #3236
- Produce a better error message when pushing an empty namespace #3232
- Omit empty namespaces local #3229
- Switch to use @ symbol in links to Share users #3230
- "View it on Share" message #3228
- Hash filtering fix #3224
- Improve error message on missing names #3227
- Suggest public on "no permissions" error #3226
- Add push.force command #3222
- make test ignore "lib" namespace, add test.all that behaves like old test #3208
- Don't sandbox watch expressions #3225
- Update find behavior to align with self-contained namespaces #3206
- Implement sandboxed runtime for pure evaluation #3221
- update push and pull help with new share / git() syntax #3220
- Limit definition search to provided relativeTo #3194
- Fix base-pull location #3212
- Print request id when we get an unexpected response #3199
- Downgrade haskeline (somehow it fixes ucm navigation issues on arm64) #3216
- add unison symlink for supporting hereFile in or out of enlil #3211
- PR feedback from #3113 #3203
- Make Codebase object thread-safe #3195
- one less ABT #3113
- Attempt to include Windows artifact in dev build #3201
- Use unison-local-ui over codebase-ui #3193
- Don't consider names outside the current namespace when pretty-printing, unless necessary #3172
- Fix a problem with equating ability rows where one is concrete #3198
- Attempt to add Windows artifacts to development builds #3197
- hide timing output behind UNISON_DEBUG=timing #3187
- Upgrade terminal-size to fix apple m1 terminal text-wrapping bugs #3180
- ci(Mergify): configuration update #3181
- 2-3x speed improvement for text matching #3179
- fix push.create-to-nonempty-namespace error message #3175
- Topic/text patterns #3178
- Add builtins for efficient Text matching #3173
- Try fixing windows cache #3168
- Parallel push to share #3164
- Fix mistake in new Sqlite query #3169
- Use a fixed 100ms delay for transaction write lock retries #3167
- #3137 - Added exit flag on launch #3158
- Parallel pull from Share #3153
- Use Values literal in elaborateHashes #3155
- add Values literal to unison-sqlite #3154
- fix bug in elaborateHashes #3152
- Adjust effect variable 'tweaking' strategy #3161
- do parses as 'let now, and this is used by pretty-printer #3135
- Some ability checking adjustments #3149
- Insert temp tables before other migrations take place. #3119
- Some array additions/fixes #3146
- make pull report number of outstanding entities to download (like push) #3142
- Add builtin array types and functions #3104
- Add Sha1 builtin #3126
- Don't add duplicate auth headers #3131
- out-of-order sync for share #3039
- Update type and term indices after push and pull #3125
- Better messaging for Transport Errors when speaking to a code server #3114
- make pull from share download in smaller chunks #3115
- remove haskeline fork #3116
- extract unison-hashing-v2 package from unison-parser-typechecker #3105
- Limit batch size of pushes to share #3102
- Delete old namespace references #3076
- Bump megaparsec dependency #3093
- Allow using credentials for codeservers in transcripts #3092
- Share push/pull: show some indication of progress #3097
- Change delete.namespace to not print a diff #3100
- Update development.markdown #3099
- Add package.yaml workaround to stack rebuild issue #3094
- Set journal mode on create rather than open. #3091
- Add examples to patch's help #3075
- Support version option #3074
- Add built-in nanosecond-precision clocks #3068
- restore -Wtype-defaults #3063
- Provide ucm version to command layer #2992
- Add missing packages to contrib/cabal.project. #3061
- add sha256 hash for fuzzyfind-3.0.0 #3064
- Record timings of various operations in HandleInput #3052
- removing contributor blurbs #3046
- Improve performance of various relation operations #3051
- Replace sqlite-simple with unison-sqlite #2718
- Update README.md #3047
- Move the Share server into its own package. #3040
- Sync HTTP client #3032
- Fix move.namespace documentation #3033
- Switch parsing and find to by default use only names in the current namespace #3003
- Make POp serialization more reliable #3031
- Add io.getSomeBytes.impl built-in #3029
- Use explicit deriving strategies where it's ambiguous #3022
- Add MonadUnliftIO to unison-prelude #3025
- Fix a bug with code serialization. #3024
- Commit stack.yaml.lock as is recommended. #3023
- stack.yaml: update to final lts-18.28 snapshot #2994
- Use a faster copy function in arrayToChunk #3019
- add transcript demonstrating an update bug #2974
- Correctly handle errors which occur during transcripts #3013
- Fix a bug caused by renaming during ANF #3012
- Hide builtins.merge, builtins.mergeio #3014
- Save information for decompiling non-closed definitions #3009
- Add ReaderT to Action and wrap Action in its own monad #2996
- Add ability to hide ucm commands until we're ready to release them. #2997
- Some assorted fixes #2998
- Add update.nopatch command #2990
- Remove the access control header to limit CORS #2968
- Split off pretty-printer package #2982
- Disable windows release until we can fix it properly. #2977
release/M3
Hi all, we have been hard at work on Unison.
UCM Milestone 3 includes:
- New website with much-improved documentation! https://unison-lang.org and https://unison-lang.org/learn by @rlmark and @hojberg
- Base library now has overview documentation and many new API docs on individual types and functions (for instance,
Float
), by @runarorama - Native support for Windows! Help us test it out! 🤞(None of us runs Windows.)
- So many bug fixes, and performance improvements, and including an updated codebase format. You may want to grab a bite to eat while you wait, but your code will be migrated automatically. 🤖
- Support for pushing and pulling from git branches and tags in Git-hosted codebases. But don't get too attached, because Unison native code hosting is in the works. 🚀
- Many Codebase UI and
Doc
rendering improvements. In fact, all of the posts at http://unison-lang.org/blog are nowDoc
values! (Including those that embed video! 🎞) - Experimental support for
fzf
auto-completion inucm
. - A few new or changed UCM commands:
gist
pushes a namespace to your remote codebase; for quickly sharing namespaces that you don't necessarily want to name.pull.without-history
, for when all you want is a squash merge.delete.namespace.force
allows you to delete a namespace that still has dependencies. (Use at your own risk, since the names will missing for the time being.)api
prints the UCM web api links for those who are developing against it.compile.output
is nowcompile
.
- Special thank you to external contributors: @solomon-b, @nprindle, @hagl, and @philderbeast.
Full list of PRs merged since M2l:
- remove cycle length by @aryairani in #2374
- consolidate localize object helpers (rehash migration branch) by @mitchellwrosen in #2580
- Add TermReference, TypeReference, ConstructorReference (targeting topic/rehash-codebase) by @mitchellwrosen in #2662
- always save builtin identifiers to database by @aryairani in #2730
- bump schema version for new codebases from 1 to 2 by @aryairani in #2732
- Bugfix: make hashing effects order-independent by @mitchellwrosen in #2777
- continuing to isolate v2 hashing code by @aryairani in #2635
- Clarify naming & docs for hashing classes. by @ChrisPenner in #2770
- fix quadratic hashing in hashComponent by @mitchellwrosen in #2802
- Add progress bar and prompt to migration by @ChrisPenner in #2828
- Recover from missing branch objects by replacing with empty branches. by @ChrisPenner in #2844
- merge
trunk
intotopic/rehash-codebase
by @aryairani in #2873 - Don't crash when printing types with higher-rank fields. by @ChrisPenner in #2866
- 'Linearize' quantified ability variables for better inference by @dolio in #2895
- Add Phil de Joux as contributor. by @philderbeast in #2893
- stop using Shellmet in Git.hs by @aryairani in #2900
- docs.to-html headings should have an id by @hojberg in #2903
- Use 'v2' branch for auto-pull of base on topic/rehash-codebase by @ChrisPenner in #2902
- Rehash Codebase Migration (schema v2) by @aryairani in #2627
- Don't sync ALL test watches. by @ChrisPenner in #2904
- Fix an issue with the effect variable linearizing patch by @dolio in #2907
- Fix an issue computing sandbox info by @dolio in #2908
- Don't use
!
syntax for ctor application (Any ()
andSome ()
, not!Any
or!Some
) by @pchiusano in #2898 - patch Shellmet (instead of replacing it) by @aryairani in #2914
- delete broken runtime benchmark by @aryairani in #2915
- Add annotations to reserved keyword, reserved word, and empty matches by @ChrisPenner in #2919
- Add debugging combinators by @ChrisPenner in #2856
- Allow pushing to v2 codebases by @ChrisPenner in #2910
- Traverse type references in ANF functions by @dolio in #2920
- add integration-tests to hie.yaml by @aryairani in #2916
- Rewrite Slurping code by @ChrisPenner in #2814
- use posix paths when matching
git status
output by @aryairani in #2921 - Fix universal equality by @runarorama in #2929
- vim-completion: don't include bang by @ceedubs in #2932
- Try to only float a single copy of a definition by @dolio in #2615
- switch to Windows code page 65001 in exe:unison and exe:tests by @aryairani in #2917
- add windows release (1st attempt) by @aryairani in #2934
- replace
removeDirectoryRecursive
withremovePathForcibly
by @aryairani in #2937 - codepage 65001 for parser-typechecker tests too by @aryairani in #2938
- don't call
stack exec
and don't use/
by @aryairani in #2936 - Avoid redundant clone (and migration) when pushing. by @ChrisPenner in #2912
- Fix transcripts/io.md to work on windows builds. by @ChrisPenner in #2942
- Add newline conversion to utf8 file helpers for windows support by @ChrisPenner in #2943
- Doc Embed: Add Video and FrontMatter by @hojberg in #2946
- Handle more inconsistencies with newline conversion on Windows by @ChrisPenner in #2949
- Use v3 branch instead of v2 for less confusion by @ChrisPenner in #2951
- Fix delete.namespace.force msg spacing by @ceedubs in #2681
- Fix type declaration example by @ceedubs in #2837
- Doc: Remove leftover trace statements by @hojberg in #2954
- Add short options for codebase and codebase-create by @ChrisPenner in #2952
- Run transcripts using Haskell API rather than shelling out by @ChrisPenner in #2948
- Fix paging on windows - Less Is More! by @ChrisPenner in #2953
- support windows in ci by @aryairani in #2913
- Enable completion for compile.output by @ceedubs in #2959
- Use softhang if a delayed block is the last argument to a function by @pchiusano in #2960
- let mergify wait for windows build by @aryairani in #2963
- Re-arrange Migrations module to support multiple migrations. by @ChrisPenner in #2964
- Rename compile.output to compile by @ceedubs in #2965
- Ormolu Everything. by @ChrisPenner in #2958
- Add migration to remove v1 hash objects. by @ChrisPenner in #2967
- Vacuum once after all migrations have been completed. by @ChrisPenner in #2972
- Sync trunk to series/M2 by @pchiusano in #2103
- updating website url references to new website by @rlmark in #2973
Full Changelog: release/M2l...release/M3
release/M2l
What's Changed
- replace undefined with Nothing by @mitchellwrosen in #2658
- Add TermReference, TypeReference, ConstructorReference by @mitchellwrosen in #2621
- Add delete.namespace.force by @ChrisPenner in #2652
- Add ORMOLU_DISABLE to every file to allow auto-formatting. by @ChrisPenner in #2666
- Fix a variable capture issue in pattern compilation by @dolio in #2670
- Optimize relation Eq/Ord instances a bit by @mitchellwrosen in #2671
- Merge a couple util modules by @mitchellwrosen in #2674
- Add gist command (fixes #2603) by @mitchellwrosen in #2657
- Match UI release zip file of unisonLocal.zip by @hojberg in #2686
- Make fzf commands respect relative/absolute paths by @ChrisPenner in #2680
- Ensure codebase is always closed correctly by @ChrisPenner in #2661
- Allow running namespace diffs over hashes, useful for comparing histories. by @ChrisPenner in #2672
- remove some incomplete tests from Unison.Test.Codebase.Causal by @aryairani in #2690
- Optimize relation subtractDom, subtractRan by @mitchellwrosen in #2675
- add toText functions for Socket, Handle, ThreadId by @stew in #2687
- Include self-references in dependents index by @mitchellwrosen in #2667
- Add transcripts for merging behaviour by @ChrisPenner in #2688
- Improve error messaging for missing fzf command by @ChrisPenner in #2692
- Fix line breaks in guards with long patterns by @runarorama in #2654
- Fix potential stack overrun by @dolio in #2704
- Apply batched branch modifications efficiently, but in the correct order by @ChrisPenner in #2611
- Add Codebase UI step and base README version by @hojberg in #2655
- Handle failing to open a remote codebase better by @mitchellwrosen in #2701
- Extract unison-sqlite library from unison-codebase-sqlite by @mitchellwrosen in #2668
- Slightly optimize replaceDom, replaceRan by @mitchellwrosen in #2683
- Fix journal mode parsing by @mitchellwrosen in #2725
- Add equality check to speed up consBranch by @mitchellwrosen in #2714
- Rename SqliteException to SqliteQueryException by @mitchellwrosen in #2723
- Switch to withOpenOrCreateCodebase by @ChrisPenner in #2709
- Add Debug.trace builtin by @dolio in #2740
- Hide empty namespaces from ucm output by @ChrisPenner in #2729
- Allow fork'ing/pulling/etc. over a branch with an empty HEAD. by @ChrisPenner in #2731
- Implement transaction retry logic by @mitchellwrosen in #2716
- Move handling of update command to top level of HandleInput by @mitchellwrosen in #2710
- Codebase Server: Add
/projects
endpoint by @hojberg in #2728 - pull.without-history - smaller pulls by @ChrisPenner in #2713
- Fix wrong hash being returned from squash pull by @ChrisPenner in #2747
- Fix a bunch of pretty-printer bugs by @runarorama in #2754
- Kill forked threads when runtime evaluation completes. by @ChrisPenner in #2739
- Allow running individual transcripts-using-base files. by @ChrisPenner in #2738
- Fix open local codebase logic to handle unknown schema case by @mitchellwrosen in #2708
- Add SomeSqliteException, SqliteConnectException by @mitchellwrosen in #2724
- Optimize Names.contains by @mitchellwrosen in #2743
- Adds
api
command by @solomon-b in #2755 - Improve ctrl-c and sig INT catching in main UCM loop by @ChrisPenner in #2734
- Allow pulls to overwrite empty local branches instead of merging, and improve messaging in this situation. by @ChrisPenner in #2749
- Explicit branch history management by @ChrisPenner in #2760
- Allow moving branch (and its history!) over a deleted branch. by @ChrisPenner in #2761
- Updates
pull-request.load
error message by @solomon-b in #2748 - Remove duplicate release key by @ChrisPenner in #2762
- Monomorphize
v
toSymbol
for builtins by @mitchellwrosen in #2750 - Fixes pretty printing for uri parser by @solomon-b in #2757
- add a script to perform checks tests similar to CI by @aryairani in #2752
- Add query debugging mechanism to unison-sqlite by @mitchellwrosen in #2769
- Add getRootBranchExists to the Codebase API by @mitchellwrosen in #2768
- Fix integration tests by @ChrisPenner in #2774
- Make push concurrency-safe by @ChrisPenner in #2772
- Fix implementation of getbuffering builtin to actually return Either by @ChrisPenner in #2779
- Improve type-safety of reference suffix parsing by @ChrisPenner in #2776
- Fix Star3 deleteD2, deleteD3 by @mitchellwrosen in #2682
- Refactor MT monad for performance by @mitchellwrosen in #2766
- Install a top level exception handler during compiled execution by @dolio in #2783
- remove parser for using back-ticks for infix function application by @kolharsam in #2570
- Tweak Result for performance by @mitchellwrosen in #2765
- Don't build slurp names twice by @ChrisPenner in #2791
- Print out the hash when throwing blanks error by @hojberg in #2793
- Use
bug
for emitting pattern match failures. by @dolio in #2792 - More robust duplicate term checking by @ChrisPenner in #2798
- Add -- comments to the transcript parser by @ChrisPenner in #2800
- Fix universal eq/compare for links by @dolio in #2803
- Don't glob at all if there's no glob-target specified by @ChrisPenner in #2804
- Don't crash on empty namespace prefix for constructors. by @ChrisPenner in #2812
- Persist local changes in Git Cache on pull/push by @ChrisPenner in #2773
- Ensure test-watch dependencies are properly included in slurping calculations. by @ChrisPenner in #2817
- make computeFrontier more efficient, rename to computeDirty by @mitchellwrosen in #2806
- Fix error in dependency closure calculation. by @ChrisPenner in #2821
- add custom error message for PatternArityMismatch by @stew in #2824
- Special-case overapplied binary operators by @runarorama in #2809
- Fix pattern matching in docs by @dolio in #2827
- Fix incorrect hanging of boolean operators, and elide extra parentheses by @nprindle in #2819
- Fix pretty-printing of
if
s with multiline conditions by @nprindle in #2830 - Add owner filter to /projects API by @hojberg in #2832
- Fix some of the TLS error handling by @stew in #2835
- IO sandboxing check by @dolio in #2836
- vim completion: handle leading { by @ceedubs in #2842
- Fix then/else not being able to start identifiers by @nprindle in #2847
- Remember more type annotations in decompiled output by @dolio in #2850
- Add transactions to all relevant sqlitecodebase ops by @ChrisPenner in #2843
- Fix: '"" should be parsed as delayed text by @hagl in...
release/M2k
Our last release was M2j. Here's a summary of what's new since then:
- New command:
docs.to-html
to generate HTML representations of docs in a namespace - New
getArgs
builtin [example] (Thanks @iamevn!) - Fuzzy find support via
fzf
forcd
,view
, andedit
when run without arguments - Globbing support with
?
as wild card [example] - List dependencies that don't have names within your namespace using
namespace.dependencies
[example] - Improve namespace autocompletion
- Vim plugin: Add completion
- ... aaand more! See the full list of PRs merged below.
See UI changes in https://github.com/unisonweb/codebase-ui/releases/tag/release%2FM2k
Upgrading
How to upgrade from an M1 series codebase
If you're already using an M2 series release (try ucm version
if unsure), you can skip this section.
If you still have a V1 codebase, ucm upgrade-codebase
can be used to upgrade it to the new format. We recommend that you push the converted codebase to a fresh Git repo.
$ ucm upgrade-codebase
... wait a while for this to finish
$ ucm
.> push https://github.com/myusername/myunisoncode2
Where myusername/myunisoncode2
is a fresh Git repo.
If your codebase isn't in the default location (of ~/.unison
), you can pass the --codebase
flag:
$ ucm --codebase /path/to/mycode upgrade-codebase
Let us know in Slack if you encounter any trouble with this.
Fetching the latest base library
.> pull https://github.com/unisonweb/base:.releases._M2k .base_m2k
You can then (optionally) delete.namespace
any old versions of base you have laying around. This will complain if you're still referencing definitions from the old version of base.
If you have definitions that depend on old definitions, you can find that out by doing:
.mycode> todo .base_m2k.patch
If you do have things todo, applying the patch to your namespace will replace the old versions with the new. We recommend forking a copy of your namespace before doing this:
.> fork mycode mycode2
.mycode2> patch .base_m2k.patch
.mycode2> todo .base_m2k.patch
Assuming that reports "Nothing to do", you can delete.namespace mycode
and then delete.namespace
your old version of base. If you encounter any trouble, stop by the Slack in #alphatesting and we can help.
Check out https://github.com/unisonweb/unison/issues?q=is%3Aissue+is%3Aopen+label:P1 to follow current high priority issues being worked on.
Acknowledgements
Thanks to everyone who helped with this release, either by writing code or docs or submitting bug reports. For unisonweb/unison, here's all the folks with commits in this release (alphabetically by first name):
» git shortlog -s --no-merges "release/M2j".."release/M2k" | cut -f 2- | sort -f
Arya Irani
Chris Penner
Cody Allen
Dan Doel
iamevn
Karthik Ravikanti
Mitchell Rosen
Paul Chiusano
Rúnar Bjarnason
satotake
sbachlet
Shawn Bachlet
Simon Højberg
ssbothwell
Also see the contributors for unisonweb.org and contributors for unisonweb/codebase-ui
A number of people contributed to the Unison base library. You can view author information for any definition using the links
command:
.> links base.List.filter Author
1. base.metadata.authors.pete_ts : Author
Tip: Try using `display 1` to display the first result or `view 1` to view its source.
PRs merged since last release
git log --oneline release/M2j..release/M2k | grep 'Merge pull request #'
- #2641 from unisonweb/cp/safer-connection-use
- #2645 from unisonweb/fix-anchors
- #2637 from unisonweb/fix/threadid-cmp
- #2607 from unisonweb/cp/namespace-dependencies
- #2644 from unisonweb/fix-folded-open
- #2643 from unisonweb/fix-paragraph-nesting
- #2634 from unisonweb/21-11-12-codebase-docs
- #2626 from unisonweb/doc-folding-inline-code
- #2633 from unisonweb/21-11-12-lookupWatchCache
- #2616 from unisonweb/21-11-08-deleted-names-in-dependents
- #2625 from unisonweb/topic/reexport-hash
- #2623 from unisonweb/fix/eta-reduction
- #2618 from unisonweb/21-11-09-branch-lenses
- #2619 from unisonweb/render-doc-emoji
- #2610 from unisonweb/21-11-08-ppe
- #2617 from unisonweb/doc-to-html-improvements
- #2600 from unisonweb/21-11-02-push-create
- #2613 from unisonweb/doc-to-html-improvements
- #2612 from unisonweb/fix/2567
- #2604 from solomon-b/trunk
- #2598 from unisonweb/21-11-04-unison-cli-modules
- #2602 from unisonweb/remove-unpack
- #2597 from unisonweb/21-11-05-move-beforeHash
- #1899 from unisonweb/topic/text
- #2595 from unisonweb/21-11-04-format
- #2596 from unisonweb/21-11-04-input-cleanup
- #2594 from unisonweb/fix/transcript-compilation
- #2540 from iamevn/run-with-args
- #2590 from satotake/measure-integraion-tests
- #2592 from ceedubs/vim-help
- #2584 from shawn-bachlet/trunk
- #2579 from ceedubs/vim-completion
- #2578 from unisonweb/cp/no-match-error
- #2581 from unisonweb/format-input-patterns
- #2586 from unisonweb/fix/universal-compare
- #2585 from unisonweb/fix-doc-links
- #2500 from unisonweb/fix/universal-compare
- #2563 from unisonweb/21-10-26-edit-cycle
- #2577 from unisonweb/doc-names-for-rendering-html
- #2576 from unisonweb/doc-names-for-html-files
- #2575 from unisonweb/ensure-folders-exist-for-doc-creation
- #2568 from unisonweb/render-doc-html-files
- #2561 from unisonweb/21-10-28-cons-isnt-monotonic
- #2550 from unisonweb/cp/fzf
- #2562 from unisonweb/work/type-equality
- #2560 from unisonweb/cp/fix-ui-name-scoping
- #2559 from unisonweb/ci-integration-tests
- #2549 from unisonweb/topic/sqlite-operations-exports
- #2554 from unisonweb/fix-doc-images
- #2556 from plumenator/trunk
- #2553 from unisonweb/fix/signature-links
- #2534 from unisonweb/cp/haddock-upload
- #2543 from satotake/add-integration-tests
- #2501 from plumenator/trunk
- #2552 from unisonweb/fix-type-reference-for-terms
- #2548 from unisonweb/21-10-26-delete-old-name
- #2488 from unisonweb/21-10-07-name-refactor
- #2538 from unisonweb/21-10-22-fix-dupe-index-entries
- #2541 from unisonweb/cp/abt-cleanup
- #2544 from unisonweb/topic/weed-hashing-modules
- #2542 from iamevn/trunk
- #2539 from iamevn/rename-package
- #2535 from iamevn/getCurrentDirectory
- #2521 from unisonweb/doc-html
- #2533 from unisonweb/topic/fix2271
- #2529 from unisonweb/21-10-20-base32
- #2525 from unisonweb/cp/git-fix
- #2524 from unisonweb/fix/mvar-read
- #2511 from unisonweb/cp/globbing
- #2523 from unisonweb/21-10-19-empty-add
- #2513 from unisonweb/21-10-18-relation-optimizations
- #2509 from unisonweb/cp/name-renaming
- #2504 from unisonweb/cp/better-namespace-completions
- #2498 from unisonweb/cp/catch-ctrl-c-haskeline
- #2499 from unisonweb/topic/v1-cleanup
- #2494 from unisonweb/topic/standalone-binaries
- #2477 from unisonweb/21-10-07-no-empty-names
- #2486 from unisonweb/cp/no-duplicate-builds
- #2485 from unisonweb/cp/split-cli
- #2484 from unisonweb/cp/add-relation-benchmarks
- #2478 from unisonweb/cp/add-relation-benchmarks
- #2475 from unisonweb/topic/lts-18.13
- #2470 from unisonweb/21-10-06-relation-difference
- #2469 from unisonweb/cp/2453-better-ambiguity-message
release/M2j
Our last release was M2i. Here's a summary of what's new since then:
- Doc rendering now crops long docs! Thanks @hojberg
- Performance improvements from the Unison team - @mitchellwrosen @aryairani and @ChrisPenner
- Fix for base download on initialization -You're the best @ChrisPenner
- Experimental work on standalone byte code files - @dolio 🧠
- ... aaand more! See the full list of PRs merged below.
Fetching the latest base library
.> pull https://github.com/unisonweb/base:.releases._M2j .base_m2j
You can then (optionally) delete.namespace
any old versions of base you have laying around. This will complain if you're still referencing definitions from the old version of base.
If you have definitions that depend on old definitions, you can find that out by doing:
.mycode> todo .base_m2j.patch
If you do have things todo, applying the patch to your namespace will replace the old versions with the new. We recommend forking a copy of your namespace before doing this:
.> fork mycode mycode2
.mycode2> patch .base_m2j.patch
.mycode2> todo .base_m2j.patch
Assuming that reports "Nothing to do", you can delete.namespace mycode
and then delete.namespace
your old version of base. If you encounter any trouble, stop by the Slack in #alphatesting and we can help.
Known issues
- This release adds experimental support for self-contained bytecode files (these are precompiled files that are small and package a main function and its minimal dependencies for execution with low startup times), however we learned the initial approach doesn’t work on platforms with ASLR (address space layout randomization) such as MacOS. We’re going to be redoing this in a more robust way for a later release.
What's coming in future releases?
- More work on standalone bytecode files for running compiled Unison programs outside of UCM.
- Changes to the PR and Update process!
- A new docs site based on the same doc renderer used on https://share.unison-lang.org.
- More work on Unison's distributed programming API.
- and a bunch more...
Check out https://github.com/unisonweb/unison/issues?q=is%3Aissue+is%3Aopen+label:P1 to follow current high priority issues being worked on.
Acknowledgements
Thanks to everyone who helped with this release, either by writing code or docs or submitting bug reports. For unisonweb/unison, here's all the folks with commits in this release (alphabetically by first name):
» git shortlog -s --no-merges "release/M1m".."release/M2" | cut -f 2- | sort -f
Arya Irani
Chris Penner
Dan Doel
Mitchell Rosen
Rebecca Mark
Rúnar Bjarnason
Simon Højberg
Also see the contributors for unisonweb.org and contributors for unisonweb/codebase-ui
A number of people contributed to the Unison base library. You can view author information for any definition using the links
command:
.> links base.List.filter Author
1. base.metadata.authors.pete_ts : Author
Tip: Try using `display 1` to display the first result or `view 1` to view its source.
PRs merged since last release
git log --oneline release/M2i..release/M2j | grep 'Merge pull request #'
- #2460 from unisonweb/topic/refactor-type-mentions-index
- #2468 from unisonweb/21-10-05-project-relation
- #2466 from unisonweb/topic/fix2244
- #2462 from unisonweb/21-10-05-unify-types
- #2446 from unisonweb/topic/standalone-binaries
- #2448 from unisonweb/topic/letbreak
- #2459 from unisonweb/gitTagVersionUpdate
- #2456 from unisonweb/use-nanoid-for-server-token
- #2458 from unisonweb/dont-diff-in-add
- #2457 from unisonweb/release-notes-updates