Bash: Comprehensive Dependency Management
11-09, 21:25–21:27 (UTC), Plenaries

Bash is known for being a quirky language, mainly used to glue different programs together in small scripts. As a result of this perception (and partly due to a lack of language features), Bash has a weak library ecosystem. All things considered, this makes it difficult to find and integrate Bash code that is both robust and devoid of platform-specific hacks.

I wish to solve this predicament by proposing a Bash package manager called Basalt. It standardizes and substantially simplifies the problem of code reuse across Bash projects. Basalt is defining what it means to create a “Bash library” and a “Bash application”; it is also enabling the emergence of cutting-edge Bash libraries, such as complete TOML parsers.


Basalt is a Bash package manager that makes it dead simple to download and reuse shell scripts and Bash libraries. It can resolve dependencies for a particular Bash project, or globally for a particular user. Its CLI and configuration interface is inspired by both Yarn and Cargo. Basalt is breaking the mold of what it means to create a Bash application. Not only is it enabling the emergence of TOML parsers written in pure Bash, but it is also making it straightforward to improve performance by making dynamically loadable custom builtins a first-class feature.

In this lightning talk, I quickly explain the problems of code reuse in Bash projects, and explain how Basalt solves various use cases. Then, I provide a birds-eye view on the internals of Basalt and wrap up the talk by mentioning what’s next on the roadmap.

A college student with ambitions. Lately, I've been writing Bash and Go with the goals of improving tooling across linux distributions and languages.