Onjiniyela abavela ku-Google baphakamise ukuthi bakhe i-libc yabo ye-LLVM

Omunye wonjiniyela abavela kwa-Google iphakanyisiwe kuhlu lwe-imeyili ye-LLVM mayelana nokuthuthukiswa komtapo wezincwadi ojwayelekile we-multiplatform C (Libc) njengengxenye yephrojekthi ye-LLVM. Ngenxa yezizathu ezimbalwa, i-Google ayinelisekile nge-libc yamanje (glibc, musl) futhi inkampani isendleleni yokuthuthukisa ukuqaliswa okusha, okuhlongozwayo ukuthi kuthuthukiswe njengengxenye ye-LLVM.

Intuthuko ye-LLVM isanda kusetshenziswa njengesisekelo sokwakha amathuluzi wokuhlanganisa we-Google. Umbono oyinhloko ukuthi uma i-Google isivele iqalile ukuthuthukisa i-libc yayo, kungani-ke ingathuthuki ngokushesha uhlelo lwayo njengengxenye ye-LLVM, esevele inikezela ngomtapo wayo wezincwadi ojwayelekile we-C++ (Libc++), kodwa ingenawo umtapo wezincwadi ojwayelekile ofanayo we-C. (libc).

Ukuthuthukiswa kuhlelwe ukuthi kwenziwe ngezigaba, kancane kancane ukwandisa ukusebenza. Izinketho zokuqala zihlongozwa ukuthi zakhelwe njengesendlalelo phakathi kohlelo lokusebenza nesistimu ye-Libc, okuzoboleka kuzo izici ezingakenziwa. Ngemva kokufinyelela izinga elithile lokusebenza, i-Libc entsha ingasetshenziswa njengokumiselela okuphelele kwesistimu ye-Libc. Sihlela ukuqala ngosekelo lwezakhiwo ze-x86-64, i-Linux, kanye nokuxhumanisa okumile (ukulayisha okuguquguqukayo, ukuxhumanisa, kanye nezakhiwo ezengeziwe kuzosetshenziswa ngokwesibili).

Iphrojekthi isesigabeni sokuqala sokuthuthuka, kodwa imigomo eyisisekelo isichaziwe:

  • I-modularity kanye nentuthuko ngokuhambisana nefilosofi yokuletha umtapo wezincwadi oyimbudumbudu kunesethi ye-monolithic;
  • Ukusekelwa kokuxhumanisa okumile kumamodi I-PIE (Okusebenzisekayo okuzimele) futhi ngaphandle kwe-PIE. Ihlinzeka nge-CRT (isikhathi sokusebenza C) nesilayishi se-PIE sokusebenziseka okuxhunywe ngokwezibalo;
  • Ukusekelwa kwemisebenzi eminingi evamile yomtapo wolwazi we-C, enezengezo ze-POSIX nezinye izandiso eziqondene nohlelo ezidingwa izinhlelo zokusebenza ezikhona;
  • Qaphela izandiso eziqondene nomthengisi futhi uyengeze kuphela uma kudingeka. Mayelana nokusekelwa kwezandiso zezinkampani zangaphandle, kuhlongozwa ukuthi kusetshenziswe indlela yephrojekthi ye-Clang ne-libc++;
  • Ukusebenzisa izinqubo ezihamba phambili ekuthuthukisweni kusetshenziswa ikhithi yamathuluzi ye-LLVM, njengokusebenzisa isibulali-magciwane nokuhlola i-fuzz kusukela ekuqaleni.

Omunye wabathuthukisi be-LLVM abasebenzayo wakhombaKuyacaca ukuthi kunengqondo ukuthumela i-libc njengengxenye yekhithi yamathuluzi ye-LLVM, kodwa ngokuvamile, lapho isidingo esinjalo siphakama, basebenzisa umtapo wezincwadi we-musl, obhalwe kahle, osekela izakhiwo ezihlukahlukene, futhi uhlinzeka ngokusebenza okudingekayo, okuhlanganisa ukusekelwa kokuguquguqukayo. ukuxhumanisa. Kungase kuthethelelwe ukushumeka i-musl ku-LLVM futhi iyithuthukise njengemfoloko evunyelaniswe nephrojekthi enkulu.

Umbono wakho futhi kuveziwe Umbhali wephrojekthi ye-Musl, ozame ukuphikisa ukuthi kungani isiphakamiso se-Google nokufakwa kwe-Libc ekusatshalalisweni kwe-LLVM kuyimibono emibi kakhulu:

  • Ukuthuthukisa nokugcina i-Libc elungile, ehambisanayo, nesezingeni eliphezulu kuwumsebenzi onzima kakhulu. Inkinga ayikho enanini lekhodi, kodwa ekuqinisekiseni ukuziphatha okulungile nobunzima ekusebenziseni ukuxhumana, kucatshangelwa ungqimba olukhulu lwezinhlelo zokusebenza ezake zabhalwa ku-C/C++, kanye nezinhlelo zokusebenza kwezinye izilimi, isikhathi sokusebenza esisetshenziswayo. ngu Libc. Indlela ehamba phambili ngaphandle kokucabangela ama-nuances izoholela kuphela eqinisweni lokuthi izinhlelo eziningi ezikhona ngeke zikwazi ukusebenza ne-Libc, kodwa-ke iphrojekthi enjalo ngeke ibe nesithakazelo kubathengi.
  • Ukuthuthukiswa kwebhizinisi kungonakalisa i-Libc, kodwa kuyiphushe ukuthi isetshenziswe kabanzi, okuholela esidingweni sokungeza ama-hacks ukuze kuqinisekiswe ukuhambisana ezinhlelweni zokusebenza. Intuthuko ngaphansi kwephrojekthi yomthombo ovulekile yebhizinisi izodonsela ingubo ezidingweni nasezisombululweni zenkampani, okulimaza izintshisekelo zomphakathi. Isibonelo, uma ukhomba inkinga edalwe isiphazamisi kolunye uhlelo, ekuthuthukisweni okulawulwayo kulula ukuqinisekisa ukuthi i-Libc iyahambisana nalesi siphazamisi kunokulungisa iphutha ngokwalo. I-Apple isebenzisa imfoloko ye-BSD libc ngalezi zinhloso, futhi i-Google isebenzisa imfoloko ye-musl e-Fuchsia. Okuhlangenwe nakho komthuthukisi we-musl ukuthi wathintwa ikakhulukazi abameli ukuze acacise izindaba zamalayisensi, kodwa akazange athintwe ukuze acacise imininingwane yobuchwepheshe ngaphambi kokwenza izinguquko ezingenamsebenzi neziphazamisayo emagatsheni akhe.
  • Ukungabikho kwe-monoculture ekuthuthukisweni kwe-libc kanye nokugxila kumazinga aqhutshwa ukuvumelana esikhundleni sokulawula komuntu ngamunye, okukhuthaza abathuthukisi bohlelo lokusebenza ukuthi basebenzise amazinga kunokuba bahlanganiswe nokusetshenziswa okuthile. Kungakho umbhali we-musl emelene nokufakwa komtapo wezincwadi wakhe e-LLVM, kanye nokuphikisana nokuthuthukiswa kwe-libc ngaphakathi kwe-LLVM, ngoba kulokhu ukuzimela kwe-libc kulahleka futhi ukuqaliswa okuthile kuba yisixazululo sekilasi lokuqala. I-LLVM, nabo bonke abanye baba yisixazululo sesigaba sesibili.

Source: opennet.ru

Engeza amazwana