Serdar Yegulalp
Senior Writer

What you need to know about Go, Rust, and Zig

feature
Mar 26, 20256 mins

Go, Rust, and Zig are three of the most popular new programming languages of the past decade. Hereโ€™s what you need to know about their best uses, features, and where theyโ€™re headed.

3 stars, award, dark background
Credit: George Dolgikh / Shutterstock

Every language has a life cycle. Sometimes it starts with a relatively narrow use case and escapes its container; sometimes itโ€™s intended as a general-purpose language but finds a powerful niche instead.

Over the last decade-plus, three new languages have emerged as attention getters in the software development space. In this article, weโ€™ll look at whatโ€™s so special about each of these languages, and where they may be headed.

Go

With its relatively minimal syntax, simple paradigms, and convenient deployment tooling, the Go language, created by Google, has made it easier to write fast, compact programs that donโ€™t require developers to think heavily about memory safety.

In the decade or so since its introduction, Go has found a few niches where it flourishes. Network or web services, particularly those with asynchronous behaviors, are easy to write in Go. Itโ€™s become a powerful alternative to Python in that respect. Go can scale to handle far more traffic than Python does, and with less effort. Applications delivered as standalone binaries, like command-line tools, are another good fit for Go. Compiled Go programs can run without external dependencies and can be built for every major platform.

Goโ€™s biggest obstacles and developer complaints often stem from one of its chief selling points: the deliberate simplicity of the language. Goโ€™s maintainers try to keep its syntax and feature set as unadventurous and unchanging as they can, with a goal of remaining forward-compatible.

But Goโ€™s choices can also feel like a calculated snub of the powerful features that programming languages have gained over the past few decades. Generics were added to Go only very recently, and error handling is closer to Cโ€™s way of doing things than anything else. Itโ€™s a welcome attitude in a world of moving too fast and breaking too many things. It also enforces constraints on development, which may be difficult to outgrow for projects dependent on Go.

Rust

When a program needs both memory safety and speed, Rust is the language that regularly bubbles to the top of the list. Rustโ€™s whole m.o. is delivering fast, machine-native code that canโ€™t make whole classes of memory-safety errors, as they simply never make it into production.

The explosion of enthusiasm around Rust and its powers has left it with a wide realm of use cases. Most are server-side, cloud-computing, distributed-system, or network-centric appsโ€”things once typically the domain of only Java or C++. Itโ€™s also found a strong presence in the WebAssembly world, as it can compile natively to WASM and thus be re-used in many other contexts.

The most newsworthy application of Rust, if not the most widely used, is in replacing C/C++ code in existing โ€œbrownfieldโ€ projects. The Linux kernel maintainers are working out (albeit with some difficulty) plans for including Rust code strategically in the kernel. This isnโ€™t to edge out the use of C altogether, but rather to employ Rust where itโ€™ll afford the biggest payoffs with the least additional maintenance burden (e.g., device drivers). The goal is to enhance memory safety without forcing Linux kernel C developers to retool in Rust if they donโ€™t want to.

Some Linux kernel developers resist the move, citing common complaints about the language such as its steep learning curve and ahead-of-time complexity. Rustโ€™s memory safety requires programmers to think ahead about how to satisfy the compilerโ€™s demands, and adapting to that mindset is a common rite of passage for Rust newcomers. Plus, Rust projects often require dozens or hundreds of external dependencies that slow down compile times, an echo of similar sprawl in the world of JavaScript.

Thereโ€™s no question about the demand for memory safety along with speed. The ideal would be a more streamlined version of Rust, or a new language that offered the same benefits without Rustโ€™s conceptual overhead. For now, though, thereโ€™s no question Rust has galvanized a generation of developers who want what it offers.

Zig

Andrew Kelleyโ€™s one-man programming language project, launched in 2015, is positioned as both a complement and a competitor to C. Zig aims at much the same space as C: the world of low-level, non-garbage-collected, portable languages. Zig also compiles to the same kinds of targets as C, including WebAssembly.

Unlike C, though, Zig has native features to make it easier to write memory-safe low-level code. And unlike Rustโ€”the other major language in this spaceโ€”Zig does not require programmers to work so hard for the sake of correctness. Memory management is done manually, but the language provides more syntactical tooling than C does for handling memory. One example is Zigโ€™s defer statement, used to clean up resources at the end of a scope. Many common runtime issues like integer overflow are trapped by default and can be granularly overridden (albeit only in a given scope), but the default is toward safety.

One way Zig aims to replace C is by integrating elegantly with itโ€”by sitting side-by-side and even using Cโ€™s own libraries. This gives those developing C applications a transition path to Zig that doesnโ€™t require scrapping and redoing everything. The Zig compiler can even function as a C compiler, and can build Zig libraries with C ABIs to allow C to use Zig code.

Zigโ€™s biggest obstacles are typical for any new language. The language itself is in flux (its current version is 0.15), with potential breaking changes at any point along the way. The legacy world it aims to displaceโ€”the C โ€œcinematic universeโ€โ€”is also immensely entrenched, comprising not just the language but the development culture of C.

Another barrier common to new languagesโ€”tooling in common editors and IDEsโ€”seems to be dissolving quickly, however. A Zig add-on in Visual Studio Code provides the compiler itself, not just a language server, as an easily integrated component to the editor.

Serdar Yegulalp

Serdar Yegulalp is a senior writer at InfoWorld. A veteran technology journalist, Serdar has been writing about computers, operating systems, databases, programming, and other information technology topics for 30 years. Before joining InfoWorld in 2013, Serdar wrote for Windows Magazine, InformationWeek, Byte, and a slew of other publications. At InfoWorld, Serdar has covered software development, devops, containerization, machine learning, and artificial intelligence, winning several B2B journalism awards including a 2024 Neal Award and a 2025 Azbee Award for best instructional content and best how-to article, respectively. He currently focuses on software development tools and technologies and major programming languages including Python, Rust, Go, Zig, and Wasm. Tune into his weekly Dev with Serdar videos for programming tips and techniques and close looks at programming libraries and tools.

More from this author