Cov neeg tsim tawm los ntawm Google tau tawm tswv yim tsim lawv tus kheej libc rau LLVM

Ib tus tsim tawm los ntawm Google tsa nyob rau hauv LLVM daim ntawv xa ntawv hais txog kev txhim kho ntau lub platform txheem C lub tsev qiv ntawv (Libc) ua ib feem ntawm LLVM qhov project. Rau ntau qhov laj thawj, Google tsis txaus siab rau libc tam sim no (glibc, musl) thiab lub tuam txhab tab tom tsim txoj hauv kev los tsim qhov kev siv tshiab, uas tau thov kom tsim los ua ib feem ntawm LLVM.

LLVM kev txhim kho tsis ntev los no tau siv los ua lub hauv paus rau kev tsim Google cov cuab yeej sib dhos. Lub tswv yim tseem ceeb yog tias Google twb tau pib tsim nws libc lawm, yog vim li cas ho tsis tam sim ntawd txhim kho nws qhov system raws li ib feem ntawm LLVM, uas twb muaj nws tus kheej lub tsev qiv ntawv rau C ++ (Libc ++), tab sis tsis muaj cov tsev qiv ntawv zoo sib xws rau C. (libc).

Kev loj hlob yog npaj yuav ua nyob rau hauv theem, maj mam nce functionality. Thawj cov kev xaiv tau npaj yuav tsim los ua ib txheej ntawm daim ntawv thov thiab lub kaw lus Libc, los ntawm cov yam ntxwv uas tseem tsis tau ua tiav yuav raug qiv. Tom qab ncav cuag ib theem ntawm kev ua haujlwm, Libc tshiab tuaj yeem siv los ua qhov hloov pauv tiav rau Libc system. Peb npaj yuav pib nrog kev txhawb nqa rau x86-64 architecture, Linux thiab kev sib txuas zoo li qub (kev thauj khoom dynamic, kev sib txuas thiab cov architectures ntxiv yuav raug siv thib ob).

Txoj haujlwm tseem nyob rau theem pib ntawm kev txhim kho, tab sis cov hom phiaj tseem ceeb twb tau hais tseg:

  • Modularity thiab kev loj hlob raws li lub tswv yim ntawm kev xa ib lub tsev qiv ntawv granular es tsis yog monolithic teeb;
  • Txhawb kev sib txuas zoo li qub hauv hom PIB (Txoj hauj lwm-yooj yim executables) thiab tsis muaj PIE. Muab CRT (C runtime) thiab PIE loader rau statically txuas executables;
  • Kev them nyiaj yug rau feem ntau ntawm cov qauv C lub tsev qiv ntawv ua haujlwm, nrog POSIX ntxiv thiab qee qhov kev txuas ntxiv tshwj xeeb xav tau los ntawm cov ntawv thov uas twb muaj lawm;
  • Ceev faj nrog cov neeg muag khoom tshwj xeeb txuas ntxiv thiab tsuas yog ntxiv rau thaum tsim nyog. Hais txog kev txhawb nqa rau lwm tus neeg txuas ntxiv, nws tau thov kom siv txoj hauv kev ntawm Clang thiab libc ++ tej yaam num;
  • Siv cov kev coj ua zoo tshaj plaws hauv kev txhim kho siv LLVM cov cuab yeej, xws li siv tshuaj tua kab mob thiab fuzz kuaj txij thaum pib.

Ib qho ntawm cov neeg tsim tawm LLVM nquag taw tes qhiaNws yog qhov tseeb tias nws ua rau kev txiav txim siab rau nkoj libc ua ib feem ntawm LLVM cov cuab yeej, tab sis feem ntau, thaum muaj qhov xav tau tshwm sim, lawv siv lub tsev qiv ntawv musl, uas tau sau tau zoo, txhawb nqa ntau yam architectures, thiab muab cov haujlwm tsim nyog, suav nrog kev txhawb nqa rau dynamic. kev sib txuas. Tej zaum nws yuav tsim nyog rau embed musl rau hauv LLVM thiab txhim kho nws raws li rab rawg synchronized nrog lub ntsiab project.

Koj txoj kev xav thiab qhia Tus sau ntawm Musl qhov project, uas tau sim sib cav vim li cas Google lub tswv yim thiab kev suav nrog Libc hauv LLVM kev faib tawm yog cov tswv yim phem heev:

  • Txhim kho thiab tswj xyuas qhov tseeb, sib xws, thiab ua tau zoo Libc yog ib txoj haujlwm nyuaj heev. Qhov teeb meem tsis yog tus lej ntawm cov lej, tab sis txhawm rau ua kom tus cwj pwm raug thiab teeb meem hauv kev siv cov kev sib tshuam, suav nrog cov txheej txheem loj ntawm cov ntawv thov uas tau sau rau hauv C / C ++, nrog rau cov ntawv thov hauv lwm hom lus, lub sijhawm ua haujlwm uas siv tau. los ntawm Libc. Lub taub hau mus kom ze yam tsis tau coj mus rau hauv tus account lub nuances tsuas yog ua rau qhov tseeb tias ntau cov kev pab cuam uas twb muaj lawm yuav tsis tuaj yeem ua haujlwm nrog Libc, tab sis tom qab ntawd qhov project no yuav tsis txaus siab rau cov neeg siv khoom.
  • Kev txhim kho kev lag luam tuaj yeem tawg Libc, tab sis thawb nws mus rau hauv kev siv dav, ua rau xav tau ntxiv hacks kom ntseeg tau tias muaj kev sib raug zoo hauv kev siv. Kev loj hlob raws li kev txhawb nqa ntawm lub tuam txhab qhib qhov project yuav rub daim pam mus rau cov kev xav tau thiab kev daws teeb meem ntawm lub tuam txhab, ua rau muaj kev puas tsuaj rau cov kev txaus siab ntawm cov zej zog. Piv txwv li, yog tias koj txheeb xyuas qhov teeb meem uas tshwm sim los ntawm kab laum hauv lwm qhov kev pab cuam, hauv kev tswj hwm kev txhim kho nws yooj yim dua los xyuas kom meej tias Libc sib haum nrog cov kab no dua li kho cov kab laum nws tus kheej. Apple siv BSD libc diav rawg rau cov hom phiaj no, thiab Google siv cov diav rawg musl hauv Fuchsia. Qhov kev paub dhau los ntawm tus tsim tawm musl yog tias nws tau raug hu los ntawm cov kws lij choj feem ntau los piav qhia txog cov teeb meem kev tso cai, tab sis tsis tau hu xovtooj mus qhia cov ntsiab lus ua ntej ua qhov tsis muaj txiaj ntsig thiab cuam tshuam rau nws cov ceg.
  • Qhov tsis muaj monoculture hauv libc txoj kev loj hlob thiab tsom mus rau kev pom zoo-tsav cov qauv es tsis yog kev tswj hwm ib leeg, uas txhawb nqa cov neeg tsim khoom siv cov qauv es tsis yog khi rau cov kev siv tshwj xeeb. Tias yog vim li cas tus sau ntawm musl tawm tsam kev suav nrog nws lub tsev qiv ntawv hauv LLVM, nrog rau kev tawm tsam kev txhim kho libc hauv LLVM, txij li qhov no qhov kev ywj pheej ntawm libc tau ploj mus thiab qee qhov kev siv tau dhau los ua kev daws teeb meem thawj zaug rau LLVM, thiab tag nrho lwm tus tau dhau los ua kev daws teeb meem thib ob.

Tau qhov twg los: opennet.ru

Ntxiv ib saib