Hacker News

Yɛde C++ a ɛwɔ nhama biako ne Rust a ɛwɔ nhama pii dii nkitaho

Yɛde C++ a ɛwɔ nhama biako ne Rust a ɛwɔ nhama pii dii nkitaho Saa nhwehwɛmu a ɛkɔ akyiri yi a ɛfa interfaced ho no ma wɔhwehwɛ ne nneɛma atitiriw ne nea ɛkyerɛ a ɛtrɛw no mu kɔ akyiri. Mmeae Titiriw a Ɛsɛ sɛ Wode Wɔn Si Adwene So Nkɔmmɔbɔ no twe adwene si: Core mech...

10 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
SEO blog post no nyinaa ni:

Yɛde C++ a ɛwɔ nhama biako ne Rust a ɛwɔ nhama pii

dii nkitaho

C++ code a ɛwɔ nhama biako ne Rust a ɛwɔ nhama pii a wɔde bɛka ho no nyɛ nea ebetumi aba nko — ɛyɛ akwan a mfaso wɔ so sen biara a wɔfa so yɛ agyapade nhyehyɛe ahorow a ɛyɛ nnɛyi de a wonkyerɛw bio koraa no mu biako. Wɔ Mewayz no, yedii saa asɛnnennen pɔtee yi ho dwuma bere a yɛreyɛ yɛn 207-module business OS no kɛse ma asom nnipa 138,000 a wɔde di dwuma no, na nea efii mu bae no sesaa sɛnea yesusuw nhyehyɛe ahorow a wɔde di dwuma bom ho no titiriw.

Dɛn nti na Wobɛka Single-Threaded C++ ne Multi-Threaded Rust Nkitaho?

Nneɛma a wɔyɛ no dodow no ara kura mfe pii a wɔasɔ ahwɛ wɔ ɔko mu C++ koodu. Biribiara a wɔsan kyerɛw wɔ Rust mu no te sɛ nea ɛyɛ anigye wɔ krataa so, nanso ɛde asiane kɛse ne asram pii mfiridwuma bere ba. Pragmatic kwan no yɛ incremental adoption — wrapping dedaw C++ logic bere a offloading concurrency-heavy adwuma adesoa kɔ Rust's ownership model.

Wɔ yɛn fam no, na core business logic modules no ayɛ adwuma a wotumi de ho to so wɔ single-threaded C++ mu mfe pii. Wɔn na wodii nnwuma a wɔyɛ no nnidiso nnidiso, nkrataa a wɔyɛe, ne sikasɛm ho akontaabu ho dwuma. Nanso bere a yɛn dwumadiefoɔ dodoɔ no nyini boroo 100K no, na yɛhia parallel data processing, concurrent API handling, ne safe shared-state management. Rust Send ne Sync su no maa yɛn compile-time concurrency guarantees a C++ ntumi mfa mma kɛkɛ a nsaano akontabuo a ɛtrɛw nka ho.

Ade titiriw a ɛkanyan no ne asiane a wɔbɛtew so. Wode nea ɛyɛ adwuma sie, na wode nea nsenia ka ho — a wommɔ kyakyatow wo codebase nyinaa wɔ atutra a ebia enwie da so.

Ɔkwan Bɛn so na FFI Ɔhye no Yɛ Adwuma Ankasa?

Amannɔne Dwumadie Nkitahodi (FFI) a ɛda C++ ne Rust ntam no nam dwumadie nsaano nkyerɛwee a ɛne C hyia so na ɛyɛ adwuma. Rust extern "C" blocks no da dwumadie a C++ tumi frɛ no adi tẽẽ, ne nea ɛne no bɔ abira. Asɛnnennen a ɛho hia no ba bere a Rust runtime a ɛwɔ nhama pii no hia sɛ frɛ C++ koodu a ɛwɔ nhama biako dwoodwoo.

