Google izstrÄdÄtÄji ieteica izstrÄdÄt savu libc priekÅ” LLVM
Viens no Google izstrÄdÄtÄjiem paaugstinÄts LLVM adresÄtu sarakstÄ par daudzplatformu standarta C bibliotÄkas (Libc) izstrÄdi LLVM projekta ietvaros. VairÄku iemeslu dÄļ Google nav apmierinÄts ar paÅ”reizÄjo libc (glibc, musl), un uzÅÄmums ir ceÄ¼Ä uz jaunas implementÄcijas izstrÄdi, kuru tiek piedÄvÄts izstrÄdÄt LLVM ietvaros.
LLVM izstrÄde nesen tika izmantota kÄ pamats Google montÄžas rÄ«ku izveidei. GalvenÄ doma ir tÄda, ka, ja Google jau ir sÄcis izstrÄdÄt savu libc, tad kÄpÄc gan uzreiz neizstrÄdÄt savu sistÄmu kÄ daļu no LLVM, kas jau piedÄvÄ savu standarta bibliotÄku priekÅ” C++ (Libc++), bet tai nav lÄ«dzÄ«gas standarta bibliotÄkas priekÅ” C. (libc).
IzstrÄdi plÄnots veikt pa posmiem, pakÄpeniski palielinot funkcionalitÄti. PirmÄs opcijas tiek piedÄvÄtas veidot kÄ slÄni starp aplikÄciju un sistÄmu Libc, no kuras tiks aizÅemtas vÄl nerealizÄtas iespÄjas. PÄc noteikta funkcionalitÄtes lÄ«meÅa sasniegÅ”anas jauno Libc var izmantot kÄ pilnÄ«gu sistÄmas Libc aizstÄjÄju. MÄs plÄnojam sÄkt ar x86-64 arhitektÅ«ras, Linux un statiskÄs saistÄ«Å”anas atbalstu (sekundÄri tiks ieviesta dinamiskÄ ielÄde, saistÄ«Å”ana un papildu arhitektÅ«ras).
Projekts vÄl ir sÄkotnÄjÄ izstrÄdes stadijÄ, taÄu jau ir noteikti pamatmÄrÄ·i:
ModularitÄte un attÄ«stÄ«ba saskaÅÄ ar granulÄtas bibliotÄkas, nevis monolÄ«ta komplekta piegÄdes filozofiju;
Atbalsts statiskai saistÄ«Å”anai režīmos PIE (No pozÄ«cijas neatkarÄ«gi izpildÄmie faili) un bez PIE. CRT (C izpildlaika) un PIE ielÄdÄja nodroÅ”inÄÅ”ana statiski saistÄ«tiem izpildÄmiem failiem;
Atbalsts lielÄkajai daļai standarta C bibliotÄkas funkciju ar POSIX papildinÄjumiem un dažiem sistÄmai specifiskiem paplaÅ”inÄjumiem, kas nepiecieÅ”ami esoÅ”ajÄm lietojumprogrammÄm;
Esiet piesardzÄ«gs ar pakalpojumu sniedzÄja paplaÅ”inÄjumiem un pievienojiet tos tikai nepiecieÅ”amÄ«bas gadÄ«jumÄ. AttiecÄ«bÄ uz atbalstu treÅ”o puÅ”u paplaÅ”inÄjumiem tiek piedÄvÄts izmantot Clang un libc++ projektu pieeju;
LabÄkÄs prakses izmantoÅ”ana izstrÄdÄ, izmantojot LLVM rÄ«kkopu, piemÄram, dezinfekcijas lÄ«dzekļa un izplÅ«des testÄÅ”anas izmantoÅ”ana jau no paÅ”a sÄkuma.
Viens no aktÄ«vajiem LLVM izstrÄdÄtÄjiem norÄdÄ«jaIr skaidrs, ka ir jÄga nosÅ«tÄ«t libc kÄ daļu no LLVM rÄ«ku komplekta, taÄu parasti, kad rodas Å”Äda vajadzÄ«ba, viÅi izmanto musl bibliotÄku, kas ir labi uzrakstÄ«ta, atbalsta dažÄdas arhitektÅ«ras un nodroÅ”ina nepiecieÅ”amo funkcionalitÄti, tostarp atbalstu dinamiskai. saistÄ«Å”ana. Var bÅ«t pamatoti iegult musl LLVM un attÄ«stÄ«t to kÄ dakÅ”iÅu, kas sinhronizÄta ar galveno projektu.
Tavs viedoklis arÄ« izteikts Musl projekta autors, kurÅ” mÄÄ£inÄja argumentÄt, kÄpÄc Google priekÅ”likums un Libc iekļauÅ”ana LLVM izplatÄ«Å”anÄ ir ļoti sliktas idejas:
Pareiza, saderÄ«ga un kvalitatÄ«va Libc izstrÄde un uzturÄÅ”ana ir ļoti grÅ«ts uzdevums. ProblÄma nav koda apjomÄ, bet pareizas uzvedÄ«bas nodroÅ”inÄÅ”anÄ un saskarÅu ievieÅ”anas grÅ«tÄ«bÄs, Åemot vÄrÄ milzÄ«go aplikÄciju slÄni, kas jebkad rakstÄ«ts C/C++ valodÄ, kÄ arÄ« aplikÄcijas citÄs valodÄs, kuru izpildlaiks tiek izmantots autors Libc. TieÅ”a pieeja, neÅemot vÄrÄ nianses, novedÄ«s tikai pie tÄ, ka daudzas esoÅ”Äs programmas nespÄs strÄdÄt ar Libc, bet tad Å”Äds projekts patÄrÄtÄjus neinteresÄs.
KorporatÄ«vÄ attÄ«stÄ«ba var sabojÄt Libc, taÄu to var plaÅ”i izmantot, kÄ rezultÄtÄ ir jÄpievieno uzlauzumi, lai nodroÅ”inÄtu lietojumprogrammu saderÄ«bu. AttÄ«stÄ«ba korporatÄ«vÄ atvÄrtÄ pirmkoda projekta aizgÄdÄ«bÄ virzÄ«s segu uz uzÅÄmuma vajadzÄ«bÄm un risinÄjumiem, kaitÄjot sabiedrÄ«bas interesÄm. PiemÄram, ja identificÄjat problÄmu, ko izraisÄ«jusi kļūda citÄ programmÄ, kontrolÄtÄ izstrÄdÄ ir vieglÄk nodroÅ”inÄt Libc saderÄ«bu ar Å”o kļūdu, nevis labot paÅ”u kļūdu. Apple Å”iem nolÅ«kiem izmanto BSD libc dakÅ”iÅu, un Google izmanto musl dakÅ”iÅu fuksijÄ. Musl izstrÄdÄtÄja pieredze liecina, ka ar viÅu galvenokÄrt sazinÄjÄs juristi, lai noskaidrotu licencÄÅ”anas jautÄjumus, taÄu viÅÅ” nekad nav sazinÄjies, lai noskaidrotu tehniskÄs detaļas, pirms veica bezjÄdzÄ«gas un traucÄjoÅ”as izmaiÅas viÅa filiÄlÄs.
MonokultÅ«ras trÅ«kums libc izstrÄdÄ un koncentrÄÅ”anÄs uz vienprÄtÄ«giem standartiem, nevis vienpersonisku kontroli, kas motivÄ lietojumprogrammu izstrÄdÄtÄjus izmantot standartus, nevis bÅ«t piesaistÄ«tiem konkrÄtÄm implementÄcijÄm. TieÅ”i tÄpÄc musl autors ir pret savas bibliotÄkas iekļauÅ”anu LLVM, kÄ arÄ« pret libc attÄ«stÄ«bu LLVM ietvaros, jo Å”ajÄ gadÄ«jumÄ zÅ«d libc neatkarÄ«gais raksturs un noteikta realizÄcija kļūst par pirmŔķirÄ«gu risinÄjumu LLVM, un visi pÄrÄjie kļūst par otrŔķirÄ«gu risinÄjumu.