Live data from Hacker News

Unison Cloud

unison.cloud

21–30 of 158 posts

Re: Unison Cloud

#21
post #12

I wonder if Unison Cloud is built with the Unison language, that would prove language maturity in my eyes.

Yes, it is! Of course there's other technologies involved but the core services for our compute fabric and storage layer are pure Unison[1]. A number of open source libraries in the Unison ecosystem were developed via us eating our own dogfood while developing Unison Cloud. Same with evolution of the language and tooling, which we've continued improving.

We have a few things still in Haskell which we'll probably move into Unison eventually.

[1]: Just to clarify, our storage layer wraps DynamoDB in an interesting way to provide the transactional API we wanted - we didn't literally implement our own cloud database on top of just the file system and some VMs. :)

Re: Unison Cloud

#22
OK, maybe this is a silly question, but if a function that is written once always refer to the same hash as when it was written, how do you update functions?

For example, if I have function A that calls function B, in today's languages updating function B would just work (A will call updated function). My understanding is that updated function B (we can call it B'), would not be used.

Re: Unison Cloud

#23
post #18

To me, the most interesting aspect is the Unison language, specifically how it does away with code-as-text, and instead uses a structured database, so one is dealing directly with the AST: https://www.unison-lang.org/docs/the-big-idea/ (It is not the only language to do so - see old.reddit.com/r/nosyntax) I hope this catches on, because parsing strings of text is a monumental waste of complexity.

This, plus abilities[1](what Unison calls algebraic effects), make Unison such a joy to work with, it's a very pleasant experience. You can get straight to the business logic.

I also hope it catches on, but Unison right now really gives a pleasant experience.

[1]: https://www.unison-lang.org/docs/fundamentals/abilities/

Re: Unison Cloud

#24

OK, maybe this is a silly question, but if a function that is written once always refer to the same hash as when it was written, how do you update functions? For example, if I have function A that calls function B, in today's languages updating function B would just work (A will call updated function). My understanding is that updated function B (we can call it B'), would not be used.

Unison developer here! Let's say you have some term:

B = "Hello "

and it hashes to #a3yx. Lets say you also have funcion:

A = B ++ "world" which hashes to #c7c1

when we store the A function, we actually store it as:

#c6c7 = #a3yx ++ "world"

Then later if you update the definition of B:

B = "Hello, "

and that function hashes to, #5e2b, when you tell unison to update B from #a3yx => #5e2b, it will look for all of the places that used to reference #a3yx, like your A function, and will see if those functions still typecheck with the replacement. If so, they are automatically updated. If not, we pretty print the definitions that didn't to a file for you to manually fix.

Re: Unison Cloud

#25

OK, maybe this is a silly question, but if a function that is written once always refer to the same hash as when it was written, how do you update functions? For example, if I have function A that calls function B, in today's languages updating function B would just work (A will call updated function). My understanding is that updated function B (we can call it B'), would not be used.

You update all the callers of B that you can see from your codebase. If `B` is a library then you publish an out-of-band notice that `B` is deprecated and they should switch to `B'`. It's the most extreme form of static linking you can think of (which is really nice for stability, not nice for speed-to-deploy-a-change).

Re: Unison Cloud

#26

OK, maybe this is a silly question, but if a function that is written once always refer to the same hash as when it was written, how do you update functions? For example, if I have function A that calls function B, in today's languages updating function B would just work (A will call updated function). My understanding is that updated function B (we can call it B'), would not be used.

That's a great question! (I work for Unison, full disclosure.)

The process for upgrading Unison code is that if you have a function A that calls B, and you update B in some way, as long as the change is type-preserving it will automatically be propagated to all the sites in your project where B is called. If the change is not type-preserving (for example, if you added a parameter) the tooling itself will direct you to resolve all the places where B is applied. So as you change code locally, you're continually keeping your codebase in sync; A will always be calling the updated function.

Here's an example from our docs: https://www.unison-lang.org/docs/usage-topics/workflow-how-t...

Re: Unison Cloud

#27

OK, maybe this is a silly question, but if a function that is written once always refer to the same hash as when it was written, how do you update functions? For example, if I have function A that calls function B, in today's languages updating function B would just work (A will call updated function). My understanding is that updated function B (we can call it B'), would not be used.

[deleted]

Re: Unison Cloud

#29
Exciting! I was wondering when this would be released given the website said (until a few days ago it seems) it would be ready in Dec 2023

Re: Unison Cloud

#30
post #7

Is Unison something I can easily self host? I wouldn't want to be vendor locked to Unison Cloud.

You can self host, yes, though you’ll probably be inventing a lot of wheels.
Post reply on HN