This should avoid any possibility of picking conflicting names for
distinct functions. I'm not aware of any actual examples of this, but it
could in principle happen.
I decided to use the full length hashes because picking just-long-enough
names starts to become very cumbersome when doing dynamic loading. You
need to keep track of all your past choices, not just the choices for
the module you're loading, because the one you're loading could refer to
things in previously loaded modules. It would be possible to use shorter
names in a compile-time context, since you have all the names up front.
But you'd still have to remember _those_ for runtime loading, and it
seemed not worth it.
This doesn't include any custom error formatting, because I'd like to
see error messages in the wild before doing anything, but if they're too
verbose, it's possible to override the Racket error reporting to produce
shorter names there, rather than generating them up front.
also hides unimplemented `update.builtins`
removing some unnecessary `cd`s from these files produced different slurp output,
because we are no longer moving away to typecheck, meaning different names are in scope at slurp time
- propagate.md
- sum-type-update-conflicts.md
similarly, in `todo.md` it shifted the hashes for the same reason
Makes various internal values print more nicely, which makes debugging
more tractable. Links now print as base32hex strings like they would in
ucm. Functions inside unison structures print as their hash if possible.
Also, short hashes are printed in most cases, rather than the full hash.
Had to shuffle around some bytevector stuff to make the above work.
Pulled `tryEval` completely into primops, and made it directly do an
exception request, rather than implementing the TFRC pseudo instruction.
This requires a share bump, as does a fix to the `Failure` data info.
Some of the exception/failure related internal functions were wrapping
the last argument in Any when they shouldn't have, causing errors for
code expecting a single wrapper.
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.