Hacker News

In-interfacemi ti single-threaded a C++ iti multi-threaded a Rust

In-interfacemi ti single-threaded a C++ iti multi-threaded a Rust Daytoy a komprehensibo a panaganalisar ti interfaced ket mangitukon ti detalyado a panagsukimat kadagiti kangrunaan a paset daytoy ken dagiti nalawlawa nga implikasionda. Dagiti Kangrunaan a Lugar a Pagpokusan Naisentro ti diskusion iti: Core nga mech...

9 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
Ania ti kompleto a SEO blog post:

In-interfacemi ti Single-Threaded C++ iti Multi-Threaded Rust

Ti panangisilpo ti maymaysa-a-threaded a kodigo ti C++ iti adu-threaded a Rust ket saan laeng a mabalin — daytoy ket maysa kadagiti kaaduan a praktikal a wagas a mangmoderno kadagiti tawid a sistema nga awan ti naan-anay a panagsurat manen. Iti Mewayz, tinamingmi daytoy nga eksakto a karit idi in-scale-mi ti 207-module business OS-mi tapno agserbi iti 138,000 nga agar-aramat, ken dagiti resulta ket pundamental a nangbalbaliw no kasano ti panagpanunotmi maipapan iti panagtitinnulong dagiti sistema.

Apay nga Interface-mo ti Single-Threaded C++ iti Multi-Threaded Rust?

Kaaduan a sistema ti produksion ket awitda dagiti tawen ti nasubok a gubat a kodigo ti C++. Ti panangisurat manen iti amin a banag iti Rust ket kasla makaawis iti papel, ngem mangiyam-ammo dayta iti dakkel a peggad ken adu a bulan a panawen ti inhenieria. Ti pragmatiko a wagas ket ti inkremental a panagampon — ti panangbalkot kadagiti agdama a lohika ti C++ bayat ti panangi-offload kadagiti concurrency-heavy workload iti modelo ti panagtagikua ni Rust.

Iti kasomi, dagiti core business logic modules ket mapagtalkan a nagtartaray iti single-threaded C++ iti adu a tawen. Tinamingda ti agsasaruno a panagproseso iti trabaho, panagpataud iti dokumento, ken pinansial a kalkulasion. Ngem bayat a dimmakkel ti user base-mi iti napalabas a 100K, kasapulanmi ti parallel data processing, aggigiddan nga API handling, ken natalged a shared-state management. Dagiti kababalin ti Send ken Sync ni Rust ket nangted kadakami kadagiti garantia ti panaggigiddan iti oras ti panagtipon a ti C++ ket saan laeng a makaitukon no awan ti nasaknap a manual a panag-audit.

Ti kangrunaan a motibo ket ti panangkissay iti peggad. Idulinmo no ania ti agtrabaho, ken inayonmo no ania dagiti timbangan — a saan a sugal ti intero a codebase-mo iti panagiyakar a mabalin a saan a pulos a malpas.

Kasano nga Aktual nga Agtrabaho ti FFI Boundary?

Ti Ganggannaet a Function Interface (FFI) iti nagbaetan ti C++ ken Rust ket agtartaray babaen dagiti C-a maitunos a pirma ti function. Dagiti bloke ti extern "C" ni Rust ket mangibutaktak kadagiti panagandar a ti C++ ket mabalinna nga awagan a direkta, ken ti kasumbangirna. Ti kritikal a karit ket rumsua no ti multi-threaded runtime ti Rust ket kasapulan a mangawag ti single-threaded a kodigo ti C++ a sitatalged.