Yɛde architecture a wɔatu ho ama dii eyi ho dwuma:

  • Thread-confined C++ executor: Wɔde C++ frɛ nyinaa fa thread baako a wɔatu ho ama so de nkra-fa kwan so na ɛyɛ funnel, hwɛ sɛ wɔrenbu invariant a ɛwɔ thread baako so no so da.
  • Rust async bridge layer: Tokio nnwuma de adwuma kɔma C++ executor na twɛn aba no nam oneshot akwan so, na ɛma Rust fã no kɔ so yɛ asynchronous koraa.
  • Opaque pointer management: Wɔde C++ nneɛma abɔ Rust structs a ɛde Drop di dwuma ma deterministic cleanup, siw memory leaks ano wɔ kasa hye so.
  • Serialization wɔ hye so: Wɔde data nhyehyeɛ a ɛyɛ den serialized kɔ FlatBuffers wɔ FFI layer, kwati fragile struct layout matching na ɛma ahofadi evolution a ɛwɔ ɔfã biara tumi.
  • Ehu a wɔayi afi nnipa mu: Rust catch_unwind no kyekyere FFI hyɛn gyinabea biara sɛnea ɛbɛyɛ a ehu rentwa kasa hye no da, a anka ɛbɛyɛ suban a wɔankyerɛkyerɛ mu.

Saa nhwɛsoɔ yi maa yɛn throughput a multi-threaded Rust a ahotosoɔ a ɛwɔ C++ logic a wɔada no adi — a yɛansan akyerɛw mfitiaseɛ adwumayɛ mmara no line baako.

Afiri akɛseɛ bɛn na ɛsɛ sɛ wokwati?

Mfomsoɔ a ɛyɛ hu paa ne sɛ wobɛfa no sɛ C++ koodu no yɛ thread-safe bere a ɛnte saa. Wiase nyinaa tebea, static variables, ne non-reentrant library calls bɛma data mmirikatu a Rust compiler ntumi nhunu wɔ FFI hyeɛ no so. Rust ahobanbɔ ho bɔhyɛ gyina unsafe block no so — biribiara a ɛwɔ mu no yɛ w’asɛdeɛ.

a wɔde ahyɛ mu

Nhumu titiriw: Rust ma memory ahobammɔ ho bɔhyɛ wɔ n’ankasa code mu, nanso bere a wobɛtwa FFI hye bi akɔ C++ mu no, wunya thread-safety haw biara a C++ wɔ no agyapade. Architecture a atwa saa hye no ho ahyia no ho hia sen code a ɛwɔ n’afã abien no nyinaa.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
na ɛkyerɛ sɛ woayɛ

Afiri foforo a ɛtaa ba ne nkwa nna nyinaa sohwɛ. C++ nneɛma nnya kyɛfa wɔ Rust borrow checker no mu. Sɛ Rust tow reference bi gu bere a C++ da so ara kura pointer a, wubenya use-after-free bugs a ɛyɛ atirimɔdensɛm sɛ wobɛhwehwɛ. Yɛdii eyi ho dwuma denam owurayɛ nkyerɛase a ɛyɛ katee a yɛhyɛɛ no ​​so: C++ nneɛma yɛ Rust wrapper biako pɛpɛɛpɛ dea bere nyinaa, na kyɛfa a wɔkyɛ no fa Arc-based reference counting so wɔ Rust fã.

Adwumayɛ-nyansa, FFI frɛ a ɛboro so ma overhead fi context switching ne serialization. Yɛyɛ batch dwumadie wɔ baabiara a ɛbɛyɛ yie, de adwuma nneɛma a ɛwɔ ntonto mu kɔma C++ executor no sene sɛ yɛbɛyɛ ankorankoro cross-language calls.

Ɔkwan yi yɛɛ adwuma dɛn wɔ Nneɛma a wɔyɛ mu?

Bere a yɛde hybrid architecture no dii dwuma wɔ yɛn platform no nyinaa so akyi no, yɛsusuu nkɔsoɔ a ɛyɛ nokware. Abisadeɛ throughput kɔɔ soro 3.4x maa modules a kane no na ɛyɛ bottlenecked wɔ sequential C++ processing so. Tail latency (p99) kɔɔ fam 61% ɛfiri sɛ Rust async runtime tumi di abisadeɛ a ɛde ne ho ho dwuma wɔ berɛ korɔ mu berɛ a C++ dii nnwuma a emu yɛ duru wɔ kɔmputa so wɔ ne thread a wɔatu ho ama no so.

Nea ɛho hia kɛse no, na yɛwɔ zero concurrency-related bugs wɔ asram asia a edi kan a yɛde yɛɛ adwuma no mu. Thread-confinement nhyehyeɛ no maa ɛyɛɛ structurally a ɛrentumi nyɛ yie sɛ wɔbɛfrɛ C++ code afiri threads pii mu, berɛ a Rust type system no siw data races ano wɔ n’afã a ɛwɔ hyeɛ no so. Na eyi yɛ nkɔso kɛse wɔ yɛn kan kwan a yɛfaa so bɔɔ mmɔden sɛ yɛde mutexes bɛka threading ho wɔ C++ ho, a na ɛde mmusuakuw-tebea nsɛm abiɛsa aba wɔ nkyem anan mu biako mu.

