An ye C++ min bɛ Kɛ ni 'sèn kelen ye ni Rust ye min bɛ 'sèn caman na
An ye C++ min bɛ Kɛ ni 'sèn kelen ye ni Rust ye min bɛ 'sèn caman na Nin sɛgɛsɛgɛliba in min kɛra interfaced kan, o bɛ a yɔrɔ kolomaw sɛgɛsɛgɛli caman kɛ ani a nɔfɛkow ka bon. Yɔrɔ kolomaw minnu ka kan ka sinsin Baro in sinsinnen bɛ ninnu kan: Core mech...
Mewayz Team
Editorial Team
An ye C++ kelen-kelen ni Rust caman
ɲɔgɔn sɔrɔKa C++ kode kelen-kelen ni Rust caman-caman siri ɲɔgɔn na, o tɛ se ka kɛ dɔrɔn — o ye fɛɛrɛ nafama dɔ ye walasa ka sigida kɔrɔw kɛ bi ta ye k’a sɔrɔ sɛbɛnni dafalen ma kɛ. Mewayz la, an ye nin gɛlɛya tigitigi in kunbɛn n’an y’an ka jagokɛla ka OS 207-module (module 207) sɛgɛsɛgɛ walasa ka baara kɛ ni baarakɛla 138.000 ye, wa o nɔw ye fɛn caman Changé an ka miiri cogo min na sistɛmuw ka baarakɛɲɔgɔnya kan.
Mun na i bɛna C++ min bɛ ni fɛn kelen ye, o ni Rust min bɛ ni fɛn caman ye, o ɲɔgɔn cɛ ?
Sɛnɛfɛnw dilanni sira fanba bɛ san caman kɛlɛ-kɔrɔbɔli C++ kode ta. Ka fɛn bɛɛ sɛbɛn kokura Rust kɔnɔ, o bɛ i ko fɛn min bɛ mɔgɔ ɲɛnajɛ papiye kan, nka o bɛ faratiba ni kalo caman kɛ ɛntɛrinɛti waati la. Fɛɛrɛ min bɛ se ka kɛ, o ye dɔ farali ye — ka C++ hakilina kɔrɔw siri k’a sɔrɔ ka baarakɛta girinmanw bɔ ɲɔgɔn na ka taa Rust ka tigiya modɛli la.
Anw ta fan fɛ, core business logic modules tun bɛ baara kɛ ni dannaya ye C++ single-threaded kɔnɔ kabini san caman. U tun bɛ baara kɛcogo ɲɔgɔn kɔ, sɛbɛnw dilanni ani wariko jatebɔw ɲɛnabɔ. Nka an ka baarakɛlaw hakɛ cayara ka tɛmɛ 100K kan, an mago tun bɛ kunnafonidilanw baaracogo la ɲɔgɔn fɛ, API baarakɛcogo ɲɔgɔn fɛ, ani jamana jɛlen ɲɛnabɔli lakananen. Rust ka Send ani Sync jogo ye compile-time concurrency garantis di an ma, C++ tun tɛ se ka minnu di dɔrɔn ni bololabaarakɛlaw ka jatebɔba ma kɛ.
dusudon kunba ye faratiw dɔgɔyali ye . I bɛ min bɛ baara kɛ, i bɛ o mara, ani i bɛ balansi minnu fara a kan — k’a sɔrɔ i ma i ka kodebase bɛɛ tulon kɛ jiginni kan min bɛ se ka ban abada.
FFI dancɛ bɛ baara kɛ cogo di tiɲɛ na ?
Foreign Function Interface (FFI) min bɛ C++ ni Rust cɛ, o bɛ baara kɛ ni C-compatible function signatures ye. Rust ka extern "C" blokiw bɛ baarakɛcogo dɔw jira kɛnɛ kan, C++ bɛ se ka minnu wele k'u ɲɛsin ɲɔgɔn ma, ani a kɔfɛ. Gɛlɛya gɛlɛn bɛ bɔ kɛnɛ kan ni Rust ka baarakɛwaati min bɛ kɛ ni fɛn caman ye, o mago bɛ ka C++ kode kelen wele lafiya la.
An y' o ɲɛnabɔ ni fɛn dilanni kɛrɛnkɛrɛnnen ye :
- C++ waleyalikɛla min bɛ jiribolo la : C++ weleli bɛɛ bɛ funan kɛ jirisun kelen kɛrɛnkɛrɛnnen fɛ ni cikan tɛmɛsira ye , k’ a lajɛ ko jirisun kelen invariant tɛ tiɲɛ abada .
- Rust async bridge layer : Tokio baarakɛtaw bɛ baara di C++ waleyalikɛla ma ani
waitjaabiw bɛ kɛ oneshot siraw fɛ , ka Rust fan to asynchrone dafalen na . - Opaque pointer management : C++ fɛnw bɛ siri Rust structs kɔnɔ minnu bɛ
Dropwaleya saniya latigɛlen kama , ka hakilijagabɔw bali ka tɛmɛ kan dancɛ kan . - Seriyali dankan na : Donanw sigicogo gɛlɛnw bɛ seriyali kɛ FlatBuffers la FFI layɛrɛ la , ka struct layout matching fragile bali ani ka se ka kɛ sababu ye ka fan kelen-kelen bɛɛ ka yɛrɛmahɔrɔnya jiginni kɛ .
- siranya danfara : Rust ka
catch_unwindbɛ FFI dondaw bɛɛ siri walasa siran kana kan dancɛ tigɛ abada , o bɛna kɛ kɛwale ɲɛfɔbali ye .
O misali in ye Rust caman ka baarakɛcogo di an ma ni C++ hakilina sɛgɛsɛgɛlen dannaya ye — k’a sɔrɔ jago sariya fɔlɔw tigɛli kelen ma sɛbɛn kokura.
jaanba jumɛnw ka kan ka kɔlɔsi ?
fili min farati ka bon kosɛbɛ , o ye k' a miiri ko C++ kode ye jirisunw lakanani ye k' a sɔrɔ a tɛ . Duniya cogoya, fɛn caman b’a la, ani gafemarayɔrɔ weleli minnu tɛ segin ka don, olu bɛna kɛ sababu ye ka kunnafonidilanw boli, Rust ka daɲɛgafebɔlan tɛ se ka minnu dɔn FFI dancɛ kɔnɔ. Rust ka lakana garantiw bɛ jɔ unsafe bloki la — kɔnɔfɛn bɛɛ ye i ka baara ye.
yeyeHakilila jɔnjɔn : Rust bɛ hakilijagabɔ lakanani garanti a yɛrɛ ka kode kɔnɔ , nka waati min na i ye FFI dancɛ dɔ tigɛ ka don C++ kɔnɔ , i bɛ C++ ka jirisunw lakanani gɛlɛya bɛɛ ciyɛn ta o dancɛ lamini jɔcogo nafa ka bon ka tɛmɛ a fan fila bɛɛ ka kode kan.
💡 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 →
Jaan wɛrɛ min ka teli ka sɔrɔ , o ye ɲɛnamaya bɛɛ ɲɛnabɔli ye . C++ fɛnw tɛ u sen don Rust ka juruko sɛgɛsɛgɛli la. Ni Rust ye 'reference (fɔlikan) dɔ Blà k'a sɔrɔ C++ bɛ pointeur (fɔlikɛlan) Minɛ halibi, i bɛ use-after-free bugs sɔrɔ minnu sɛgɛsɛgɛli ka gɛlɛn kosɛbɛ. An y’o ɲɛnabɔ ni tigiya kɔrɔko gɛlɛnw waleyali ye : C++ fɛnw bɛ Rust wrapper kelen tigitigi ta tuma bɛɛ, wa sɔrɔli jɛlen bɛ tɛmɛ Arc-based reference counting fɛ Rust fan fɛ.
Baarakɛcogo siratigɛ la, FFI weleli tɛmɛnenw bɛ sanfɛla lase ka bɔ sigida sɛgɛsɛgɛli ni seriyali la. An bɛ baara kɛtaw kɛ kulu ye yɔrɔ o yɔrɔ, an bɛ se ka baara kɛtaw ci C++ waleyalikɛla ma sanni ka kan kelen-kelen weleli kɛ.
o fɛɛrɛ in kɛra cogo di sɛnɛko la ?
An kɛlen kɔ ka fɛnɲɛnɛmafagalanw bila sen kan an ka kɛnɛ kan , an ye ɲɛtaa bɛrɛbɛrɛw suman . Deliliw kɛcogo cayara ni 3,4x ye modulu minnu tun bɛ buteli kɔnɔ fɔlɔ C++ baarakɛcogo tugu-tugulenw kan. Tail latency (p99) jigira ni 61% ye bawo Rust ka async runtime tun bɛ se ka yɛrɛmahɔrɔnya ɲininiw baara waati kelen na k’a sɔrɔ C++ tun bɛ jatebɔ baara gɛlɛnw ɲɛnabɔ a ka thread kɛrɛnkɛrɛnnen kan.
min nafa ka bon kosɛbɛ , an ye zeru sɔrɔ ɲɔgɔndanko la , a dilanni kalo wɔɔrɔ fɔlɔw la . Thread-confinement pattern y’a To a jɔcogo tɛ Se ka C++ kode Weele ka Bɔ thread caman na, k’a sɔrɔ Rust ka type system ye data boliw bali a dancɛ fan fɛ. O kɛra ɲɛtaaba ye ka tɛmɛ an ka fɛɛrɛ kɔrɔ kan, n’o ye k’a ɲini ka jirisunw fara C++ kan ni mutɛkisiw ye, o min tun ye siyako ko saba kɛ kalo saba kɔnɔ.
Enjiniyɛri jɛkulu fana ye iterasiyɔn teliyalenw fɔ . Fɛn kuraw tùn bɛ Se ka Jὲ Rust kɔnɔ ni ɲɔgɔndɛmɛ dafalen ye, k’a sɔrɔ C++ modulu minnu tùn bɛ yen olu tora ka baara Kɛ k’a sɔrɔ fɛn ma Yɛlɛma. Nin dɔ farali fɛɛrɛ in kɔrɔ ye ko an ma deli ka "big bang" jiginni faratiba la — ɲɛtaa sabatilen dɔrɔn, min bɛ se ka suman.
Ɲininkali minnu bɛ kɛ tuma caman na
Yala Rust bɛ se ka C++ gafemarayɔrɔ kelen wele k'a sɔrɔ a ma fɛn caman sɛmɛntiya wa ?
Ɔwɔ , nka i ka kan k' a lajɛ ko weleli bɛɛ bɛ kɛ o gafemarayɔrɔ la ka bɔ jirisun kelen na . Standard pattern ye ka executeur thread kɛrɛnkɛrɛnnen dɔ Dabɔ min bɛ C++ weleli bɛɛ Kɛ seriyali ye kan dɔ fɛ. Rust ka async baarakɛtaw bɛ ɲininiw ci ani ka jaabiw makɔnɔ k’a sɔrɔ u ma baarakɛcogo caman bali. C++ kode yɛrɛ tɛ fɛn caman Changer — lakana dantigɛli bɛ waleya pewu Rust fan fɛ.
Yala FFI kuntaalajan nafa ka bon fo ka se ka nɔ bila baarakɛminɛnw baarakɛcogo la wa ?
FFI weleli kelen-kelen bɛɛ ka musakaw ka dɔgɔ — a ka c’a la, u bɛ nanosekɔndi 10 jukɔrɔ baarakɛcogo weleli nɔgɔman na. Nka, kunnafoni-falen-falen gɛlɛnw sigicogo ɲɔgɔn kɔ ani jirisunw ɲɔgɔndan dancɛ la, olu bɛ fara ɲɔgɔn kan n’i ye weleli finman ba caman kɛ. Baarakɛcogo minnu bɛ kɛ ni batɛmu ye ani ka baara kɛ ni zeru-kopi seriyali cogoyaw ye i n’a fɔ FlatBuffers walima Cap’n Proto, o bɛ sanfɛla to a tɛ jate hali ni sɛgɛsɛgɛli ye.
yala an ka kan k' an ka C++ kodebase sɛbɛn kokura Rust kɔnɔ sanni ka ɲɔgɔn sɔrɔ wa ?
Ekipu fanba fɛ , dɔ farali ɲɔgɔn kan , o ye sira ye min lakananen don ani min ka telin . Sɛbɛnni kura dafalen bɛ kalo caman kɛ ɛntɛrinɛti farati la, nafa tɛ min na baarakɛla ɲɛkɔrɔ fo ka se a dafalen ma. Interfacing b’a to i bɛ se ka ɲɛtaa dɔw ci joona, ka Rust fɛɛrɛ tiɲɛ sɛnɛko la, ani ka moduluw wuli kelen-kelen ka da yɔrɔ kan, ɲɔgɔndan bɛ nɔba bila yɔrɔ min na. Modulew dɔrɔn de sɛbɛn kokura, FFI dancɛ ladonni musaka bɛ tɛmɛ sɛbɛnni seginni musaka kan yɔrɔ minnu na.
Mewayz la, an bɛ fɛnsɔrɔsiraw jɔ minnu bɛ bonya — fɛɛrɛko ni baarakɛcogo bɛɛ la. An ka 207-module business OS bɛ ekipu 138.000 dɛmɛ ka baarakɛcogo hakilitigiw kɛ k’a daminɛ $19/kalo la. I mana kɛ porozew ɲɛnabɔli la, i mana baara kɛ otomatiki la, walima i mana i ka jago bonya, Mewayz bɛ ladamu i ka baara kɛcogo la. aw ka kɔrɔbɔli fu daminɛ app.mewayz.com kan k' a lajɛ bi jagokɛla OS bɛ se ka min kɛ aw ka kulu ye .
We use cookies to improve your experience and analyze site traffic. Cookie Policy