Esy

Isolated. Project Local. Immutable.

Why Esy?

What we know about package managers - apt/pacman/yum

Opam switches

Next level of isolation - opam with switches

Problems with opam switches

Notorious caching problems :(

Cache granularity

If two or more projects compute the same hash for a dependency, they load the same cache entry

Reliably load edits to packages

Every changing factor creates a new hash, new cache entry.

Solution?

Immutable builds. Immutable store.

Flat list of cache entries

.
..
autoconf-46eff01f
automake-cc6bf193
esy_gmp-f843d617
esy_help2man-a0cdb66c
esy_hidapi-7c61947e
esy_libev-3bcb5978
esy_libffi-3.3.1-92ddd028
esy_ocaml__s__libffi-e571925b
esy_ocaml__s__substs-0.0.1-f9e9eafc
esy_rustup-1.51.1-e4714d40
libtool-19651123
ocaml-4.12.0-3a04ec8f
opam__s__alcotest-opam__c__1.5.0-6ee67267
opam__s__alcotest-opam__c__1.5.0-92dcc6cd
opam__s__alcotest_lwt-opam__c__1.5.0-46f59300
opam__s__alcotest_lwt-opam__c__1.5.0-47db368d
opam__s__alcotest_lwt-opam__c__1.5.0-73444aaf
opam__s__angstrom-opam__c__0.15.0-3bec9fcb
opam__s__angstrom-opam__c__0.15.0-3fbaa149

Reusable across sandboxes

Immutable

Every change of a package creates a new entry in the flat list with a new hash

Examples

Ligo. Deku.

Thank you!

I'm @ManasJayanth on twitter.

You can email me at hello [at] manas-jayanth [dot] com

These slides can be found at slides.manas-jayanth.com