Mfiridwuma kuw no nso bɔɔ amanneɛ sɛ iteration cycles a ɛyɛ ntɛmntɛm. Wobetumi akyekye nneɛma foforo wɔ Rust mu a wɔde bere koro mu mmoa a edi mũ, bere a C++ module ahorow a ɛwɔ hɔ dedaw no kɔɔ so yɛɛ adwuma a wɔansakra no. Saa nkɔanim nhyehyɛe yi kyerɛ sɛ yɛannya "big bang" atutra a asiane kɛse wom da — nkɔso a ɛyɛ pintinn, a wotumi susuw kɛkɛ.

Nsɛmmisa a Wɔtaa Bisa

So Rust betumi afrɛ C++ nhomakorabea ahorow a ɛwɔ nhama biako a wɔnyɛ nsakrae?

Yiw, nanso ɛsɛ sɛ wohwɛ hu sɛ frɛ a ɛkɔ saa nhomakorabea no nyinaa fi asaawa biako so. Standard pattern no ne sɛ wobɛbɔ dedicated executor thread a serializes C++ frɛ nyinaa denam channel bi so. Rust async nnwuma no de abisadeɛ mena na ɛtwɛn mmuaeɛ a ɛnsiw multi-threaded runtime no kwan. C++ koodu no ankasa nhwehwɛ nsakrae biara — wɔahyɛ ahobammɔ anohyeto no nyinaa wɔ Rust fã.

So FFI overhead no yɛ nea ɛho hia sɛ ɛbɛka application no adwumayɛ?

Ankorankoro FFI frɛ wɔ overhead ketewaa bi — mpɛn pii no ennu nanoseconds 10 ma dwumadie frɛ a ɛnyɛ den. Nanso, serialization a ɛyɛ den data nhyehyɛe ne thread synchronization wɔ hye so no ka bom sɛ woyɛ mpempem pii fine-grained frɛ. Batching dwumadie ne zero-copy serialization formats te sɛ FlatBuffers anaa Cap'n Proto a wode bedi dwuma no ma overhead yɛ anibiannaso mpo wɔ scale.

So ɛsɛ sɛ yɛsan kyerɛw yɛn C++ codebase wɔ Rust mu sen sɛ yɛbɛfa nkitahodi?

Wɔ akuo dodoɔ no ara fam no, incremental interfacing ne ɔkwan a ahobanbɔ ne ntɛmntɛm. Sankyerɛw a edi mũ de asram pii mfiridwuma mu asiane ba a mfaso biara nni nea ɔde di dwuma no anim kosi sɛ wobewie. Interfacing ma wotumi de nkɔsoɔ mena ntɛm ara, si Rust kwan no so dua wɔ adwumayɛ mu, na wotu module mmiako mmiako a egyina baabi a concurrency de nkɛntɛnsoɔ kɛseɛ ma. San kyerɛw module ahorow no nkutoo wɔ baabi a ɛka a wɔbɔ wɔ FFI hye no so boro ɛka a wɔbɔ wɔ san kyerɛw ho no nkutoo.


Wɔ Mewayz no, yɛkyekyere infrastructure a ɛyɛ kɛseɛ — wɔ mfiridwuma ne adwumayɛ mu. Yɛn 207-module adwumayɛ OS boa akuw 138,000 ma wɔyɛ adwuma nhyehyɛe a nyansa wom a efi ase fi $19/ɔsram. Sɛ́ ebia worehwɛ nnwuma so, woreyɛ adwumayɛ wɔ ɔkwan a ɛyɛ adwuma so, anaasɛ woreyɛ w’adwuma no kɛse no, Mewayz dannan ne ho ma ɛne ɔkwan a wofa so yɛ adwuma no hyia. Fi ase wo sɔhwɛ a wontua hwee wɔ app.mewayz.com na hwɛ nea nnɛyi adwumayɛ OS betumi ayɛ ama wo kuw no.

no nkutoo

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

HR Management Guide →

Manage your team effectively: employee profiles, leave management, payroll, and performance reviews.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime