Hacker News

Rinneamar comhéadan aon-snáithithe C++ le Meirge il-snáithithe

Rinneamar comhéadan aon-snáithithe C++ le Meirge il-snáithithe Tugann an anailís chuimsitheach seo ar chomhéadain scrúdú mionsonraithe ar a croí-chomhpháirteanna agus impleachtaí níos leithne. Príomhréimsí Fócais Díríonn an plé ar: Meicníocht lárnach...

10 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
Seo an post blog Sinsearach iomlán:

Chomhéadamar C++ le Snáithe Aonair le Meirge Il-snáithe

Ní hamháin gur féidir cód aon-snáithithe C++ a chomhéadan le Meirge il-snáithithe – tá sé ar cheann de na bealaí is praiticiúla chun córais oidhreachta a nuachóiriú gan athscríobh iomlán a dhéanamh. Ag Mewayz, chuamar i ngleic leis an dúshlán cruinn seo agus ár OS gnó 207-modúl á scála le freastal ar 138,000 úsáideoir, agus d'athraigh na torthaí go bunúsach an dóigh a smaoinímid ar idir-inoibritheacht na gcóras.

Cén fáth a ndéanfá C++ le Snáithe Aonair a Chomhéadain le Meirge Il-snáithe?

Tá blianta de chód C++ a bhfuil tástáil chath air ag baint leis an gcuid is mó de na córais táirgthe. Fuaimeann athscríobh gach rud i Rust ar pháipéar, ach tugann sé riosca ollmhór agus míonna ama innealtóireachta isteach. Is é an cur chuige pragmatach ná glacadh incriminteach — an loighic C++ atá ann cheana a fhilleadh agus ualaí oibre trom-chomhairgeadra á n-íoslódáil chuig samhail úinéireachta Rust.

Inár gcás, bhí modúil loighce croíghnó ar siúl go hiontaofa i C++ aon-snáithe le blianta anuas. Láimhseáil siad próiseáil tascanna seicheamhach, giniúint doiciméad, agus ríomhaireachtaí airgeadais. Ach de réir mar a d’fhás ár mbonn úsáideoirí thar 100K, bhí próiseáil sonraí comhthreomhar ag teastáil uainn, láimhseáil API comhthráthach, agus bainistíocht sábháilte comhstáit. Thug tréithe Seol agus Sync Rust ráthaíochtaí comhairgeadra ama tiomsaithe dúinn nach bhféadfadh C++ a thairiscint gan iniúchadh láimhe fairsing.

Is é laghdú riosca an príomhspreagadh. Coinníonn tú cad a oibríonn, agus cuireann tú na scálaí leis - gan do bhunachar cód iomlán a chearrbhachas ar imirce nach gcríochnódh choíche.

Conas a Oibríonn Teorainn an FFI i ndáiríre?

Oibrítear an Comhéadan Feidhme Coigríche (FFI) idir C++ agus Rust trí shínithe feidhme C-comhoiriúnach. Nochtann bloic seachtrach "C" Rust feidhmeanna ar féidir le C++ glaoch orthu go díreach, agus a mhalairt. Tagann an dúshlán ríthábhachtach chun cinn nuair is gá d’am rite il-snáithithe Rust cód C++ aon-snáithe a agairt go sábháilte.

Réitíomar é seo le hailtireacht tiomnaithe:

  • Seiceadóir C++ snáithe-teoranta: Déantar gach glao C++ a thrasnú trí shnáithe amháin tiomnaithe trí úsáid a bhaint as cainéal a sheoltar teachtaireachtaí, rud a chinntíonn nach sáraítear an t-athraitheach aon-snáithe riamh.
  • Ciseal droichead asyncrónach meirge: Cuireann tascanna Tokio obair isteach chuig an seiceadóir C++ agus fanacht le torthaí trí chainéil aonghuí, ag coinneáil an taobh meirge go hiomlán neamhshioncronach.
  • Bainistíocht pointeora teimhneach: Tá oibiachtaí C++ fillte i struchtúir Rust a chuireann Drop i bhfeidhm le haghaidh glanta cinntitheach, a chuireann cosc ar sceitheadh cuimhne thar theorainn na teanga.
  • Sraithiú ag an teorainn: Déantar struchtúir sonraí casta a shraithiú chuig FlatBuffers ag an gciseal FFI, ag seachaint leagan amach struchtúr leochaileach agus ag cumasú éabhlóid neamhspleách ar gach taobh.
  • Aonrú scaoll: Clúdaíonn catch_unwind de chuid Rust gach pointe iontrála FFI ionas nach dtrasnaíonn scaoll teorainn na teanga, rud a bheadh ina iompar neamhshainithe.

Thug an patrún seo tréchur Meirge il-snáithe dúinn le hiontaofacht na loighic cruthaithe C++ - gan aon líne amháin de na bunrialacha gnó a athscríobh.

Cad iad na Gaistí is Mó le Seachaint?

Is é an botún is contúirtí ná glacadh leis go bhfuil cód C++ slán sábháilte nuair nach bhfuil sé. Beidh staid dhomhanda, athróga statacha, agus glaonna leabharlainne nach n-aisiompaíonn siad ina gcúis le rásaí sonraí nach féidir le tiomsaitheoir Rust a bhrath trasna teorainn an FFI. Stopann ráthaíochtaí sábháilteachta Rust ag an mbloc neamhshábháilte - is ortsa atá gach rud istigh.

Eochair-léargas: Ráthaíonn Rust sábháilteacht chuimhne laistigh dá chód féin, ach nuair a thrasnaíonn tú teorainn FFI isteach i C++, gheobhaidh tú oidhreacht gach fadhb sábháilteachta snáithe atá ag C++. Tá tábhacht níos mó ag baint leis an ailtireacht timpeall na teorann sin ná an cód ar gach taobh di.

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

