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 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
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:
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.
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.
Our last release was M2g. Here's a summary of what's new since then:
ucm
command,ui
. It pops open a web browser with the codebase UI open. Work by @hojberggetLine
(reading a line from a file handle or standard in) andgetDirectoryContents
by @runaroramagetEnv
(getting environment variables) by @stewInt
<->Float
<->Nat
by @stewBytes
in little and big endian byte order, forNat
values of various widths by @stewucm
command line arguments are now parsed more uniformly, tryucm --help
and see Convert CLI to optparse-applicative (revived) #2280. Work by @ChrisPenner and @shmish111Upgrading
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.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.If you have definitions that depend on old definitions, you can find that out by doing:
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:
Assuming that reports "Nothing to do", you can
delete.namespace mycode
and thendelete.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?
update
process.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):
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
removePureEffects
#2343 from unisonweb/topic/covariant-variablesui
command to open the Codebase UI #2331 from unisonweb/ui-cmd/find
results #2322 from unisonweb/dedupe-find-resultscoalesceWanted
#2300 from unisonweb/fix/2297debug.dump-namespace-simple
command #2293 from unisonweb/topic/dump-namespace-onelineException
ability to be used by main functions #2029 from unisonweb/feature/exceptionscases
ormatch
expression #2250 from unisonweb/feature/multiguardRemoteRepo
#2246 from unisonweb/topic/remoterepo-revampgetDefinition
endpoint #2116 from unisonweb/feature/2112Nat./
andNat.mod
#2233 from unisonweb/topic/natdivmodCodecs.hs
#2222 from unisonweb/topic/delete-codecs{-#COMPLETE#-}
seems to have been fixed #2192 from unisonweb/topic/reference-completeValue.load
#2182 from unisonweb/fix/value-loadingreplace
command instead ofreplace.term
andreplace.type
#2135 from tapegram/tavish/replace_supports_term_and_typeand
andor
with&&
and||
in boolean mismatch message #2125 from tapegram/tavish/update_error_message_for_boolean_mismatchdirectoryContents
builtin #1994 from unisonweb/topic/directorycontentThe text was updated successfully, but these errors were encountered: