Skip to main content

New release - 0.6.0 ๐ŸŽ‰

ยท 2 min read

We went quite again for a while with the blog - between the last post, we released 0.5.* and now 0.6.0.

This time received contributions from 28 contributors! Thank you everyone! Let's take a quick look at what new in 0.6.0.

esy cleanupโ€‹

We added a sub-command cleanup to reclaim disk space by purging unused builds. Over time, cached builds would just accumulate in ~/.esy and the only way to reclaim space was to delete it entirely. Users had no way of knowing which cached builds were in use by projects and would end up seeing long build times again after deleting the the cached directory.

esy cleanup takes in a list of projects in use as arguments and removes all cached builds not needed by any of them:

$ esy cleanup ./project/in/use ./another/project

See docs for more information.

Improved solver performance with better CUDF encodingโ€‹

We re-worked how we encode dependencies which improved solver performance, fixed critical bug. More on this can found at issue #888

Recursive fetching of submodules, when building packages from sourceโ€‹

As a move towards ensuring better compatibility with opam, we recursively fetch submodules when fetching from git sources.

Now esy can install and build packages from git/github even if they depend on submodules.

Long paths on Windowsโ€‹

We were earlier constrained to only use 33 characters in the artifact paths in our binaries on Windows - this caused relocatability issues and delayed our plans of fetching prebuilts for esy sandbox. With this release, esy now enables long paths on supported Windows machines and brings back relocatability (and there shorted build times with prebuilts) back on the table.

Other Notable fixesโ€‹

Besides that 0.6.0 contains fixes for not a small number of bugs, many doc updates and small quality-of-life improvements. Some things worth mentioning:

  • More robust project discovery
  • Improved git source parsing
  • Test suite improvements
  • New command esy run-script SCRIPTNAME which provides a future proof way of running package.json scripts

The entire changelog can be found here.