SEGGER licenses C++ runtime library to SiFive for code size and performance efficiency
SEGGER announces that SiFive, Inc., the founder and leader of RISC-V computing, has licensed SEGGER’s cutting-edge emRun++ C++ library for RISC-V.
emRun++ is a complete C++ standard library specifically designed and optimised for GCC/LLVM-based toolchains and embedded systems. It is based on SEGGER's efficient emRun and emFloat runtime and floating-point libraries.
“After licensing and integrating SEGGER’s emRun C runtime library for RISC-V into our Freedom Studio IDE and Freedom Tools packages in 2021 and experiencing its superior code size and performance compared to existing open-source alternatives, the next step was to consider C++ support. It was an easy decision to upgrade to emRun++ once it became available for licensing,” said Sam Grove, Director of Product Management – Software at SiFive. “As a modern programming language, C++ has become increasingly important in the embedded sector, offering developers more and more options. It is essential for SiFive to be able to offer a state-of-the-art C++ library to our customers. emRun++ is perfectly suited for this purpose.”
“SEGGER’s emRun++ is a proven part of our multi-platform Embedded Studio IDE. The memory footprint and the performance are simply amazing,” says Rolf Segger, Founder of SEGGER. “SiFive customers have already been enjoying the benefits of the SEGGER emRun C library, and soon, C++ developers using SiFive tools will also benefit from emRun++.”
emRun++ guarantees fast heap operations with a low instruction count, enabling even hard real-time applications to be written in C++. To support common embedded use cases even on resource-constrained targets, the C++ library is available in a ‘no-throw’ configuration, avoiding overhead associated with exceptions.
Designed specifically for embedded systems, emRun++ provides interrupt-safe memory management, allowing use of C++ in Interrupt Service Routines.
emRun++ includes a complete C++17 Standard Library with standard algorithms (sorting, searching, transformations), generic container templates (such as sets, vectors, lists, queues, stacks, maps), function objects, iterators, localisation, strings and streams, and utility functions for everyday use cases.