Secure software is reliable software
The C programming language is almost 50 years old, and it shows – memory corruption vulnerabilities are a constant concern for any software written in C/C++.
Rust is a systems programming language that compiles directly to machine code and executes without a runtime. It offers memory safety without sacrificing performance and footprint.
The language is governed by an independent foundation whose membership includes some of the biggest names in tech such as Microsoft, Google, and Amazon.
Introducing Rust
Why Rust
- Performance and efficiency of native code
- Memory and thread-safety of high-level languages
- Interoperable w/ C and other languages via the C ABI
- Best-in-class support for writing asynchronous network applications
Our Approach to Bindings
- Write a protocol library in idiomatic safe Rust. Native Rust applications may use this library directly.
- Create a model of an ideal C API and object-oriented mapping to the library using an internal tool we call oo_bindgen. Use the model to generate bindings for multiple languages including C/C++, Java, and C#, and the Rust foreign-function interface (FFI).
- Implement the Rust FFI stubs generated in step 2 to connect to the idiomatic Rust API in step 1 to the core library.
- Compile the the Rust library and FFI interface into a single shared library consumable from any language that understands the C ABI.
Articles about Rust
Rust is one of our favorite topics. Check back for more articles about the language and its application in industrial control systems.
Battalion Energy
I’m pleased to announce that I’ve joined Battalion Energy as cofounder and CTO. We’re building a cloud + edge controls platform focused on battery energy storage. There are so many things that excite me about this venture: Extremely talented founding team with a track record of building Awesome Things™. Building a modern and secure controls platform using 🦀Rust🦀 and webassembly! Disruptive business model in a rapidly expanding market. Company focus on open APIs, open ecosystems, and playing nice with others.
Read MoreProtocol Scalability
Building systems that scale is becoming critically important as the power grid undergoes a rapid transformation to meet the challenge of renewables and climate change. Software architecture is crucial to scaling communications solutions for emerging applications like distributed energy resources (DERs). This blog post discusses how software architecture affects the scalability of communication protocols and provides performance data for our protocol offerings. Parallelism vs Concurrency The Internet experienced its largest growth in user base from 1995 to 2000.
Read MoreRust on Embedded Linux
We made the pragmatic decision early on to build our libraries on top of Tokio, which supports common operating systems like Linux, Windows, and MacOS. Although Rust can target bare metal, the async and library ecosystem for no_std is still rapidly evolving. Embedded Linux Despite this limitation, our libraries are still great for resource constrained environments by deploying on embedded Linux. Every release of our software includes pre-compiled libraries for popular embedded Linux architectures such as ARMv6/v7 and ARM-64.
Read More