Omunye wonjiniyela abavela kwa-Google
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
Umbono wakho futhi
- 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