#Unison 1.0 is here

9 messages · Page 1 of 1 (latest)

marble urchin
#
sinful garnet
#

woah, coool

misty shale
#

whats its selling point over something like elixir?

gilded belfry
#

Wow, never heard of it, but looks interesting :0

marble urchin
# misty shale whats its selling point over something like elixir?

An example is the zero-friction distributed computing, on Elixir you are responsible for ensuring the code exists on all nodes, if you want to run a function on Node B from Node A, Node B must already have that module compiled and loaded, you often need complex release management (like LibCluster or Kubernetes) to keep nodes in sync, but in Unison you can send a function to a remote node, and if that node doesn't have the code, it automatically syncs the dependencies because code is content-addressed (identified by a hash), the remote node knows exactly what it needs, you can write a single program that describes a distributed system, and the runtime handles "shipping" the logic to where the data is

Another example is the "no-build" workflow, Elixir uses a traditional compilation pipeline (Mix, Hex), you edit text files, compile them, and resolve version conflicts manually, if two libraries depend on different versions of e.g. Jason, you have a dependency hell problem, Unison code is stored in a database (the codebase), not text files, dependencies are linked by their hash, not a version number, you can use two libraries that depend on different versions of the same function simultaneously because they just point to different hashes, and renaming a function is an O(1) operation, since the ID is the hash, you can change the human-readable name instantly across the entire codebase without "breaking" anything

Unison is also statically-typed (with a modern type system that includes Abilities (Algebraic Effects), this allows you to define side effects (like I/O, State, or Remote calls) in the type signature)) unlike Elixir

#

Also you typically write your app in Elixir, but deploy it using Docker, Kubernetes, and YAML configuration files, but in Unison the "Cloud" abilities allow you to describe the infrastructure (databases, queues, cron jobs) inside your Unison code, you don't "deploy" in the traditional sense; you run a function that sets up the cloud environment

calm cosmos
#

what problems does this solve

lofty narwhal
#

holy crap I saw a strangeloop presentation about this language like 6 years ago

#

haskell meets elixir I love this already