Alexandre Marcireau: GitHub Actions for the Event Processing Library Faery

Explore how to use GitHub Actions and cibuildwheel to automate cross-platform compilation and deployment of the Rust-backed Faery event processing library.

Delivering high-performance computational speeds in Python often requires writing core components in lower-level languages like C++ or Rust. However, this creates a massive deployment headache, as end-users are frequently forced to navigate compilers and dependency chains just to install the library. In this Hacking Hour, Alexandre Marcireau demonstrates how to establish robust Continuous Integration and Deployment (CI/CD) pipelines using GitHub Actions to automate cross-platform wheel compilation for the Faery library.

Key Takeaways

  • Pre-compilation is mandatory for usability: Requiring end-users to compile Rust code locally severely limits a library’s adoption. Providing pre-compiled binary “wheels” ensures that a standard pip install works flawlessly out of the box.
  • cibuildwheel automates the matrix: Managing builds for varying Python versions across Intel and ARM architectures on Linux, macOS, and Windows is incredibly tedious. Using cibuildwheel abstracts this complexity, automatically orchestrating isolated build environments for every target hardware profile.
  • Testing happens on the local build: A CI pipeline must verify the newly compiled wheel, not the legacy version already hosted on PyPI. By utilizing specific flags (--no-deps --find-links), the action can forcefully install and test the isolated local build before validating a release.
  • Git submodules must be explicitly requested: When an open-source project relies on a low-level submodule (like rust-numpy), GitHub Actions will fail to compile unless the checkout step explicitly includes submodules: true to fetch the external dependency tree.
  • Secrets protect the supply chain: Automating uploads to the Python Package Index (PyPI) introduces security vulnerabilities if handled improperly. The workflow securely utilizes GitHub Secrets to inject PyPI API tokens at runtime, safeguarding against malicious code injection.

What Was Built / Demonstrated

The session walked through writing a GitHub Actions workflow from scratch. The YAML file was configured to trigger automatically on both repository pushes and manually drafted releases.

The live debugging process highlighted how to correctly clone the rust-numpy submodule, how to set up the cibuildwheel architecture targets, and how to verify that the generated binary artifact successfully imports via Python without throwing segmentation faults. Finally, the necessary steps to bundle a Source Distribution (sdist) and pipe the finished assets directly into a PyPI release were established.

What This Means for Neuromorphic Computing

The neuromorphic ecosystem relies on heavily optimized event-processing routines, meaning libraries must inherently utilize high-performance languages under the hood.

By investing time into establishing sophisticated, automated GitHub Actions pipelines, maintainers guarantee that their neuromorphic tools are actually usable by the broader community without demanding deep systems-programming knowledge from the researchers utilizing them. This continuous integration approach ensures that breaking changes across operating systems are caught immediately during Pull Requests, keeping the software highly stable.

Resources

About the Speakers

Alexandre Marcireau

Alexandre Marcireau

Software developer in neuromorphic computing, recognized for his contributions to the Faery event processing library for event-based camera data.
Jens E. Pedersen

Jens E. Pedersen

Doctoral student at KTH, modeling neuromorphic systems to solve real-world challenges. Maintainer of Norse, AEStream, Faery, and co-author of NIR.
Social share preview for Alexandre Marcireau: GitHub Actions for the Event Processing Library Faery

Next Hacking Hour

No Hacking Hours are currently scheduled. Check back soon for new events!

In the meantime, join our Discord to connect with the community and see what others are working on.

Inspired? Share your work.

Share your expertise with the community by speaking at a workshop, student talk, or hacking hour. It’s a great way to get feedback and help others learn.