Googleovi programeri žele razviti vlastiti libc za LLVM

LLVM_Logo

Jedan od Googleovih programera predstavio je na LLVM mailing listi temu razvoja cross-platforma standardna C biblioteka (Libc) u okviru LLVM projekta.

Iz nekoliko razloga, Google nije zadovoljan trenutnom libc (glibc, musl) i kompanija je na putu da razvije novu implementaciju, koji namjerava razviti kao dio LLVM-a. Razvoj LLVM-a nedavno se koristi kao osnova za izgradnju Googleovih alata.

Razvoj se planira postepeno, postupno povećavajući funkcionalnost. Predlaže se da prve opcije imaju oblik srednjeg sloja između aplikacije i libc sistema, iz kojeg će se posuđivati ​​nerealizirane značajke.

Nakon postizanja određenog nivoa funkcionalnosti, novi Libc može se koristiti kao potpuna zamjena za sistem Libc.

Planirano je započeti s podrškom za x86-64 arhitekturu, Linux i statičko vezivanje (dinamičko učitavanje, pakiranje i dodatne arhitekture bit će implementirani drugi).

Projekt je još uvijek u početnoj fazi razvoja, ali osnovni ciljevi su već definirani:

  • Modularnost i razvoj u skladu s filozofijom isporuke granulirane biblioteke, nego monolitni ansambl.
  • Podrška za statičku vezu u PIE modovima (izvršne datoteke nezavisne od položaja) i bez PIE. Osigurajte CRT (C Runtime) i PIE loader za statički povezane izvršne datoteke.
  • Podržava većinu funkcija biblioteke C. standardno sa POSIX dodacima i nekim sistemskim proširenjima koja se traže u postojećim aplikacijama.
  • Pažljiv odnos prema određenim produženjima od dobavljača i dodaje ih samo po potrebi. Za nezavisnu podršku za proširenje, predloženo je koristiti pristup projekta Clang i libc ++.
  • Korišćenje najboljih praksi u razvoju pomoću LLVM alata, kao što su primjena dezinficijensa i uklanjanje testova od početka.

Jedan od aktivnih programera LLVM-a je to naznačio isporuka libc kao dio LLVM alata nije bez smisla, ali uglavnom s takvom potrebom koriste musl biblioteku, Dobro je napisan, podržava više arhitektura i pruža potrebne funkcije, uključujući dinamičko povezivanje.

Uključivanje Musla u LLVM i njegov razvoj kao sinkronizirane vilice s glavnim projektom mogu biti opravdani.

Njegovo mišljenje izrazio je i autor projekta Musl, koji je pokušao argumentirati zašto su Googleov prijedlog i uključivanje Libca u isporuku LLVM-a vrlo loše ideje:

Razvoj i održavanje ispravnog, kompatibilnog i visokokvalitetnog libc-a vrlo je težak zadatak. Problem nije u količini koda, već u pružanju ispravnog ponašanja.

I poteškoće s implementacijom sučelja, s obzirom na ogromno spremište aplikacija napisanih na C / C ++, kao i aplikacija na drugim jezicima čije izvršavanje koristi Libc.

Pristup čelu bez uzimanja u obzir nijansi samo će dovesti do činjenice da mnogi postojeći programi neće moći raditi s Libcom, ali takav projekt neće biti zanimljiv potrošačima.

Korporativni razvoj može uništiti Libc, ali potiču na široku upotrebu, što će rezultirati potrebom dodavanja hakova kako bi se osigurala kompatibilnost aplikacija.

Razvoj pod pokroviteljstvom korporativnog otvorenog projekta podstaći će pokrivanje prema potrebama i odlukama kompanije, na štetu interesa zajednice.

Na primjer, u slučaju identificiranja problema uzrokovanog greškom u nekom drugom vašem programu, u razvoju pod nadzorom, lakše je zajamčiti kompatibilnost Libc-a s ovom pogreškom nego ispraviti samu grešku.

Apple u ove svrhe koristi BSD vilicu za vilice, a Google Fuchsia vilicu. Muslovo iskustvo programera sugerira da su ga advokati kontaktirali prvenstveno radi razjašnjenja pitanja licenciranja.

Izvor: http://lists.llvm.org


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.