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