Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

M2h Release Notes #2342

Closed
pchiusano opened this issue Aug 19, 2021 · 0 comments
Closed

M2h Release Notes #2342

pchiusano opened this issue Aug 19, 2021 · 0 comments
Assignees
Labels
P1 High priority release-notes

Comments

@pchiusano
Copy link
Member

pchiusano commented Aug 19, 2021

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

  • The codebase UI now renders documentation, using the same engine that powers Unison Share's documentation rendering, see for instance this example or this one. Work by @hojberg and @pchiusano
  • The codebase UI can now be launched using a new ucm command, ui. It pops open a web browser with the codebase UI open. Work by @hojberg
  • There's a new ability inference algorithm that works much nicer for recursive functions and also tries to suggest functions to annotate if it's unable to infer an ability variable. It may still have a few rough edges so please let us know if you hit any. Work by @dolio
  • New builtin functions.
    • getLine (reading a line from a file handle or standard in) and getDirectoryContents by @runarorama
    • getEnv (getting environment variables) by @stew
    • Bitwise casting functions from Int <-> Float <-> Nat by @stew
    • Primitive decoding and encoding functions to convert to and from Bytes in little and big endian byte order, for Nat values of various widths by @stew
  • ucm command line arguments are now parsed more uniformly, try ucm --help and see Convert CLI to optparse-applicative (revived) #2280. Work by @ChrisPenner and @shmish111
  • ... aaand more! See the full list of PRs merged below.

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._M2h .base_m2h

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_m2h.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_m2h.patch
.mycode2> todo .base_m2h.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

The M2h version of the base library contains references to builtins that are not in the M2h release of UCM. If you use these builtins, you will get a runtime error:

  • unsafe.coerceAbilities
  • Scope.run
  • Scope.ref
  • IO.ref
  • Ref.read
  • Ref.write

What's coming in future releases?

  • Usability and performance improvements for UCM, particularly around the update process.
  • Standalone bytecode files for running compiled Unison programs outside of UCM.
  • A new docs site based on the same doc renderer used on https://share.unison-lang.org
  • A first release of Unison's distributed programming API, initially just supporting local concurrent execution.
  • 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
Aycan Irican
Chris Gibbs
Cody Allen
Dan Doel
Hakim Cassimally
Hans Schuster
Ian Davidson
Ian Grant Jeffries
Jared Forsyth
Joseph Thomas
Ludvig Sundstrom
Mitchell Rosen
Mohamed Elsharnouby
nini-faroux
Noah Haasis
Paul Chiusano
Rúnar Bjarnason
Sam Roberts
Scott Christopher
Simon Højberg
Stew O'Connor
Will Badart

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/M1m..release/M2 | grep 'Merge pull request #'
@pchiusano pchiusano added the P1 High priority label Aug 19, 2021
@pchiusano pchiusano added this to the Beta milestone Aug 19, 2021
@pchiusano pchiusano self-assigned this Aug 19, 2021
@pchiusano pchiusano changed the title Cut M2h release M2h Release Aug 20, 2021
@pchiusano pchiusano changed the title M2h Release M2h Release Notes DRAFT Aug 23, 2021
@pchiusano pchiusano changed the title M2h Release Notes DRAFT M2h Release Notes Aug 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P1 High priority release-notes
Projects
None yet
Development

No branches or pull requests

1 participant