Nasolbarmi daytoy babaen ti panagusar ti naisangsangayan nga arkitektura:

  • Thread-confined C++ executor: Amin nga awag ti C++ ket mai-funnel babaen ti maymaysa a naisangsangayan a thread babaen ti panagusar ti mensahe-a-panaglabas a kanal, a mangsigurado a ti maymaysa-a-thread nga invariant ket saan a pulos a malabsing.
  • Rust async bridge layer: Dagiti trabaho ti Tokio ket mangisubmitir ti obra iti C++ nga ehekutibo ken dagiti resulta ti urait babaen dagiti oneshot a kanal, a mangtengtengngel ti Rust a sikigan a naan-anay nga asynchronous.
  • Opaque pointer management: Dagiti banag ti C++ ket nabalkot kadagiti Rust structs a mangipatungpal ti Drop para iti deterministiko a panagdalus, a manglapped kadagiti panagruar ti memoria iti ballasiw ti beddeng ti pagsasao.
  • Serialisasion iti pagbeddengan: Dagiti komplikado nga estruktura ti datos ket maserialize kadagiti FlatBuffers iti FFI a sapasap, a mangliklik iti panagtunos ti nalaka a madadael nga layout ti estruktura ken mangpabalin ti agwaywayas nga ebolusion ti tunggal maysa a sikigan.
  • Panagbukod ti panagbuteng: Ti catch_unwind ni Rust ket mangbalkot ti tunggal maysa a puntos ti iseserrek ti FFI tapno ti panagbuteng ket pulos a saan a bumallasiw ti beddeng ti pagsasao, a daytoy ket saan koma a naikeddeng a kababalin.

Daytoy a padron ket nangted kadakami ti throughput ti multi-threaded a Rust nga addaan iti kinamapagtalkan ti napaneknekan a lohika ti C++ — a saan a mangisurat manen ti uray maysa laeng a linia dagiti orihinal a pagalagadan ti negosio.

Ania Dagiti Kadakkelan a Silo a Liklikan?

Ti kapeggadan a biddut ket ti panangipapan a ti kodigo ti C++ ket thread-safe no saan. Ti sangalubongan nga estado, dagiti estatiko a variable, ken dagiti saan a sumrek manen nga awag ti biblioteka ket mangpataudto kadagiti karera ti datos a ti kompiler ti Rust ket saan a makaduktal iti ballasiw ti beddeng ti FFI. Agsardeng dagiti garantia ti kinatalged ti Rust iti bloke ti unsafe — amin nga adda iti uneg ket pagrebbengam.

Kangrunaan a pannakaammo: Ti Rust ket mangipanamnama ti kinatalged ti memoria iti uneg ti bukodna a kodigo, ngem iti kanito a bumallasiwka iti maysa a beddeng ti FFI iti C++, tawidem ti tunggal maysa a parikut ti kinatalged ti thread nga adda iti C++. Ti arkitektura iti aglawlaw dayta a beddeng ket ad-adda a napateg ngem ti kodigo iti agsumbangir a sikiganna.

💡 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 →

Ti sabali pay a gagangay a silo ket ti panangtarawidwid iti tungpal biag. Dagiti banag ti C++ ket saan a makipaset iti borrow checker ni Rust. No ti Rust ket mangibaba ti maysa a reperensia bayat nga iggem pay laeng ti C++ ti maysa a puntos, makagun-odka kadagiti panagusar-kalpasan-a-nawaya a bug a brutal a narigat a madayagnos. Tinamingmi daytoy babaen ti panangipatungpal ti nainget a semantika ti panagtagikua: Dagiti banag ti C++ ket kanayon a tagikua babaen ti eksakto a maysa a Rust wrapper, ken ti naibingbingay a panagserrek ket lumasat babaen ti Arc-based a reperensia a panagbilang iti sikigan ti Rust.

No maipapan iti panagaramid, dagiti nalabes nga awag ti FFI ket mangpartuat ti overhead manipud iti panagbalbaliw ti konteksto ken serialisasion. Batch mi dagiti operasion sadinoman a mabalin, a mangipatulod ti pila dagiti banag ti trabaho iti C++ nga ehekutibo imbes nga agaramid kadagiti indibidual a cross-language calls.

Kasano ti Nagaramid Daytoy a Pamay-an iti Produksion?

Kalpasan ti panangipakat ti mestiso nga arkitektura iti ballasiw ti platapormami, rinukodmi dagiti konkreto a panagpasayaat. Ti throughput ti kiddaw ket immadu iti 3.4x para kadagiti modulo a dati a nagbottleneck iti agsasaruno a panagproseso ti C++. Ti latensia ti ipus (p99) ket bimmaba babaen ti 61% gapu ta ti async runtime ti Rust ket mabalin a mangproseso kadagiti agwaywayas a kiddaw nga aggigiddan bayat a ti C++ ket mangasikaso kadagiti panagkuenta-a-nadagsen nga aramid iti naisangsangayan a threadna.

