Noir Debugger Released!

What is Noir?

Noir is an open source Domain Specific Language for safe and seamless construction of privacy-preserving Zero-Knowledge programs, developed by Aztec Labs. ZK programs are programs that can generate short proofs of a certain statement without revealing some details about it. You can read more about ZKPs here.

Noir's design choices are influenced heavily by Rust and it focuses on a simple, familiar syntax.

Noir can be used both in complex cloud-based backends and in users' smartphones, requiring no knowledge of the underlying math or cryptography. From authorization systems that keep a password in the user's device, to complex on-chain verification of recursive proofs, Noir is designed to abstract away complexity without any significant overhead.

Why do we want a Noir debugger?

We've all been there: we wrote some code, we wrote some tests, ran the tests and... 🚩.

At first sight, the code looks correct, what could be wrong? Time to roll up our sleeves and look harder. Typically we have at least 5 ways of going about this:

Each of these methods comes with its own strengths and blindspots, so in an ideal world our programming language of choice makes all of them available for us to leverage.

If you're a Noir programmer, you're well aware of how focused the Noir team at Aztec Labs is on providing a world class developer experience. That's why we teamed up with them to build a debugger for Noir, and now we're thrilled to announce its release! We hope the debugger will enrich the already amazing developer experience of building with Noir.

With this initial release, you can choose whether to debug your Noir programs either from the terminal via a REPL interface, or using Visual Studio Code. Either version of the debugger lets you step through programs, observe program state, work with breakpoints and inspect the assembly code your Noir programs get compiled into.

Getting started

The Noir debugger is available since Noir version 0.27.0. It ships with Nargo, so if your Noir dev environment is more or less up to date, all you need to do to start a debugger session is to run

$ nargo debug

from the root of a Noir project.

If you develop in VS Code, chances are you will want to debug from the editor. To get started, ensure you have the following prerequisites:

Once all the prerequisites are in place, you can visit Noir’s official documentation site to find the debugger’s reference and tutorials.

Under the hood

In case you're curious about how the debugger works, we wrote a high level overview here. If that leaves you wishing for more geekery, stay tuned since we plan to continue writing about it in the near future!

Come, contribute

We encourage you to add the Noir debugger to your Noir tool belt and help us improve it by requesting features or submitting PRs to the Noir repository. Or, join the conversation on Noir's tooling Discord channel to share your feedback and connect with other Noir developers.

About Us

At Manas, we build unconventional software. With over 15 years of experience in creating developer tools (including our beloved Crystal programming language), we have a proven track record of delivering high-quality projects across various industries. From PCR data analytics platforms in the medical instruments space, to astronaut helmet firmware in the aerospace industry, to tools for epidemiologists and other humanitarian sector workers, we take pride in designing and developing technology that attends to the needs of its users while furthering business goals.

The Noir debugger is our first sizeable contribution to the ZK space, and it's certainly not going to be the last ;-)

Do you need help with your next technological challenge? Let's work together.