Building a brand-new platform from the ground up offers a unique advantage: the freedom to choose the latest and most effective technologies without the constraints of legacy systems or vendor lock-in. This freedom enabled us to design a technology stack optimized for both current needs and future growth.
However, just because new technologies are available doesn’t mean they should be adopted blindly. The technology stack must serve the business today and be flexible enough to support future expansion. It should also be popular among top-tier developers and mature enough to avoid the pitfalls of being on the bleeding edge.
That’s why we chose Modern C++ for our high-performance core code, Next.js for the front-end GUI, and Rust for everything else.
Let’s break down these choices.
Modern C++: Performance, Security, and Reliability
Our core marketplace, the OpenYield order matching and execution platform, demands speed, reliability, and scalability. For this, we needed a low-level language that could leverage bare-metal hardware performance while offering robust tools for optimizing code. We also wanted a language that balances performance with security and is well-supported by a vibrant developer community.
Enter Modern C++.
But isn’t C++ an old, risky language?
Yes, C++ has been around for decades and is often criticized for its association with insecure C-style code. But Modern C++ is a different beast. By following the C++ Core Guidelines—which are based on proven best practices, even for mission-critical, military-grade systems—we take full advantage of the latest advancements.
We rely on the secure and mature Standard Template Library (STL), manage resources with RAII (Resource Acquisition Is Initialization), and employ templates and meta-programming to enforce compile-time contracts. This approach ensures that issues are caught early, exceptions are handled correctly, and raw pointers are virtually eliminated from our codebase. The result is a platform that’s compiler-optimized, stable, secure, and—most importantly—blazingly fast.
Next.js: Modern Web Development with React
For our front-end GUIs, accessibility and user experience are top priorities. We want users to access the platform on any device and enjoy a smooth, intuitive interface. To achieve this, we chose React, one of the most popular frameworks for building interactive user interfaces. And the best way to use React today is with Next.js.
Recommended by the React team itself, Next.js brings features like server-side rendering and static site generation, optimizing both the user experience and performance. We also opted for TypeScript over vanilla JavaScript, giving us the power of a typed language with the flexibility of JavaScript. This choice not only makes development faster and more robust but also ensures long-term maintainability. Plus, with giants like Microsoft using this stack for Azure and Visual Studio Code, we know it’s proven at scale.
Rust: Speed, Stability, and Scalability
For everything else—secure API servers, data loaders, reporting tools, and more—we needed a versatile language that could handle large-scale data and high-performance requirements while being easy to develop and maintain.
Our choice: Rust.
Rust offers the perfect blend of speed, memory safety, and developer productivity. Its memory safety guarantees eliminate whole classes of bugs, like null pointer dereferencing and data races, that can cripple performance or cause instability. Rust also boasts an exceptional library ecosystem, a helpful community, and robust tooling that makes development fast and enjoyable.
At OpenYield, Rust powers all non-GUI components, from API servers to data pipelines, ensuring that everything is secure, scalable, and ready for future growth.
Supporting Tools for a Robust System
Beyond programming languages, we needed reliable tools for storing and sharing data and facilitating communication between processes. We turned to the open-source community for the following technologies:
• PostgreSQL for our database needs
• gRPC and Protocol Buffers for reliable, high-performance communications
• Catch2 for testing
• Serde and nlohmann/json for handling data formats
• Tokio and Axum for building asynchronous Rust API servers
Together, these technologies enabled our small, talented team to create and scale an entirely new fixed-income trading platform, from concept to production, in just 15 months. And we’re just getting started. This combination of cutting-edge technologies and proven tools provides OpenYield with a strong foundation for growth, flexibility, and innovation in the years to come.