unison

A friendly programming language from the future

OTHER License

Stars
5.6K

Bot releases are hidden (Show)

unison - release/M4

Published by aryairani over 2 years ago

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

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
unison - release/M3

Published by aryairani over 2 years ago

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: https://github.com/unisonweb/unison/compare/release/M2l...release/M3

unison - release/M1m

Published by aryairani over 4 years ago

A hotfix for pull performance issues; and a few other nice fixes. ๐Ÿ˜ฌ

pull/merge performance improvements:

  • short-circuit when merging into empty namespace. #1528
  • LCA-based three-way merge. #1545
  • queue-copy sync algorithm. #1548, #1565
  • FileCodebase cache. #1549
  • fixed one source of unnecessarily high memory usage during pull. #1561

UCM changes:

  • dependencies and dependents command now produce numbered arg output (#1543, thanks @pt2121)
  • add merge.squash command which discards intermediate history when merging. #1465

Bug fixes:

  • fix for no-op pulls incorrectly setting the root namespace to the pulled namespace. #1501
  • fix slowness issue when viewing terms that reference Term.Link (e.g. unison docs). #1493
  • fix for calls to io.IO.throw. #1572
  • added debug.push-exhaustive and debug.pull-exhaustive. #1570

Improved messages:

  • fix typo in delete.link docs (#1499, thanks @virusdave)
  • improve codebase init tip (#1498, thanks @pt2121)
  • add a warning message when the root namespace is changed unexpectedly. #1503
  • tweak delete.{term,type}-replacement help text (#1511, thanks @atacratic)
  • repeat the user-provided path back in -codebase <X> init tip (#1529)
  • improve pull-request.create help example (#1555, thanks @ceedubs)
  • print ucm version in welcome message (#1558, thanks @ceedubs)
  • flip merge history to not be upside down. #1557
unison - release/M1l

Published by aryairani over 4 years ago

A hotfix for ucm. So hot!

Fixes:

  • the .unisonConfig parser was rejecting keys starting with underscores (#1469)
  • the typechecker was assigning the wrong type to {Nat,Int}.complement (#1466, thanks @atacratic!)
unison - release/M1k

Published by aryairani over 4 years ago

A quick bugfix for new M1j installs that also slurped up two other recent PRs. ๐Ÿ˜ฌ

New features:

  • Some more bitwise operations on Int/Nat (#1456, thanks @stew!)

Fixes:

  • correct the suggested url for pulling base (#1463)
  • copy.patch src dest was actually moving dest to src (#1458)
unison - release/M1j

Published by aryairani over 4 years ago

Thanks to @pete-ts, @noahhaasis, @stew, and @atacratic for their contributions to this release!

New features:

  • delete.term-replacement and delete.type-replacement commands (#1360)
  • create.author command (#1400)
  • dependents, dependencies, debug.file commands (#1401)
  • suffix-based name resolution for view/display (#1241)
  • six new operations: ##Int.shiftLeft, ##Int.shiftRight, ##Int.pow, ##Nat.shiftLeft, ##Nat.shiftRight, ##Nat.pow (#1427)
  • support for default metadata in .unisonConfig (#1432)

Changed behavior:

  • builtins.merge no longer includes the contents of IOSource.hs; use builtins.mergeio to get everything (#1411)

Fixes for:

  • a crash in the auto-completion for push (#1374)
  • a bug that caused update to produce too many updates (#1382)
  • reduce the amount of git output belched out by push/pull (#1387)
  • putSymbol growing hidden variable names with each reproduction (#1389)
  • unnamed transitive dependencies were not being included on push (#1317)
  • transcripts now show the output of a failing stanza, even if it was hidden (#1345)
  • a bug in decompiling Bytes values (#1428)
  • pretty-printing non-ascii chars (#1437)
  • many message & formatting improvements (#1372, #1403, #1405, #1407, #1424, #1425, #1440)
  • pull importing more than necessary of the remote repo (#1439)

Speed improvements:

  • ucm starts up a bit faster (#1411)
  • new caching for git operations (#1439)
unison - release/M1i

Published by aryairani over 4 years ago

Thanks (in no particular order) to @pete-ts, @mitchellwrosen, @bontaq, @atacratic, @anovstrup, @pt2121, @anchpop, @dandandan, @moses-alexander, for your contributions to this release!

New features:

  • new pull-request.create and pull-request.load commands to support PR workflows (#1328, #1197, #1209)
  • new alias.many command lets you copy multiple definitions' relative names at once to a destination namespace. (#1236)
  • new back command to jump to the namespace you last cded from. (#1294)
  • add :hide:all option for unison and ucm fences in transcripts (#1167)
    allow

Changed behavior:

  • changed case/of syntax to match/with (#1214)
  • link and unlink argument order has flipped from link <metadata> <definition> to link <def1> [<def2> ...] <metadata> (#1208, #1127)
  • add LambdaCase style cases syntax to replace x -> case x of (#1192)
  • improve argument support for alias.type/alias.term/replace.type/replace.term (#1334)

Fixes:

  • fix issue where a command that makes changes all over the namespace creates many history entries instead of one consolidated one (#1225, #1333), reverting #1085 for better or worse ๐Ÿ˜ฌ
  • remove term names from evaluation output in Docs (#1307)
  • fix accidental deletion of history for empty namespaces (#1337)
  • fix a pair of bugs that created and then couldn't cope with a loop in the namespace history (#1279)
  • some obvious speed fixes for push and pull (#1281, #1302)
  • allow add/update to create aliases without a big fuss (#1254)
  • don't cry about previously known constructors (#1352)
  • error messages and output message improvements (#1122, #1163, #1164, #1170, #1187, #1222, #1223, #1227, #1331 )
  • pretty-printing fixes (#1159, #1171, #1180, #1278)
  • fix a runtime bug that was causing issues with large lists (#1183)
  • unique type hashes are chosen with a deterministic seed when running transcripts, for deterministic transcript output (#1237)
unison - release/M1h

Published by aryairani over 4 years ago

Thanks (in no particular order) to @atacratic, @TomasMikula, @mitchellwrosen, @pt2121, @noahhaasis, @alvaroc1, @int-index, @matthewess, @anovstrup, and @pete-ts, for your contributions to this release!

New features:

  • Native Nat.toFloat (#1012)
  • add bug : a -> b and todo : a -> b builtins, which print their arguments and terminate (#881)
    (todo calls will probably show up in the todo ucm output in not too long)
  • Combined delete command (#1036) (no longer need to distinguish between terms and types)
  • show branch diff after delete (#1068)
  • add load command to manually load a .u file into ucm (#1099)
  • added pretty-printer support for Doc literals (#994)
  • added diff.namespace command which prints the diff between two namespaces (#1064).
    the new diff output is also used now by relevant existing commands.
  • the codebases that result from running a unison transcript are now only saved if the -save-codebase flag is passed to the transcript command. (#1155)

Changed behavior:

  • handle e with h syntax (#1159) instead of current handle h in e.
    fun fact: your existing code automatically reflects this syntax change ๐ŸŽ‰
  • read .unisonConfig from the directory that the codebase is in (i.e. your home dir) (#1031)

Fixes:

  • Fixed pretty-printing of Char when it is part of a pattern (#1008)
  • Hopefully more rebust debouncing logic for file events (#1019)
  • Update propagation algorithm fixes (#996)
  • Rendering cleanup in names output (#1002)
  • Fixed term printer for delayed bindings (#1007)
  • fixed hashing issue for some effectful functions (#1020)
  • suppress welcome message when using ucm run (#1057)
  • add POSIX compilant ctrl-c handling (#912)
  • better typechecking message when .u file contains multiple definitions with the same name (#1077)
  • fix delete tab completion wasn't including types (#1076)
  • speed up todo output if there is nothing to do (#1088)
  • fix issue with cleaning up emptied branches (#1090)
  • clear cached typechecked file on parsing/typechecking error (#1138)
  • fix crash when current dir contains broken symlinks (#1144)
unison - M1g

Published by aryairani almost 5 years ago

  • Fix regression around pushing to new git repos, (sorry! #971)
  • Parsing and pretty-printing now use shortest unique suffix to identify definitions (#963) โ€”ย you can use Nat instead of .base.Nat when you only have one Nat!
  • Renamed resolve.term and resolve.type command to replace.term and replace.type (#988)
  • Some compiler cleanup (thanks @TomasMikula! #941)
unison - M1f

Published by aryairani almost 5 years ago

Point release in the M1 series. No codebase format changes.

  • Doc type with some special rendering in UCM (#914)
  • Change push/pull syntax to support remote Unison paths (#935)
  • First class links / references as Unison values (#901)
  • Typechecking bugfixes (#942, #947; Thanks @TomasMikula #924, #925, #932)
  • Codebase cleanup (Thanks @TomasMikula #887, #900, #907, #925, and @seagreen #934)
  • Better propagation of types (#889)
  • Numbered range args (#944)
  • Transcript error blocks fail only if all subcommands fail (#946)
  • Reflog cleanup (#951)
  • Parsing and pretty-printing use shortest unique suffix to identify definitions (#963)
unison - M1e

Published by aryairani almost 5 years ago

(Let me know if I missed something!)

unison - M1d

Published by aryairani about 5 years ago

Point release in the M1 series. No codebase format changes.

unison - M1c

Published by aryairani about 5 years ago

Point release in the M1 series. No codebase format changes.

Fixes #668, an infinite loop if search results include a type name that referred to more than one definition, a name conflict which can occur after merging two namespaces.

Pro tip: If you are upgrading from earlier in the M1 series, and end up in a situation where you have to choose between getting rid of List##List and List##Sequence, get rid of List##List. Sorry about that.

unison - M1b

Published by aryairani about 5 years ago

Point release in the M1 series. No codebase format changes. Recommended action is to pull latest unisonbase after upgrade:

.> cd .
.> pull https://github.com/unisonweb/unisonbase.git

Fixes:

  • #645, thanks to @zenhack for spotting!
  • unisonbase had an incorrect mapping for List type name: List a should be a synonym for [a] but it wasn't in unisonbase.
  • Minor lexing / parsing fixes when nesting ! and ' prefix operators.
unison - M1

Published by pchiusano about 5 years ago

Alpha testing release of Unison. Superseded by M1a, which has this important bugfix.

unison - M1a

Published by pchiusano about 5 years ago

Alpha testing release of Unison. Instructions for getting started.