Napatpateg pay, addaankami iti zero concurrency-related bugs iti umuna nga innem a bulan ti produksion. Ti padron ti thread-confinement ket nagaramid daytoy nga estruktural nga imposible para iti kodigo ti C++ a maawagan manipud kadagiti adu a thread, bayat a ti sistema ti tipo ni Rust ket nanglapped kadagiti karera ti datos iti sikiganna ti beddeng. Daytoy ket maysa idi a naipangpangruna a panagpasayaat iti napalabas a wagasmi a mangpadas a manginayon ti panag-thread iti C++ babaen dagiti mutex, a nakapataud kadagiti tallo nga insidente ti kondision ti puli iti maymaysa a kakapat.

Ti grupo ti inhenieria ket nangipadamag pay kadagiti naparpartak a siklo ti panagulit. Dagiti baro a tampok ket mabalin a maibangon idiay Rust nga addaan iti naan-anay a suporta ti panaggigiddan, bayat a dagiti agdama a modulo ti C++ ket nagtultuloy a nagtaray nga awan ti pannakabalbaliw. Daytoy nga incremental nga estratehia ket kayatna a sawen a saanmi a pulos nga addaan iti nangato a risgo a "big bang" a panagakar — basta natalged, masukatan a panagpasayaat.

Dagiti Masansan a Saludsod

Mabalin kadi nga awagan ti Rust dagiti single-threaded a biblioteka ti C++ nga awan ti pannakabalbaliw?

Wen, ngem masapul a siguraduem nga amin nga awag iti dayta a biblioteka ket mapasamak manipud iti maymaysa a thread. Ti pagalagadan a padron ket ti panagpartuat ti naipangpangruna nga ehekutibo a thread a mangserial kadagiti amin nga awag ti C++ babaen ti maysa a kanal. Dagiti trabaho ti async ti Rust ket mangisubmitir kadagiti kiddaw ken agur-uray kadagiti sungbat a saan a manglapped ti multi-threaded runtime. Ti kodigo ti C++ a mismo ket agkasapulan ti awan a panagbalbaliw — ti pannakalapped ti kinatalged ket naipatungpal nga interamente iti sikigan ti Rust.

Ti kadi FFI overhead ket umdasen a napateg tapno makaapektar ti panagaramid ti aplikasion?

Dagiti indibidual nga awag ti FFI ket addaan iti bassit nga overhead — kadawyan iti baba ti 10 a nanosegundos para iti simple nga awag ti panagandar. Nupay kasta, ti serialisasion dagiti komplikado nga estruktura ti datos ken ti panagsinkronisar ti thread iti beddeng ket agtitipon no mangaramidka kadagiti rinibu a napino a binukel nga awag. Ti panag-batch kadagiti panagpataray ken panagusar kadagiti pormat ti serialisasion ti sero-kopia a kas ti FlatBuffers wenno Cap'n Proto ket mangtengtengngel ti overhead a saan a napateg urayno iti sukog.

Rumbeng kadi nga isurattayo manen ti C++ codebasetayo iti Rust imbes nga ag-interface?

Para iti kaaduan a bunggoy, ti incremental interfacing ket isu ti nataltalged ken naparpartak a dalan. Ti naan-anay a panagsurat manen ket mangiyam-ammo kadagiti bulan ti peggad ti inhenieria nga awan ti pateg a maipasango iti agar-aramat aginggana ti pannakaileppas. Ti panag-interfacing ket mangpalubos kenka a mangipatulod kadagiti panagpasayaat a dagus, mangbalido ti wagas ti Rust iti produksion, ken mangiyakar kadagiti modulo a saggaysa a naibatay no sadino ti panangipaay ti panaggigiddan ti kaaduan nga epekto. Isurat manen dagiti laeng modulo a sadiay ti gastos ti panangmantener ti beddeng ti FFI ket lumablabas ti gastos ti panagsurat manen.


Iti Mewayz, mangbangonkami iti imprastruktura a mangsukat — agpadpada iti teknikal ken operasional. Ti 207-module business OS-tayo ket tumultulong iti 138,000 a grupo a mangpataray kadagiti nasirsirib a panagayus ti trabaho a mangrugi iti $19/bulan. Imanmaneharmo man dagiti proyekto, automating-mo dagiti operasion, wenno i-scale-mo ti negosiom, makibagay ti Mewayz iti wagas ti panagtrabahom. Rugian ti libre a panagsubokmo iti app.mewayz.com ken kitaem no ania ti maaramidan ti moderno nga OS ti negosio para iti grupom.

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