Turborepo Performance Optimizations
Using Zig in our incremental Turborepo migration from Go to Rust

Using Zig in our incremental Turborepo migration from Go to Rust

9/8/2023

What this post added

This post details an incremental migration strategy for porting Turborepo's core commands (`run` and `prune`) from Go to Rust. It introduces the "Rust-Go-Rust sandwich" (or "Go sandwich") architecture, where a Rust binary calls a Go binary which, in turn, calls statically linked Rust libraries. This approach uses protobuf for inter-language communication and Go build tags to enable toggling between Go and Rust implementations. The post also outlines a specific example of porting environment variable handling for the global hash calculation.

Read the original post ↗