You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
There's lots of new builtin functions, including UTF-8 encoding/decoding, various hashing algorithms, TLS support, and more. Work by @stew, @dolio, and @pchiusano. If you're interested in adding new builtins to the language, come chat in #contrib and see this guide.
Numerous improvements to the base library, including a new Map type, more ergonomic error handling and I/O functions, and more. Work by @runarorama, @stew, @rlmark, and @pchiusano.
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:
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:
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
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.
Uh oh!
There was an error while loading. Please reload this page.
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.
Other changes
Map
type, more ergonomic error handling and I/O functions, and more. Work by @runarorama, @stew, @rlmark, and @pchiusano.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.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:Let us know in Slack if you encounter any trouble with this.
Fetching the latest base library
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 torun
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 useedit
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:
cannot decompile to local recursive binding
#2061 Certain embedded examples in documentation result in an error on display.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):
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:PRs merged since last release
push
#2064 from unisonweb/fix/wal-flushucm help
for--old-codebase
#2062 from unisonweb/topic/--old-codebase-helpupgrade-codebase
to the ucm help #2058 from unisonweb/topic/upgrade-helpOne
isn't an LCA" algorithm with "empty
isn't real history" #2039 from unisonweb/fix/2004-2-hash_edits
toBranch0
hash calculation #2035 from unisonweb/topic/remove-v1-codebase-sync-testspush
by using fast SQL-basedBranch.before
calculation #1996 from unisonweb/feature/codebase-beforesquash a b
to properly short circuit in the case whereb <= a
#2002 from unisonweb/topic/squashbugerror
in the new runtime #1981 from unisonweb/topic/error-callsx = y
lets during compilation. #1974 from unisonweb/fix/1959Branch.before
that can use a custom LCA implementation #1964 from unisonweb/topic/better-branch-beforestatic
outside the auth token #1925 from unisonweb/topic/nostatictokenagainstack
from 2.5.1 to 2.7.1 #1924 from unisonweb/topic/stack-2.7.1io.Mode
andio.BufferMode
types in favor of versions inio2
package #1909 from unisonweb/fix/1890/api
and frontend from/ui
#1900 from unisonweb/topic/serverdeployrun
command #1896 from unisonweb/fix/1800None
in new runtime #1889 from unisonweb/fix/1888run.md
transcript #1833 from samgqroberts/1800-followonrun
ning an improperly-typed term #1814 from samgqroberts/1747.run-type-error-messageisPropagated
/isTest
metadata to codebase init andbuiltins.merge
#1808 from unisonweb/topic/init-metadata-termsAny
builtin type #1770 from unisonweb/topic/anyop
->reduce
in the code example) #1753 from noahhaasis/trunkcases
now uses commas to separate patterns #1738 from unisonweb/fix/1737cases
lambdas #1720 from unisonweb/topic/multiarg-casesMVar
and some associated operations, with a document on adding builtins #1671 from unisonweb/topic/adding-builtins/tmp
#1607 from lsund/master.
#1591 from unisonweb/topic/segments()
#1592 from unisonweb/topic/unitsegmentdebug.history
command to help render branch history #685 from unisonweb/topic/debug.branch_historyNames2.hqTypeName
#672 from unisonweb/fix/668The text was updated successfully, but these errors were encountered: