C and C++ to Rust, without giving up performance.

We move C and C++ code to Rust one module at a time, behind the interfaces the rest of the product already uses. Each module becomes memory-safe and thread-safe, stays native code, and is tested and benchmarked against the original before it ships.

  • Rust
  • C++
  • CMake
  • Python
  • WebAssembly
  • Docker
  • C to Rust
  • C++ to Rust
  • FFI and the C ABI
  • bindgen and cxx
  • Fuzzing
  • Differential testing
  • Benchmarks
  • Multithreading
  • Memory safety roadmaps
  • Security reviews
  • Dependency audits
  • Cross-compilation

More than memory safety.

Memory errors cause about 70% of serious security bugs in C and C++ code (Microsoft, Google). In Android, they fell from 76% of vulnerabilities in 2019 to 24% in 2024 as new code moved to memory-safe languages (Google).

We start where the risk is highest: parsers, network protocols, file formats, and other code that handles untrusted input. Each module is rewritten behind the same interface, proven against the original, and switched over, while the rest of the product keeps shipping.

  1. C++ module in production
  2. Rust module behind the same interface
  3. Same tests, fuzzing, and benchmarks
  4. Rust module in production
  5. C++ module retired
Memory safety
Use-after-free, buffer overflows, and dangling pointers are rejected by the compiler, without a garbage collector.
Safe concurrency
Data races do not compile, so work can be spread across cores without a new class of bugs.
An expressive type system
Enums, pattern matching, and traits keep invalid states out of the program. There is no null, and every error must be handled.
Native performance
Zero-cost abstractions, no runtime, and predictable memory use, measured against the original on your workloads.
Interop with C and C++
Rust calls C and C++ and is called from them through the C ABI (bindgen, cxx), so the two share one build while the migration runs.
Tooling
Cargo, Clippy, and rustfmt, with tests, benchmarks, and documentation built in, and dependencies audited for known vulnerabilities.

Regulation is moving to memory-safe code.

The EU now holds software manufacturers liable for exploitable vulnerabilities and requires security updates for the whole support period. In the US, federal guidance names C and C++ in new critical infrastructure products a bad practice and asks for a memory safety roadmap.

A migration plan answers both: which modules move to Rust, in what order, and how the rest is kept safe until then.

What regulators now expect

EU Cyber Resilience ActRegulation (EU) 2024/2847. Reporting from 11 September 2026, full application from 11 December 2027.

Software and connected devices sold in the EU must ship without known exploitable vulnerabilities, get security updates for their support period, and have actively exploited ones reported within 24 hours. Fines reach €15 million or 2.5% of worldwide turnover.

EU Product Liability DirectiveDirective (EU) 2024/2853. For products placed on the market from 9 December 2026.

Software counts as a product, and its manufacturer is liable for damage caused by a defect, including a security vulnerability left without an update.

EU NIS2 DirectiveDirective (EU) 2022/2555. In force since 18 October 2024.

Essential and important entities, from energy and health to manufacturing, must secure their supply chain, including how the software they use is built and how its vulnerabilities are handled.

Back to the Building Blocks (US)Report of the Office of the National Cyber Director, 26 February 2024.

Asks software manufacturers to adopt memory-safe programming languages, to remove whole classes of vulnerabilities instead of fixing them one at a time.

Product Security Bad Practices (US)Joint guidance of CISA and the FBI, January 2025.

New products for critical infrastructure written in C or C++, where a memory-safe language could be used, count as a bad practice, and existing products should have a published memory safety roadmap by 1 January 2026.

Example of what we deliver.

An ERP for liquid cargo operations: inventory, ownership transfers, blending, and transport documents in one system, with roles, an audit entry behind every change, and printable documents. A web application and a desktop application share one Rust core, and the desktop app keeps working when a terminal loses connectivity.

  • 96%of operations recorded on the day they happen, from a little over half
  • 79%faster to close the month (from two weeks to three days)

How we work.

  1. 01Measure first

    We profile the code and record a baseline (tests, benchmarks, and known crashes) before we change a line.

  2. 02Highest risk first

    We start with the modules that handle untrusted input, where memory errors do the most damage.

  3. 03No big rewrite

    One module at a time behind the existing interface, so the product keeps shipping and every step can be rolled back.

  4. 04Same behaviour, proven

    Each Rust module passes the original tests, fuzzing, and differential tests against the C or C++ version before it replaces it.

  5. 05Performance kept

    Benchmarks on your workloads before and after every module. A slowdown is treated as a bug.

  6. 06Direct communication

    You talk to the engineers writing the code, and you get a written status update every week.

  7. 07Your team can continue

    Idiomatic, documented Rust, reviewed with your engineers, and a written roadmap for the rest of the codebase.

  8. 08Fair price, no surprises

    A fixed price for each agreed module, quoted after a free review of the code.

A first release built to the standard of a finished product.

People compare new software with the tools they already use every day, so quality matters from the first version. We agree the scope together and build every workflow in it to production quality: designed, tested, documented, and responsive on real data.

The software is ready for daily use from launch, and the code is written so it can grow with the business.

Rethinking the startup MVP, by Linear

What happens after you write to us.

  1. A reply within 24 hoursAn engineer replies with first questions. We then discuss the design and architecture together and turn the idea into a clear plan, by email, on a call, or in person.
  2. Written proposal (PRD)The scope and a timeline with clear milestones, within a week.
  3. Transparent work and daily communicationWe send daily updates, and you have direct access to the engineers, so we make decisions and adjustments together.
  4. Launch and handoverWe deploy the release, and your team accepts it against the criteria agreed in the proposal. You receive the source code, the documentation, and access to everything we set up, so any engineer can continue the work.
  5. Long-term support and evolutionAfter launch, we maintain the application and extend it as requirements change. The first three months of maintenance are included.

MVP package: the first production release

€9,200€11,500−20% founding client offer

6–8 weeks from agreed scope to launch

  • Consultation and project scoping, free
  • UI/UX design
  • Frontend, backend, and integrations
  • Testing, deployment, and documentation
  • 3 months of maintenance, then €500 / month
  • Source code and a clean handover
Contact us
What does founding client mean?

After launch, you agree to a short written interview for a case study. We agree what gets published before the project starts.

Terms

EU companies with a VAT number pay exactly this amount (reverse charge).

Questions about this service

Do we have to rewrite everything in Rust?

No. Most products move the modules that handle untrusted input or run concurrently, and keep the rest in C or C++ behind a safe interface. The roadmap says which parts to move and in what order.

Will the Rust version be slower?

It should not be. Rust compiles to native code without a garbage collector, and every module is benchmarked against the original on your workloads before it ships.

Can Rust and C++ run in the same product?

Yes. Rust calls C and C++ and is called from them through the C ABI (with bindgen or cxx), so both share one build for as long as the migration runs.

Does this make us compliant with the Cyber Resilience Act?

It removes the class of vulnerabilities behind most serious security bugs, and the roadmap shows how the rest will follow. The Act's other duties (vulnerability handling, security updates, and reporting) still apply, and we can help plan them.

Do you work on embedded code?

We take embedded targets on as a feasibility question first: whether the toolchain, the memory budget, and the vendor libraries allow Rust, answered with a prototype on the device.

Let's talk about your project.

Schedule an online call (optional)

We use what you write here only to reply to you.