Masu haɓakawa daga Google sun ba da shawarar haɓaka nasu libc don LLVM

Ɗaya daga cikin masu haɓakawa daga Google tashe akan jerin aikawasiku na LLVM game da haɓaka madaidaitan ɗakin karatu na dandamali mai yawa (Libc) a matsayin wani ɓangare na aikin LLVM. Don dalilai da yawa, Google bai gamsu da libc na yanzu ba (glibc, musl) kuma kamfanin yana kan hanyar haɓaka sabon aiwatarwa, wanda aka ba da shawarar haɓaka a matsayin wani ɓangare na LLVM.

An yi amfani da ci gaban LLVM kwanan nan azaman tushen gina kayan aikin Google. Babban ra'ayin shi ne, idan Google ya riga ya fara haɓaka libc ɗinsa, to me yasa ba za a samar da tsarinsa nan da nan a matsayin wani ɓangare na LLVM ba, wanda ya riga ya ba da ma'auni na ɗakin karatu na C++ (Libc++), amma ba shi da irin wannan ɗakin karatu na C na C. (libc).

Ana shirin haɓaka haɓakawa a cikin matakai, haɓaka aiki a hankali. Zaɓuɓɓukan farko ana ba da shawarar tsara su azaman Layer tsakanin aikace-aikacen da tsarin Libc, daga cikin abubuwan da ba a aiwatar da su ba tukuna za a iya aro. Bayan kai wani matakin aiki, ana iya amfani da sabon Libc azaman cikakken maye gurbin tsarin Libc. Muna shirin farawa tare da goyan baya don gine-ginen x86-64, Linux, da haɗin kai tsaye (ɗauri mai ƙarfi, haɗawa, da ƙarin gine-gine za a aiwatar da su na biyu).

Har yanzu aikin yana kan matakin farko na ci gaba, amma an riga an ayyana maƙasudai na asali:

  • Modularity da haɓakawa daidai da falsafar isar da ɗakin karatu mai girma maimakon saiti na monolithic;
  • Taimako don haɗin kai tsaye a cikin hanyoyi kek (Masu zartarwa masu zaman kansu) kuma ba tare da PIE ba. Samar da CRT (lokacin gudu na C) da mai ɗaukar kaya na PIE don abubuwan aiwatarwa masu alaƙa;
  • Taimako ga mafi yawan daidaitattun ayyukan ɗakin karatu na C, tare da ƙarin POSIX da wasu ƙayyadaddun ƙayyadaddun tsarin da ake buƙata ta aikace-aikacen data kasance;
  • Yi hankali da ƙayyadaddun ƙayyadaddun mai siyarwa kuma ƙara su kawai idan ya cancanta. Game da tallafi don kari na ɓangare na uku, an ba da shawarar yin amfani da tsarin ayyukan Clang da libc ++;
  • Amfani da mafi kyawun ayyuka a cikin haɓaka ta amfani da kayan aikin LLVM, kamar yin amfani da sanitizer da gwajin fuzz tun daga farko.

Ɗaya daga cikin masu haɓaka LLVM masu aiki nunaA bayyane yake cewa yana da ma'ana don jigilar libc a matsayin wani ɓangare na kayan aikin LLVM, amma yawanci, idan irin wannan buƙatar ta taso, suna amfani da ɗakin karatu na musl, wanda aka rubuta da kyau, yana goyan bayan gine-gine daban-daban, kuma yana ba da aikin da ya dace, gami da tallafi don ƙarfafawa. haɗi. Yana iya zama barata don shigar da musl cikin LLVM kuma haɓaka shi azaman cokali mai yatsa da aka daidaita tare da babban aikin.

Ra'ayin ku kuma bayyana Marubucin aikin Musl, wanda ya yi ƙoƙarin yin jayayya dalilin da yasa shawarar Google da haɗa Libc a cikin rarraba LLVM mummunan ra'ayi ne:

  • Haɓaka da kiyaye ingantaccen, mai jituwa, kuma mai inganci Libc aiki ne mai wuyar gaske. Matsalar ba ta cikin adadin lambar ba, amma don tabbatar da halaye masu kyau da matsaloli wajen aiwatar da musaya, la'akari da babban nau'in aikace-aikacen da aka rubuta a cikin C/C++, da kuma aikace-aikace a wasu harsuna, wanda ake amfani da lokacin aiki. da Libc. Hanyar kai tsaye ba tare da la'akari da nuances ba zai haifar da gaskiyar cewa yawancin shirye-shiryen da ake da su ba za su iya yin aiki tare da Libc ba, amma irin wannan aikin ba zai kasance da sha'awar masu amfani ba.
  • Ci gaban kamfanoni na iya lalata Libc, amma tura shi don amfani da yawa, yana haifar da buƙatar ƙara hacks don tabbatar da dacewa a aikace-aikace. Ci gaba a ƙarƙashin aikin buɗe tushen kamfanoni zai ja da bargo zuwa buƙatu da mafita na kamfanin, don lalata muradun al'umma. Misali, idan kun gano matsalar da bug ke haifarwa a cikin wani shirin, a cikin ci gaban sarrafawa yana da sauƙi don tabbatar da cewa Libc ya dace da wannan kwaro fiye da gyara kwaro da kansa. Apple yana amfani da cokali mai yatsa na BSD don waɗannan dalilai, kuma Google yana amfani da cokali mai yatsa a Fuchsia. Kwarewar mai haɓaka musl shine cewa lauyoyi sun tuntuɓar shi musamman don fayyace batutuwan lasisi, amma ba a taɓa tuntuɓar shi don fayyace cikakkun bayanai na fasaha ba kafin yin canje-canje mara amfani kuma masu kawo cikas ga rassansa.
  • Rashin tsarin al'ada a cikin ci gaban libc da kuma mai da hankali kan ƙa'idodin yarda da juna maimakon sarrafa mutum ɗaya, wanda ke motsa masu haɓaka aikace-aikacen yin amfani da ma'auni maimakon ɗaure su da takamaiman aiwatarwa. Shi ya sa marubucin musl ya sabawa shigar da ɗakin karatunsa a cikin LLVM, haka kuma yana adawa da ci gaban libc a cikin LLVM, tunda a cikin wannan yanayin yanayin libc mai zaman kansa ya ɓace kuma wani aiwatarwa ya zama mafita na matakin farko ga. LLVM, da duk sauran sun zama mafita na aji na biyu.

source: budenet.ru

Add a comment