../announcing-aya

Announcing Aya

Aya is a new eBPF library for the Rust programming language, built with a focus on developer experience and operability.

Today I am very excited to announce the first release of aya, a brand new eBPF library for the Rust programming language! Aya differs from the existing eBPF libraries in two important ways:

Aya was built with a focus on developer experience and operability. It does not require a C toolchain to build and doesn't even require kernel headers. Compiling the crate in release mode takes only a few seconds. ⚡️

Features

This is the first release, but the project has been six months in the making and is already packed with features. The release includes:

Roadmap & Community

The API is currently unstable, although I'm not expecting it to change drastically. The current plan is to stabilize the API and add support for more eBPF features, aiming to get close to feature parity with libbpf by the end of the year, and then release 1.0 in January 2022.

The aya crate includes the user-space part of aya, in other words what you use to to load, attach and interact with eBPF programs. If you look at the git repository, you'll also see code to write programs in Rust. This part is still in flux and will be released separately. Meanwhile in case you missed it, the rustc BPF target was finally merged last week, so writing eBPF in Rust just became a whole lot easier.

Over the last year I've talked with many folks interested in using eBPF in the Rust community. My goal is to get as many of you involved in the project as possible! Now that the rustc target has been merged, it's time to build a solid foundation so that we can enable developers to write great eBPF enabled apps!

If you run into any problems using the library, please open an issue on github. Aya does not support an eBPF API you are currently using or wish to use? Implement it and create a pull request, or feel free to open an issue. This will help me prioritise future work.

I will be setting up a chat channel for the project, most likely on Zulip, but I'm open to suggestions. If you have any comments or suggestions, feel free to @ me on twitter.