L-iżviluppaturi minn Google ssuġġerew li jiżviluppaw il-libc tagħhom stess għal LLVM

Wieħed mill-iżviluppaturi minn Google imqajma fuq il-lista tal-posta tal-LLVM dwar l-iżvilupp ta’ librerija standard C multi-pjattaforma (Libc) bħala parti mill-proġett LLVM. Għal numru ta' raġunijiet, Google mhix sodisfatta bil-libc attwali (glibc, musl) u l-kumpanija tinsab fi triqitha biex tiżviluppa implimentazzjoni ġdida, li hija proposta li tiġi żviluppata bħala parti minn LLVM.

L-iżviluppi LLVM reċentement intużaw bħala l-bażi għall-bini tal-għodod tal-assemblaġġ ta 'Google. L-idea ewlenija hija li jekk Google diġà bdiet tiżviluppa l-libc tagħha, allura għaliex ma tiżviluppax immedjatament is-sistema tagħha bħala parti minn LLVM, li diġà toffri librerija standard tagħha stess għal C++ (Libc++), iżda m'għandhiex librerija standard simili għal C. (libc).

L-iżvilupp huwa ppjanat li jitwettaq fi stadji, li tiżdied gradwalment il-funzjonalità. L-ewwel għażliet huma proposti biex jiġu ddisinjati bħala saff bejn l-applikazzjoni u s-sistema Libc, li minnu se jiġu mislufa karatteristiċi li għadhom ma ġewx implimentati. Wara li jintlaħaq ċertu livell ta 'funzjonalità, il-Libc il-ġdid jista' jintuża bħala sostitut sħiħ għas-sistema Libc. Qed nippjanaw li nibdew b'appoġġ għall-arkitettura x86-64, Linux u linking statiku (tagħbija dinamika, linking u arkitetturi addizzjonali se jiġu implimentati sekondarjament).

Il-proġett għadu fl-istadju inizjali tal-iżvilupp, iżda l-għanijiet bażiċi diġà ġew definiti:

  • Modularità u żvilupp skond il-filosofija li titwassal librerija granulari aktar milli sett monolitiku;
  • Appoġġ għall-konnessjoni statika fil-modi ma TORTA (eżekutibbli indipendenti mill-pożizzjoni) u mingħajr PIE. Provvista ta' CRT (C runtime) u PIE loader għal eżekutibbli konnessi b'mod statiku;
  • Appoġġ għall-biċċa l-kbira tal-funzjonijiet standard tal-librerija C, b'żidiet POSIX u xi estensjonijiet speċifiċi għas-sistema meħtieġa minn applikazzjonijiet eżistenti;
  • Oqgħod attent bl-estensjonijiet speċifiċi għall-bejjiegħ u żidhom biss meta jkun meħtieġ. Rigward l-appoġġ għal estensjonijiet ta' partijiet terzi, huwa propost li jintuża l-approċċ tal-proġetti Clang u libc++;
  • L-użu tal-aħjar prattiki fl-iżvilupp bl-użu tal-għodda tal-LLVM, bħall-użu ta’ sanitizer u fuzz testing mill-bidu nett.

Wieħed mill-iżviluppaturi attivi tal-LLVM rrimarkaHuwa ċar li jagħmel sens li ttrasporta libc bħala parti mill-għodda tal-LLVM, iżda ġeneralment, meta tinħoloq ħtieġa bħal din, huma jużaw il-librerija musl, li hija miktuba tajjeb, tappoġġja diversi arkitetturi, u tipprovdi l-funzjonalità meħtieġa, inkluż appoġġ għal dinamiċi. jgħaqqdu. Jista' jkun iġġustifikat li l-musl jiġi integrat f'LLVM u jiġi żviluppat bħala furketta sinkronizzata mal-proġett prinċipali.

L-opinjoni tiegħek ukoll espressi L-awtur tal-proġett Musl, li pprova jargumenta għaliex il-proposta ta 'Google u l-inklużjoni ta' Libc fid-distribuzzjoni LLVM huma ideat ħżiena ħafna:

  • L-iżvilupp u ż-żamma ta' Libc korrett, kompatibbli u ta' kwalità għolja huwa kompitu diffiċli ħafna. Il-problema mhijiex fl-ammont ta 'kodiċi, iżda fl-iżgurar ta' mġiba korretta u diffikultajiet fl-implimentazzjoni ta 'interfaces, b'kont meħud tas-saff enormi ta' applikazzjonijiet li qatt miktubin f'C/C++, kif ukoll applikazzjonijiet f'lingwi oħra, li r-runtime tagħhom huwa użat minn Libc. Approċċ head-on mingħajr ma jitqiesu l-sfumaturi se jwassal biss għall-fatt li ħafna programmi eżistenti mhux se jkunu jistgħu jaħdmu ma 'Libc, iżda mbagħad proġett bħal dan ma jkunx ta' interess għall-konsumaturi.
  • L-iżvilupp korporattiv jista 'jrovina Libc, iżda jimbuttah għal użu mifrux, li jirriżulta fil-ħtieġa li jiżdiedu hacks biex tiġi żgurata l-kompatibilità fl-applikazzjonijiet. L-iżvilupp taħt l-awspiċju ta 'proġett ta' sors miftuħ korporattiv se jiġbed il-kutra lejn il-ħtiġijiet u s-soluzzjonijiet tal-kumpanija, għad-detriment tal-interessi tal-komunità. Pereżempju, jekk tidentifika problema li hija kkawżata minn bug fi programm ieħor, fl-iżvilupp ikkontrollat ​​huwa aktar faċli li tiżgura li Libc huwa kompatibbli ma 'dan il-bug milli jirranġa l-bug innifsu. Apple juża l-furketta BSD libc għal dawn l-għanijiet, u Google juża l-furketta musl fil-Fuchsia. L-esperjenza tal-iżviluppatur tal-musl hija li ġie kkuntattjat prinċipalment minn avukati biex jiċċara kwistjonijiet ta 'liċenzjar, iżda qatt ma ġie kkuntattjat biex jiċċara dettalji tekniċi qabel ma għamel bidliet inutli u ta' tfixkil fil-fergħat tiegħu.
  • In-nuqqas ta 'monokultura fl-iżvilupp tal-libc u fokus fuq standards immexxija mill-kunsens aktar milli kontroll uniku, li jimmotiva lill-iżviluppaturi tal-applikazzjoni biex jużaw standards aktar milli jkunu marbuta ma' implimentazzjonijiet speċifiċi. Huwa għalhekk li l-awtur tal-musl huwa kontra l-inklużjoni tal-librerija tiegħu f'LLVM, kif ukoll kontra l-iżvilupp tal-libc fi ħdan LLVM, peress li f'dan il-każ tintilef in-natura indipendenti tal-libc u ċerta implimentazzjoni ssir soluzzjoni tal-ewwel klassi għal LLVM, u l-oħrajn kollha jsiru soluzzjoni tat-tieni klassi.

Sors: opennet.ru

Żid kumment