Zhvilluesit nga Google kanë propozuar të zhvillohet libc e tyre për LLVM

Një nga zhvilluesit nga kompania Google ngriti në listën e postimeve LLVM temën e zhvillimit të një biblioteke standarde C shumëplatformëshe (Libc) në kuadër të projektit LLVM. Për një sërë arsyesh, Google nuk është i kënaqur me libc aktuale (glibc, musl) dhe kompania është në rrugën e zhvillimit të një implementimi të ri, i cili propozohet të zhvillohet si pjesë e LLVM.

Prodhimet e LLVM kohët e fundit po përdoren si bazë për ndërtimin e veglave të ndërtimit të Google. Ideja kryesore është se nëse Google ka filluar tashmë të zhvillojë libc-në e saj, pse të mos e zhvillojë menjëherë sistemin e saj brenda LLVM, i cili tashmë ofron bibliotekën e tij standarde për C++ (Libc++) por nuk ka një bibliotekë standarde të ngjashme për C (Libc).

Zhvillimi do të bëhet në etapa, duke rritur gradualisht funksionalitetin. Versionet e para propozohet të organizohen si një shtresë midis aplikacionit dhe Libc sistemike, nga e cila do të marrë mundësi që ende nuk janë realizuar. Pasi të arrihet një nivel i caktuar në funksionalitet, Libc e re do të jetë në gjendje të përdoret si një zëvendësim i plotë për Libc sistemike. Planifikimi fillon me mbështetje për arkitekturën x86-64, Linux dhe lidhjen statike (ngarkimi dinamik, kompozimi dhe arkitekturat shtesë do të realizohen në etapën e dytë).

Projekti është ende në fazën fillestare të zhvillimit, por janë përcaktuar tashmë qëllimet bazë:

  • Modulariteti dhe zhvillimi sipas filozofisĂ« sĂ« ofrimit tĂ« njĂ« biblioteke tĂ« granuluar, dhe jo njĂ« set monolit;
  • MbĂ«shtetja e lidhjes statike nĂ« modulet me PIE (ekzekutues tĂ« pavarur nga pozita) dhe pa PIE. Ofrimi i CRT (C runtime) dhe ngarkuesit PIE pĂ«r skedarĂ«t ekzekutivĂ« qĂ« lidhĂ«n statikisht;
  • MbĂ«shtetje pĂ«r shumicĂ«n e funksioneve tĂ« bibliotekĂ«s standarde C me shtesa POSIX dhe disa zgjerime specifike pĂ«r sistemet qĂ« kĂ«rkohen nĂ« aplikacionet ekzistues.
  • NjĂ« qasje e kujdesshme ndaj zgjerimeve specifike pĂ«r prodhuesit dhe shtimi i tyre vetĂ«m kur Ă«shtĂ« e nevojshme. PĂ«r sa i pĂ«rket mbĂ«shtetjes pĂ«r zgjerimet e palĂ«ve tĂ« treta, sugjerohet tĂ« aplikohet qasja e projekteve Clang dhe libc++;
  • PĂ«rdorimi i praktikave mĂ« tĂ« mira nĂ« zhvillim me mjete tĂ« LLVM, si pĂ«rdorimi i sanitizer dhe testimeve fuzzing nga fillimi.

Një nga zhvilluesit aktivë të LLVM caktova, të cilat sugjerojnë se kalimi i libc si pjesë e mjetit LLVM ka kuptim, por zakonisht, në raste të tilla, përdoret biblioteka musl, e cila është shkruar me cilësi, mbështet arkitektura të ndryshme dhe ofron funksionalitetin e nevojshëm, përfshirë mbështetje për lidhjen dinamike. Integrimi i musl në LLVM dhe zhvillimi i tij si një fork i sinkronizuar me projektin kryesor mund të jetë i arsyeshëm.

