DEV Community

IgorSusmelj
IgorSusmelj

Posted on

Building RustyNum: a NumPy Alternative with Rust and Python

Hey Dev Community!

I wanted to share a side project I’ve been working on called RustyNum. As someone who uses NumPy daily for data processing and scientific computing, I often wondered how challenging it would be to create a similar library from scratch using Rust and Python. This curiosity sparked the development of RustyNum—a lightweight alternative to NumPy that leverages Rust’s powerful features.

What is RustyNum?

RustyNum combines the speed and memory safety of Rust with the simplicity and flexibility of Python. One of the standout features is that it's using Rust’s portable SIMD (Single Instruction, Multiple Data) feature, which allows RustyNum to optimize computations across different CPU architectures seamlessly. This means you can achieve high-performance array manipulations without leaving the Python ecosystem. I wanted to learn building a library from scratch and as a result RustyNum is not using any 3rd party dependencies.

Why RustyNum?

  • Performance Boost: By utilizing Rust’s portable SIMD, RustyNum can handle performance-critical tasks more efficiently than traditional Python libraries.
  • Memory Safety: Rust ensures memory safety without a garbage collector, reducing the risk of memory leaks and segmentation faults.
  • Learning Experience: This project has been a fantastic way for me to dive deeper into Rust-Python interoperability and explore the intricacies of building numerical libraries.
  • Because no external dependencies are used the Python wheels are super small (300kBytes) compared to alternatives such as Numpy (>10MBytes).

When to Consider RustyNum:

If you’re working on data analysis, scientific computing, or small-scale machine learning projects and find NumPy a bit heavy for your needs, RustyNum might be the perfect fit. It’s especially useful when you need optimized performance across various hardware without the complexity of integrating with C-based libraries. However, be aware that the library is pretty much in its early days and only covers basic operations from Numpy as of today.

You can check out RustyNum on GitHub. I’d love to hear your feedback, suggestions, or contributions!

Thanks for reading, and happy coding!

Cheers,
Igor

Top comments (0)