warp.build changelog

Warp v0.0.44

(and I swear we are not only doing releases every 11 patches 😂  :pepescream: )

⚡️ Instant Setup: new and existing projects can now be set up incredibly quickly with warp init. This flow will ask you to choose whichever languages and tools you are going to use (`ruby`, erlang, make, etc), and will prepare your workspace for it.

If your project already has sources in it, we will also run a lifter

A lifter is a tool that analyzes an existing project and knows how to:

1. build a dependency graph for Warp

2. detects all the necessary dependencies for your project

By the end of this process you should be able to run warp build and warp test to incrementally build and test your project.

> NOTE: static analysis is hard and existing projects come in all shapes and sizes, so while we can guarantee that the lifters will make the initial setup much nicer, sometimes they just make silly mistakes. Like treating all your test fixtures as actual code. Keep this in mind!

Check out this video where we set up warp on the verl repository in 20 seconds and get incremental builds of ~70ms: https://www.youtube.com/watch?v=f6ngarxsdUE

📦 Dependency Management: now warp helps you keep your dependencies tight and fast! We have a clever tiny architecture that helps us use any ecosystem's best tools to figure out where a dependency is, and how to build it. When your build targets now depend on URLs like https://hex.pm/packages/phoenix, you will see a new line in the command line that reads:

  Resolving "https://hex.pm/packages/phoenix"

This will also recursively get all the dependencies that are necessary.  Remote-caching is currently enabled for these dependencies, so if someone else has already built Phoenix, noone else will needs to do it again!

Lastly, you will find that the lifters write into a file called .warp/Dependencies.json where all of the dependency versions are specified.

📜 Fewer Files, and all JSON: while not a feature, we have moved away from TOML and onto JSON. All future configuration will happen with a variant of JSON that supports comments in it.

We are also working towards moving away from Build files to provide an even cleaner experience. More news soon!

🐛 Bugfixes:

* Fixed concurrency bugs and improved store locks

* Workspaces can now depend on themselves (useful if you're providing tools that you also want to run in the same repo)

* Fixed stack overflows when importing JS modules due to a large number of Rust Futures