Gaiste coitianta eile is ea bainistíocht saoil. Ní ghlacann réada C++ páirt i seiceálaí iasachtaí Rust. Má thiteann Rust tagairt agus C++ fós ag coinneáil pointeoir, gheobhaidh tú fabhtanna saor ó úsáid i ndiaidh a chéile atá deacair go brúidiúil a dhiagnóiseadh. Thugamar aghaidh air seo trí shéimeantaic dhian úinéireachta a fhorfheidhmiú: bíonn C++ réada faoi úinéireacht i gcónaí ag cumhdach Meirge amháin, agus téann rochtain roinnte trí thagairt Arc-bhunaithe a chomhaireamh ar thaobh Meirge.

Cosúil ó thaobh feidhmíochta de, cruthaíonn glaonna iomarcacha FFI forchostais ó athrú comhthéacs agus sraithiú. Déanaimid oibríochtaí a bhaisceáil nuair is féidir, ag seoladh scuaine de mhíreanna oibre chuig an seiceadóir C++ seachas ag déanamh glaonna trasteangacha aonair.

Conas a d'fheidhmigh an Cur Chuige Seo i Táirgeadh?

I ndiaidh an ailtireacht hibrideach a imscaradh ar fud ár n-ardán, thomhaiseamar feabhsuithe nithiúla. Mhéadaigh tréchur na n-iarratas faoi 3.4x do mhodúil a bhí thíos le próiseáil sheicheamhach C++. Tháinig laghdú 61% ar fholae eireabaill (p99) toisc go bhféadfadh am rite asincréite Rust iarratais neamhspleácha a phróiseáil i gcomhthráth agus láimhseáil C++ tascanna ríomh-trom ar a snáithe tiomnaithe.

Níos tábhachtaí fós, ní raibh fabhtanna comhairgeadra nialasach againn sna chéad sé mhí den táirgeadh. Mar gheall ar an bpatrún teorannaithe snáithe, bhí sé dodhéanta ó thaobh struchtúir de cód C++ a ghlaoch ó shnáitheanna iolracha, agus chuir córas cineál Rust cosc ​​ar rásaí sonraí ar a thaobh den teorainn. Ba fheabhsúchán suntasach é seo ar an gcur chuige a bhí againn roimhe seo maidir le hiarracht a dhéanamh snáithiú a chur le C++ le mutexes, rud a d’eascair trí theagmhas maidir le riocht cineáil in aon cheathrú amháin.

Tuairisc an fhoireann innealtóireachta timthriallta atriallta níos tapúla freisin. D'fhéadfaí gnéithe nua a thógáil i Rust le tacaíocht iomlán comhairgeadra, agus lean na modúil C ++ atá ann cheana féin ag rith gan mhodhnú. Chiallaigh an straitéis incriminteach seo nach raibh imirce ardriosca "bríg mhór" againn riamh - feabhas seasta intomhaiste.

Ceisteanna Coitianta

An féidir le Rust glaoch ar leabharlanna C++ aon-snáithithe gan mhodhnú?

Sea, ach ní mór duit a chinntiú go dtarlaíonn gach glao chuig an leabharlann sin as snáithe amháin. Is é an patrún caighdeánach ná snáithe seiceadóir tiomnaithe a chruthú a sheachnaíonn gach glao C++ trí chainéal. Cuireann tascanna asincréite Rust isteach iarratais agus ag fanacht ar fhreagraí gan bac a chur ar an am rite il-snáithithe. Ní theastaíonn aon athrú ar an gcód C++ féin — cuirtear an srian sábháilteachta i bhfeidhm go hiomlán ar thaobh Meirge.

An bhfuil an forchostas FFI suntasach go leor chun cur isteach ar fheidhmíocht iarratais?

Is beag forchostais a bhíonn ag glaonna aonair FFI — de ghnáth faoi bhun 10 nana-soicindí le haghaidh glao feidhme simplí. Mar sin féin, cuireann sraithiú struchtúir sonraí casta agus sioncrónú snáithe ag an teorainn suas má dhéanann tú na mílte glaonna mínghlanta. Coinníonn oibríochtaí baisceála agus úsáid formáidí sraitheacha de chóip nialasach amhail FlatBuffers nó Cap'n Proto lastuas diomaibhseach fiú ar scála.

Ar cheart dúinn ár gcódbase C++ a athscríobh i Rust seachas an comhéadan?

I gcás fhormhór na bhfoirne, is é an bealach is sábháilte agus níos gasta an comhéadan incriminteach. Tugann athscríobh iomlán isteach míonna de riosca innealtóireachta gan luach ar bith don úsáideoir go dtí go gcríochnaítear é. Ligeann comhéadan duit feabhsuithe a sheoladh láithreach, cur chuige Rust i dtáirgeadh a bhailíochtú, agus modúil a aistriú uair amháin ag an am bunaithe ar an áit a sheachadann concurrency an tionchar is mó. Na modúil a athscríobh ach amháin nuair is mó an costas a bhaineann le teorainn an FFI a chothabháil ná an costas a bhaineann le hathscríobh.


Ag Mewayz, tógaimid bonneagar atá de réir scála - go teicniúil agus go hoibríochtúil. Cuidíonn ár OS gnó 207-modúl le 138,000 foireann sreabhadh oibre níos cliste a rith ag tosú ag $19/mí. Cibé an bhfuil tú ag bainistiú tionscadal, ag uathoibriú oibríochtaí, nó ag scálaiú do ghnó, déanann Mewayz oiriúnú don chaoi a n-oibríonn tú. Cuir tús le do thriail saor in aisce ag app.mewayz.com agus féach cad is féidir le OS gnó nua-aimseartha a dhéanamh do d'fhoireann.