Devlopè nan Google sijere devlope pwòp libc yo pou LLVM

Youn nan devlopè yo soti nan Google leve soti vivan sou lis adrès LLVM sou devlopman yon bibliyotèk C estanda milti-platfòm (Libc) kòm yon pati nan pwojè LLVM. Pou plizyè rezon, Google pa satisfè ak libc aktyèl la (glibc, musl) epi konpayi an ap sou wout pou l devlope yon nouvo aplikasyon, ki pwopoze pou devlope kòm yon pati nan LLVM.

Devlopman LLVM dènyèman te itilize kòm baz pou bati zouti asanble Google yo. Lide prensipal la se ke si Google te deja kòmanse devlope libc li yo, Lè sa a, poukisa yo pa imedyatman devlope sistèm li a kòm yon pati nan LLVM, ki deja ofri pwòp bibliyotèk estanda li yo pou C++ (Libc++), men li pa gen yon bibliyotèk estanda ki sanble pou C. (libc).

Devlopman te planifye pou fèt an etap, piti piti ogmante fonctionnalités. Premye opsyon yo pwopoze yo dwe fèt kòm yon kouch ant aplikasyon an ak sistèm nan Libc, ki soti nan ki karakteristik ki poko aplike yo pral prete. Apre yo rive nan yon sèten nivo nan fonksyonalite, nouvo Libc a ka itilize kòm yon ranplasman konplè pou sistèm Libc la. Nou planifye kòmanse ak sipò pou achitekti x86-64, Linux, ak lyezon estatik (chajman dinamik, lyezon, ak achitekti adisyonèl yo pral aplike segondè).

Pwojè a toujou nan premye etap devlopman, men objektif debaz yo te deja defini:

  • Modilarite ak devlopman an akò ak filozofi a nan livrezon yon bibliyotèk granulaire olye ke yon seri monolitik;
  • Sipò pou lyezon estatik nan mòd PYE (Ègzèkutabl pozisyon-endepandan) ak san PIE. Bay CRT (C runtime) ak loader PIE pou ègzèkutabl ki lye statikman;
  • Sipò pou pi fò nan fonksyon bibliyotèk estanda C yo, ak adisyon POSIX ak kèk ekstansyon sistèm espesifik ki nesesè nan aplikasyon ki deja egziste;
  • Fè atansyon ak ekstansyon machann espesifik epi ajoute yo sèlman lè sa nesesè. Konsènan sipò pou ekstansyon twazyèm pati, li pwopoze pou itilize apwòch pwojè Clang ak libc++;
  • Sèvi ak pi bon pratik nan devlopman lè l sèvi avèk zouti LLVM, tankou itilize dezenfektan ak tès fuzz depi nan kòmansman an.

Youn nan devlopè LLVM aktif yo fè remakeLi klè ke li fè sans pou voye libc kòm yon pati nan bwat zouti LLVM, men anjeneral, lè yon bezwen sa a rive, yo itilize bibliyotèk musl la, ki byen ekri, ki sipòte divès achitekti, epi ki bay fonksyonalite ki nesesè yo, ki gen ladan sipò pou dinamik. ki lye. Li ka jistifye entegre musl nan LLVM epi devlope li kòm yon fouchèt senkronize ak pwojè prensipal la.

Opinyon ou tou eksprime Otè pwojè Musl la, ki te eseye diskite poukisa pwopozisyon Google ak enklizyon Libc nan distribisyon LLVM yo se move lide:

  • Devlope ak kenbe yon Libc ki kòrèk, konpatib ak kalite siperyè se yon travay trè difisil. Pwoblèm lan se pa nan kantite lajan an nan kòd, men nan asire konpòtman kòrèk ak difikilte nan mete ann aplikasyon interfaces, pran an kont kouch nan gwo aplikasyon ki te janm ekri nan C / C ++, osi byen ke aplikasyon nan lòt lang, exécution nan ki itilize. pa Libc. Yon apwòch tèt-sou san yo pa pran an kont nuans yo pral sèlman mennen nan lefèt ke anpil pwogram ki deja egziste pa yo pral kapab travay ak Libc, men Lè sa a, yon pwojè konsa pa pral nan enterè konsomatè yo.
  • Devlopman antrepriz ka ruine Libc, men pouse li pou itilize toupatou, sa ki lakòz bezwen an ajoute antay asire konpatibilite nan aplikasyon yo. Devlopman anba ejid yon pwojè sous louvri antrepriz pral rale kouvèti a nan direksyon pou bezwen yo ak solisyon nan konpayi an, nan detriman nan enterè yo nan kominote a. Pa egzanp, si ou idantifye yon pwoblèm ki te koze pa yon ensèk nan yon lòt pwogram, nan devlopman kontwole li pi fasil asire ke Libc konpatib ak ensèk sa a pase yo ranje ensèk la tèt li. Apple sèvi ak fouchèt libc BSD pou rezon sa yo, ak Google sèvi ak fouchèt musl nan Fuchsia. Eksperyans nan pwomotè musl la se ke li te kontakte sitou pa avoka yo klarifye pwoblèm lisans, men yo pa janm kontakte yo klarifye detay teknik anvan yo fè chanjman initil ak deranje nan branch li yo.
  • Absans yon monokilti nan devlopman libc ak yon konsantre sou estanda konsansis-kondwi olye ke kontwòl sèl, ki motive devlopè aplikasyon yo sèvi ak estanda olye ke yo dwe mare nan aplikasyon espesifik. Se poutèt sa otè musl la kont enklizyon bibliyotèk li nan LLVM, osi byen ke kont devlopman libc nan LLVM, paske nan ka sa a nati endepandan libc pèdi epi yon sèten aplikasyon vin tounen yon solisyon premye klas pou LLVM, ak tout lòt yo vin tounen yon solisyon dezyèm klas.

Sous: opennet.ru

Add nouvo kòmantè