Skip to content

Releases: unisonweb/unison

release/M4e

28 Nov 16:27
af0bc13
Compare
Choose a tag to compare

What's Changed

Full Changelog: release/M4d...release/M4e

release/M4d

07 Nov 17:34
61e1084
Compare
Choose a tag to compare

What's Changed

Full Changelog: release/M4c...release/M4d

release/M4c

17 Oct 20:20
30fd39d
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: release/M4b...release/M4c

release/M4b

29 Sep 16:15
0635366
Compare
Choose a tag to compare

What's Changed

Full Changelog: release/M4a...release/M4b

release/M4a

26 Sep 23:29
0aa2de4
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: release/M4...release/M4a

release/M4

14 Jul 20:29
Compare
Choose a tag to compare

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.

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

08 Mar 23:41
Compare
Choose a tag to compare

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 now Doc values! (Including those that embed video! 🎞)
  • Experimental support for fzf auto-completion in ucm.
  • 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 now compile.
  • Special thank you to external contributors: @solomon-b, @nprindle, @hagl, and @philderbeast.

Full list of PRs merged since M2l:

Full Changelog: release/M2l...release/M3

release/M2l

11 Feb 20:09
Compare
Choose a tag to compare

What's Changed

Read more

release/M2k

19 Nov 17:59
Compare
Choose a tag to compare

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 for cd,view, and edit 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

07 Oct 18:41
Compare
Choose a tag to compare

Our last release was M2i. Here's a summary of what's new since then:

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