Opinioni i tij gjithashtu shprehu autori i projektit Musl, i cili përpiqej të argumentonte pse propozimi i Google dhe përfshirja e Libc në përbërjen e LLVM janë ide jashtëzakonisht të këqija:

  • Zhvillimi dhe mbĂ«shtetje e saktĂ«, e pajtueshme dhe me cilĂ«si tĂ« lartĂ« tĂ« Libc Ă«shtĂ« njĂ« detyrĂ« shumĂ« e vĂ«shtirĂ«. Problemi nuk Ă«shtĂ« nĂ« vĂ«llimin e kodit, por nĂ« sigurimin e sjelljes sĂ« saktĂ« dhe vĂ«shtirĂ«sitĂ« e implementimit tĂ« ndĂ«rfaqeve me parasysh shtresat e shumta tĂ« aplikacioneve tĂ« shkruara ndonjĂ«herĂ« nĂ« C/C++, si dhe aplikacioneve nĂ« gjuhĂ« tĂ« tjera, runtime i tĂ« cilave pĂ«rdor Libc. NjĂ« qasje e drejtpĂ«rdrejtĂ« pa marrĂ« parasysh nuancat do tĂ« çonte vetĂ«m nĂ« faktin qĂ« shumĂ« programe ekzistuese nuk do tĂ« ishin nĂ« gjendje tĂ« funksiononin me Libc, dhe nĂ« kĂ«tĂ« rast njĂ« projekt i tillĂ« nuk do tĂ« ishte i interesant pĂ«r konsumatorĂ«t.
  • Zhvillimi korporativ mund tĂ« dĂ«mtojĂ« Libc, por gjithashtu tĂ« lehtĂ«sojĂ« pĂ«rdorimin e gjerĂ«, duke rezultuar nĂ« nevojĂ«n pĂ«r tĂ« shtuar hack-a pĂ«r tĂ« siguruar kompatibilitetin nĂ« aplikacione. Zhvillimi nĂ«n ombrellĂ«n e njĂ« projekti tĂ« hapur korporativ do tĂ« tĂ«rheqĂ« vĂ«mendjen nĂ« drejtim tĂ« nevojave dhe zgjidhjeve tĂ« kompanisĂ«, nĂ« dĂ«m tĂ« interesave tĂ« komunitetit. PĂ«r shembull, nĂ« rastin e identifikimit tĂ« njĂ« problemi, i cili shkaktohet nga njĂ« gabim nĂ« ndonjĂ« program tjetĂ«r tĂ« saj, Ă«shtĂ« mĂ« e lehtĂ« tĂ« sigurohet kompatibiliteti i Libc me kĂ«tĂ« gabim sesa tĂ« riparohet vetĂ« gabimi. Apple pĂ«rdor pĂ«r kĂ«to qĂ«llime njĂ« fork tĂ« BSD libc, ndĂ«rsa Google aplikon nĂ« Fuchsia njĂ« fork tĂ« musl. Eksperienca e zhvilluesit tĂ« musl tregon se ai Ă«shtĂ« kontaktuar kryesisht nga avokatĂ«t pĂ«r sqarime mbi çështjet e licencimit, por kurrĂ« nuk Ă«shtĂ« kĂ«rkuar pĂ«r detajet teknike para se tĂ« pĂ«rfshihen nĂ« degĂ«zime ndryshime tĂ« padobishme dhe qĂ« dĂ«mtojnĂ« funksionimin.
  • Mungesa e monokulturĂ«s nĂ« zhvillimin e libc dhe orientimi drejt standardeve tĂ« zhvilluara mbi arritjen e konsensusit, nĂ« vend tĂ« menaxhimit tĂ« vetĂ«m, motivon zhvilluesit e aplikacioneve tĂ« aplikojnĂ« standardet dhe tĂ« mos mbahen pas implementimeve tĂ« caktuara. Kjo Ă«shtĂ« arsyeja pse autori i musl Ă«shtĂ« kundĂ«r pĂ«rfshirjes sĂ« bibliotekĂ«s sĂ« tij nĂ« LLVM, ashtu siç Ă«shtĂ« kundĂ«r zhvillimit tĂ« libc brenda LLVM, pasi nĂ« kĂ«tĂ« rast humbet karakteri i pavarur i libc dhe njĂ« implementim i caktuar bĂ«het zgjidhja e klasĂ«s sĂ« parĂ« pĂ«r LLVM, ndĂ«rsa tĂ« gjitha tĂ« tjerat mbeten tĂ« dytat.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster