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

Billboard image

Monitor more than uptime.

With Checkly, you can use Playwright tests and Javascript to monitor end-to-end scenarios in your NextJS, Astro, Remix, or other application.

Get started now!

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay