Hacker News

Waxa aanu isku xidhnay C++ hal xadhig leh oo leh miridh-xadhkaha badan

Waxa aanu isku xidhnay C++ hal xadhig leh oo leh miridh-xadhkaha badan Falanqayntan dhamaystiran ee interfaced waxay bixisaa baadhitaan faahfaahsan oo ku saabsan qaybaheeda asaasiga ah iyo saamaynta ballaadhan. Meelaha Muhiimka ah ee Diirada Dooddu waxay ku saabsan tahay: Mech Core...

7 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
Halkan waxaa ah barta blog-ka SEO oo dhammaystiran:

Waxa aanu isku xidhnay hal xadhig leh C++ oo leh miridh-xadhkaha badan

Isku dhafka C++-koodhka hal-xidhka leh ee leh daxaladaha badan ma aha suurtogal oo kaliya - waa mid ka mid ah siyaabaha ugu waxtarka badan ee lagu casriyeynayo nidaamyada dhaxalka iyada oo aan dib loo qorin. Mewayz, waxaan la tacaalnay caqabadan saxda ah markii aan cabirnay 207-module-ka ganacsigayada OS si uu ugu adeego isticmaalayaasha 138,000, natiijaduna waxay si aasaasi ah u beddeshay sida aan uga fikirno isdhexgalka nidaamyada.

Maxaad ula xidhiidhi kartaa C++ Hal-xidhaale leh oo leh miridh-xadhkaha badan?

Inta badan nidaamyada wax soo saarku waxay wataan sanado la tijaabiyay C++ code. Dib u qorista wax kasta oo ku jira Rust waxay u muuqataa mid soo jiidasho leh warqad, laakiin waxay soo bandhigaysaa khatar weyn iyo bilo waqtiga injineernimada. Habka waaqiciga ah ayaa ah korsasho kororsi - duubista macquulka C++ ee jira iyadoo la saarayo culeysyo shaqo oo culus oo isdhaafsi ah qaabka lahaanshaha Rust.

Xaaladeena, qaybaha macquulka ah ee ganacsigu waxa ay ku shaqaynayeen si la isku hallayn karo C++ hal-xidhaale ah muddo sanado ah. Waxay gacanta ku hayeen habayn hawleed isdaba joog ah, soo saarista dukumentiyada, iyo xisaabinta maaliyadeed. Laakin markii saldhiga adeegsaduhu koray 100K, waxaanu u baahnay habayn xogta barbar socota, maaraynta API ee isku xidhan, iyo maamul-goboleed badbaado leh. Sifooyinka Rust's Send iyo Sync waxay na siiyeen dammaanad aruurinta waqti isku mid ah in C++ aysan si fudud u bixin karin iyada oo aan la hubin xisaabin gacaneed oo ballaaran.

Waxa ugu muhiimsan waa dhimista khatarta. Waxaad xajisaa waxa shaqeeya, waxaadna ku darsataa wixii miisaan ah - adiga oo aan khamarin dhammaan codebase-kaaga socdaalka aan waligii dhammaanayn.

Sidee buu dhab ahaan u shaqeeyaa xadka FIFA?

Interface-ka Shaqada Shisheeye (FFI) ee u dhexeeya C++ iyo Rust wuxuu ku shaqeeyaa saxeexyada shaqada ee ku habboon C. Rust's extern "C" wuxuu xannibaa bandhigyada shaqooyinka ay C++ si toos ah u wici karto, iyo lidkeeda. Caqabadda muhiimka ah waxay soo ifbaxdaa marka Rust's runtime-ka xad-dhaafka ah ee runtime u baahan yahay inuu u yeedho koodka C++-ka-salaysan si badbaado leh.

Waxaan ku xalinay tan anagoo adeegsanayna qaab dhismeed go'an:

  • fuliyaha xadhig-ku-xiran ee C++:Dhammaan wicitaannada C++ waxa lagu shubaa dunta keli ah ee loo qoondeeyey iyada oo la adeegsanayo kanaalka farriin gudbinta ah, iyada oo la hubinayo in beddelka hal-threaded aan waligiis jebin.
  • Daabka buundada async ee miridhku: Hawlaha Tokio waxay u soo gudbiyaan shaqada C++ fuliyaha iyo sugaannatiijooyinka iyada oo loo sii marayo kanaalada Onehot, iyadoo dhinaca miridhku si buuxda u sinnayn.
  • Maaraynta tilmaame-fudud: Walxaha C++ waxa lagu duuduubay qaab-dhismeed miridhku kuwaas oo hirgeliya Drop ee nadiifinta go'aaminta, ka hortagaya in xusuusta ka daadato xuduudka luqadda.
  • Taxaneeynta soohdinta: Qaabdhismeedka xogta isku dhafan ayaa loo taxaabay FlatBuffers ee lakabka FFI, iyada oo laga fogaanayo qaabaynta qaabdhismeedka jilicsan iyo awood u siinaysa horumarka madaxbannaan ee dhinac kasta.
  • Go'doomin argagaxa: Rust's catch_unwind wuxuu duubaa barta FFI-ga laga soo galo si argagaxu waligii uga tallaabin xadka luqadda, taasoo noqon doonta dabeecad aan la qeexin.

Habkani waxa uu ina siiyay soo saarista miridh-xadhkaha badan leh iyada oo la isku halleyn karo C++ macquul ah oo la xaqiijiyay - iyada oo aan dib loo qorin hal sadar oo ka mid ah shuruucda ganacsiga asalka ah.

Waa maxay khadadka ugu waaweyn ee la iska ilaalin karo?

Khaladka ugu khatarsan waa in loo qaato in koodka C++ uu yahay dun-ammaan marka aanu ahayn. Gobolka caalamiga ah, doorsoomayaasha taagan, iyo wicitaanada maktabadda ee aan dib-u-soo-celinta lahayn waxay sababi doonaan tartanka xogta ee isku-dubaridiyaha Rust aanu ka ogaan karin xadka FFI. Dammaanad-qaadyada badbaadada Rust waxay joogsadaan xannibaadda aan badbaado lahayn — wax kasta oo gudaha ku jira adigaa mas'uul ka ah.

Aragtida furaha ah: miridhku waxa uu dammaanad qaadayaa badbaadada xusuusta gudaha koodka gaarka ah, laakiin marka aad ka gudubto xadka FFI ee C++, waxaad dhaxli doontaa dhibaato kasta oo badqabka dunta oo C++ haysato. Naqshadaynta ku xeeran soohdintaas ayaa ka muhiimsan koodka dhinaciisa.

💡 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 →
Burburka kale ee caadiga ah waa maaraynta nolosha. Walxaha C++ kama qaybqaataan hubinta amaahda Rust. Haddii Rust uu hoos u dhigo tixraaca halka C++ uu weli hayo tilmaame, waxaad helaysaa kutaanno bilaash ah oo ay adag tahay in la ogaado. Waxaan tan u wajahnay annagoo dhaqangelinayna semanti adag oo lahaansho: Walaxda C++ had iyo jeer waxaa iska leh hal duub oo Rust ah, iyo gelitaanka la wadaago waxay martaa tirinta tixraaca ku salaysan Arc ee dhinaca miridhku.

Wicitaan-xikmad leh, Wicitaannada FFI-ga ee xad-dhaafka ah waxay abuuraan kor ka beddelka macnaha guud iyo taxanaha. Waxaannu u dirnaa hawlgallada meel kasta oo suurtogal ah, annagoo safka alaabta shaqada u dirayna hawl-fuliyaha C++ halkii aanu samayn lahayn wicitaanno luqadeed oo gaar ah.

Sidee Habkani Ugu Qabsoomay Wax Soo Saarka?

Ka dib markii aan geynay dhismaha isku-dhafka ah ee goobteena, waxaan cabbirnay horumarro la taaban karo. Codsiga wax soo saarka ayaa kordhay 3.4x ee cutubyada markii hore cidhiidhi ku ahaa habaynta C++ ee xidhiidhsan. Daahida dabada (p99) ayaa hoos u dhacday 61% sababtoo ah Rust's async runtime wuxuu u socodsiin karaa codsiyada madax-banaan isla markaaba halka C++ ay gacanta ku hayso hawlo xisaabin-culus oo ku jira dunteeda gaarka ah.

Waxaa ka sii muhiimsan, eber baan lahayn kutaannada la xidhiidha isdhaafsiga lixda bilood ee ugu horreeya ee wax soo saarka. Habka xidhitaanka duntu waxay ka dhigtay mid aan macquul ahayn qaab ahaan in C++ kood looga yeedho dunta badan, halka nidaamka nooca Rust uu ka hortagay tartanka xogta dhinaca xadka. Tani waxay ahayd horumar la taaban karo marka loo eego qaabkeenii hore ee isku dayga in aan ku darno dunta C++ ee leh mutexes, kaas oo soo saaray saddex dhacdo oo xaalad jinsiyadeed rubuc gudaheed.

Kooxda injineernimada ayaa sidoo kale ka warbixiyay wareegyo soo noqnoqda oo degdeg ah. Sifooyin cusub ayaa lagu dhisi karaa Rust oo leh taageero buuxda oo isdhaafsi ah, halka modules-yada C++ ee jira ay sii wadeen socodsiinta iyada oo aan wax laga beddelin. Istaraatiijiyadan korodhka ah waxay ka dhigan tahay in aynaan waligeen lahaan haajirin khatar sare ah "qaraar weyn" - kaliya joogto ah, horumar la qiyaasi karo.

Su'aalaha Inta badan La Isweydiiyo

Rust ma wici karaa maktabadaha C++-hal-threaded iyadoon wax laga beddelin?

Haa, laakiin waa inaad xaqiijisaa dhammaan wicitaanada maktabadda inay ka dhacaan hal dun. Qaabka caadiga ah waa in la abuuro dun fulineed oo go'an oo taxan dhammaan wicitaannada C++ iyada oo loo marayo kanaalka. Hawlaha async-ka ee Rust's waxay soo gudbiyaan codsiyo waxayna sugaan jawaabaha iyada oo aan la xannibin wakhtiga runtime-threaded-ka badan. Koodhka C++ laftiisu uma baahna wax isbeddel ah - xannibaadda badbaadada waxaa lagu dhaqan geliyay gebi ahaanba dhinaca miridhku.

Madaxa FIFIgu ma yahay mid muhiim ah oo saameyn ku leh waxqabadka codsiga?

Wicitaannada FFI-ga gaarka ah waxay leeyihiin wax ka sarreeya - caadi ahaan waxay ka hooseeyaan 10 nanoseconds ee wicitaan hawleed fudud. Si kastaba ha ahaatee, taxanaha qaab-dhismeedka xogta adag iyo isku-dubbaridka dunta ee soohdinta ayaa la isku daraa haddii aad sameyso kumanaan wicitaano ah. Hawlgallada isku-dubbaridka iyo adeegsiga nuqulka eber-koobiga qaabab taxane ah sida FlatBuffers ama Cap'n Proto waxay ilaalisaa kor-u-ka-kaca xitaa marka la eego cabbirka.

Ma inaan dib ugu qorno C++ codebase gudaha Rust intii aan is dhexgelin lahayn?

Kooxaha intooda badan, isdhexgalka korodhka ayaa ah dariiqa badbaado badan uguna dheereeya. Dib-u-qorista buuxda waxay soo bandhigaysaa bilaha khatarta injineernimada iyada oo aan wax qiime ah u jeedin isticmaale ilaa la dhammeeyo. Is-dhexgalku wuxuu kuu ogolaanayaa inaad si degdeg ah u rarto hagaajinta, ansixiso habka Rust ee wax-soo-saarka, oo aad u guurto cutubyada hal mar iyadoo ku saleysan halka lacag la'aanta ay bixiso saameynta ugu badan. Dib u qor oo kaliya cutubyada halka qiimaha lagu ilaalinayo xadka FFI uu ka badan yahay kharashka dib u qorista.


Mewayz, waxaan ka dhisnaa kaabayaal miisaan leh - labadaba farsamo ahaan iyo hawlgal ahaanba. Ganacsigeena 207-module OS wuxuu caawiyaa 138,000 kooxood inay socodsiiyaan socodka shaqada ee ka caqli badan laga bilaabo $19/bishii. Haddi aad maamulayso mashaariicda, otomaatig u samaynayso, ama aad kor u qaadayso ganacsigaaga, Mewayz waxa uu la qabsanayaa habka aad u shaqayso. Ka bilow tijaabadaada bilaashka ah app.mewayz.com oo arag waxa OS ganacsi casri ah uu u qaban karo kooxdaada.