Skip to content

M2 Release Notes #1930

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

Closed
pchiusano opened this issue May 11, 2021 · 0 comments
Closed

M2 Release Notes #1930

pchiusano opened this issue May 11, 2021 · 0 comments

Comments

@pchiusano
Copy link
Member

pchiusano commented May 11, 2021

Our last release was M1m back in May 2020! There have been a lot of changes, but here's a summary of what's new.

  • There's a new UI for navigating a Unison codebase. There's a public version of this interface for base and other libraries at share.unison-lang.org and the M2 release serves up this UI for exploring your local codebase. Front-end by @hojberg and this uses an HTTP interface to the codebase written by @runarorama. If you have public Unison code you'd like to be browseable at share.unison-lang.org, open a PR here.
  • There's a new SQLite-based codebase format which is 100x smaller on disk and uses up to 75x less RAM, with more performance improvements on the way. Work by @aryairani.
  • There's a new computable documentation format which makes it a joy to write deeply interlinked documentation with embedded live examples. Work by @pchiusano. @hojberg will be working on rich rendering of these docs in the codebase UI for a subsequent release.
  • The Unison runtime has been rewritten: it's faster and has revamped I/O and concurrency primitives including software transactional memory and more. It uses a more traditional compiler pipeline which takes the code through several intermediate stages before execution. The current backend is an efficient Haskell-based VM, but we're considering other backends like JS for front-end development and a Chez scheme backend for producing native code. Work by @dolio. @jaredly has also done some very promising prototypes targeting Scheme.

Other changes

How to upgrade from previous releases

If you 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._latest .base_v2

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.

The new I/O type

The new runtime uses an opaque IO type that can't be handled with user code. If you try to run a program that uses the old type, it will complain that it doesn't have the correct type.

At the moment, we don't have any automated way of upgrading old IO programs. 😬 You can use edit to edit definitions manually.

We'll try to publish a patch that can be applied to at least partially convert to the new type.

Known issues

Here are a few issues that are pretty visible and which we expect to have fixed in the next point release:

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...origin/trunk | grep 'Merge pull request #'
@pchiusano pchiusano changed the title M2 Release Notes (DRAFT) M2 Release Notes Jun 4, 2021
@hojberg hojberg closed this as completed Aug 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants