Awọn olupilẹṣẹ lati Google daba idagbasoke libc tiwọn fun LLVM

Ọkan ninu awọn olupilẹṣẹ lati Google dide lori atokọ ifiweranṣẹ LLVM nipa idagbasoke ti ile-ikawe C boṣewa ọpọlọpọ-Syeed (Libc) gẹgẹbi apakan ti iṣẹ akanṣe LLVM. Fun awọn idi pupọ, Google ko ni itẹlọrun pẹlu libc lọwọlọwọ (glibc, musl) ati pe ile-iṣẹ wa ni ọna lati ṣe agbekalẹ imuse tuntun kan, eyiti o daba lati ni idagbasoke gẹgẹ bi apakan ti LLVM.

Awọn idagbasoke LLVM laipẹ ti jẹ lilo bi ipilẹ fun kikọ awọn irinṣẹ apejọ Google. Ero akọkọ ni pe ti Google ba ti bẹrẹ lati dagbasoke libc rẹ, lẹhinna kilode ti o ko ṣe idagbasoke eto rẹ lẹsẹkẹsẹ gẹgẹbi apakan ti LLVM, eyiti o ti funni tẹlẹ ile-ikawe boṣewa tirẹ fun C ++ (Libc++), ṣugbọn ko ni iru ile-ikawe boṣewa ti o jọra fun C. (libc).

Idagbasoke ti wa ni igbero lati ṣee ṣe ni awọn ipele, ni ilọsiwaju iṣẹ ṣiṣe. Awọn aṣayan akọkọ ni a dabaa lati ṣe apẹrẹ bi Layer laarin ohun elo ati eto Libc, lati eyiti awọn ẹya ti ko tii ṣe imuse ni yoo yawo. Lẹhin ti o de ipele iṣẹ ṣiṣe kan, Libc tuntun le ṣee lo bi rirọpo pipe fun eto Libc. A gbero lati bẹrẹ pẹlu atilẹyin fun faaji x86-64, Lainos ati sisopọ aimi (ikojọpọ agbara, sisopọ ati awọn ile ayaworan afikun yoo ṣe imuse ni keji).

Ise agbese na tun wa ni ipele ibẹrẹ ti idagbasoke, ṣugbọn awọn ibi-afẹde ipilẹ ti ti ṣalaye tẹlẹ:

  • Modularity ati idagbasoke ni ibamu pẹlu imoye ti jiṣẹ ile-ikawe granular kan ju ṣeto monolithic kan;
  • Atilẹyin fun sisopọ aimi ni awọn ipo pẹlu paii (Awọn ipaniyan olominira ipo) ati laisi PIE. Pese CRT (akoko asiko C) ati agberu PIE fun awọn iṣẹ ṣiṣe ti o sopọ mọ ni iṣiro;
  • Atilẹyin fun pupọ julọ awọn iṣẹ ikawe C boṣewa, pẹlu awọn afikun POSIX ati diẹ ninu awọn amugbooro eto-pato ti o nilo nipasẹ awọn ohun elo to wa;
  • Ṣọra pẹlu awọn amugbooro ataja-pato ati ṣafikun wọn nikan nigbati o jẹ dandan. Nipa atilẹyin fun awọn amugbooro ẹni-kẹta, o ni imọran lati lo ọna ti awọn iṣẹ Clang ati libc ++;
  • Lilo awọn iṣe ti o dara julọ ni idagbasoke ni lilo ohun elo irinṣẹ LLVM, gẹgẹbi lilo imototo ati idanwo fuzz lati ibẹrẹ.

Ọkan ninu awọn olupilẹṣẹ LLVM ti nṣiṣe lọwọ tọka siO han gbangba pe o jẹ oye lati gbe libc gẹgẹ bi apakan ti ohun elo LLVM, ṣugbọn nigbagbogbo, nigbati iru iwulo ba waye, wọn lo ile-ikawe musl, eyiti o kọ daradara, ṣe atilẹyin ọpọlọpọ awọn faaji, ati pese iṣẹ ṣiṣe pataki, pẹlu atilẹyin fun agbara. sisopo. O le jẹ idalare lati fi musl sinu LLVM ki o ṣe idagbasoke rẹ bi orita mimuuṣiṣẹpọ pẹlu iṣẹ akanṣe akọkọ.

Rẹ ero tun kosile Onkọwe ti iṣẹ akanṣe Musl, ti o gbiyanju lati jiyan idi ti imọran Google ati ifisi ti Libc ni pinpin LLVM jẹ awọn imọran buburu pupọ:

  • Dagbasoke ati mimu Libc ti o tọ, ibaramu ati didara ga jẹ iṣẹ ṣiṣe ti o nira pupọ. Iṣoro naa kii ṣe ni iye koodu, ṣugbọn ni idaniloju ihuwasi ti o pe ati awọn iṣoro ni imuse awọn atọkun, ni akiyesi iwọn nla ti awọn ohun elo ti a kọ tẹlẹ ni C/C ++, ati awọn ohun elo ni awọn ede miiran, akoko asiko ti eyiti o lo. nipasẹ Libc. Ọna-ori lai ṣe akiyesi awọn nuances yoo yorisi otitọ pe ọpọlọpọ awọn eto ti o wa tẹlẹ kii yoo ni anfani lati ṣiṣẹ pẹlu Libc, ṣugbọn lẹhinna iru iṣẹ akanṣe kii yoo ni anfani si awọn onibara.
  • Idagbasoke ile-iṣẹ le ba Libc jẹ, ṣugbọn Titari fun lilo ni ibigbogbo, ti o fa iwulo lati ṣafikun awọn hakii lati rii daju ibamu ni awọn ohun elo. Idagbasoke labẹ awọn iṣeduro ti iṣẹ-ṣiṣe orisun-ìmọ ti ile-iṣẹ yoo fa ibora si awọn aini ati awọn ojutu ti ile-iṣẹ naa, si ipalara ti awọn anfani ti agbegbe. Fun apẹẹrẹ, ti o ba ṣe idanimọ iṣoro kan ti o fa nipasẹ kokoro kan ninu eto miiran, ni idagbasoke iṣakoso o rọrun lati rii daju pe Libc ni ibamu pẹlu kokoro yii ju lati ṣatunṣe kokoro naa funrararẹ. Apple nlo orita libc BSD fun awọn idi wọnyi, Google si lo orita musl ni Fuchsia. Iriri ti olupilẹṣẹ musl ni pe o kan si ni pataki nipasẹ awọn agbẹjọro lati ṣalaye awọn ọran iwe-aṣẹ, ṣugbọn ko kan si rara lati ṣalaye awọn alaye imọ-ẹrọ ṣaaju ṣiṣe awọn ayipada asan ati idalọwọduro si awọn ẹka rẹ.
  • Awọn isansa ti monoculture kan ni idagbasoke libc ati idojukọ lori awọn iṣedede-ipinnu-ipinnu kuku ju iṣakoso ẹyọkan lọ, eyiti o ru awọn olupilẹṣẹ ohun elo lati lo awọn iṣedede dipo ki a so mọ awọn imuṣẹ kan pato. Ti o ni idi ti onkọwe musl lodi si ifisi ti ile-ikawe rẹ ni LLVM, bakannaa lodi si idagbasoke ti libc laarin LLVM, nitori ninu ọran yii ẹda ominira ti libc ti sọnu ati imuse kan di ojutu kilasi akọkọ fun LLVM, ati gbogbo awọn miiran di ojutu kilasi keji.

orisun: opennet.ru

Fi ọrọìwòye kun