Tangram is a programmable build system and package manager in which all dependencies are specified explicitly and pinned with a lockfile. You get the exact same versions of every package on every machine, so your builds are simple, reproducible, cacheable, and distributable.
Create a tangram.json file at the root of your project and add some dependencies. Now run tg shell. This will create a tangram.lock file and drop you in a shell with your dependencies in $PATH. This is a great way to make sure everyone on your team is using the exact same versions of all the tools you need to work on your project.
Use Tangram to build both your dependencies and your code. In this example, we build a Rust project and specify the exact version of the OpenSSL C library to link to.
Use the buildContainerImage function to build a container image. In this example, we build a container image with a simple python project. Container image builds with Tangram are fast, reproducible, and minimal.
Tangram packages come with a lot of options for customization. In this example, we build the Zig compiler at a particular revision from GitHub and apply a patch from an unmerged pull request. Now every machine that uses this shell will have the same custom build of Zig.
Everything you build with Tangram is self contained and isolated from the rest of your system, so you can try software without affecting your other projects.
Tangram has built-in virtualization so you can run builds and shells for other architectures and operating systems. Try the command below on macOS.