Vývojári spoločnosti Google chcú vyvinúť svoje vlastné libc pre LLVM

LLVM_Logo

Jeden z vývojárov spoločnosti Google predstavil na konferencii LLVM tému vývoja medziplatformová štandardná knižnica C. (Libc) v rámci projektu LLVM.

Z niekoľkých dôvodov Google nie je spokojný so súčasným libc (glibc, musl) a spoločnosť je na dobrej ceste k vývoju novej implementácie, ktorý mieni rozvíjať ako súčasť LLVM. Vývoj LLVM sa nedávno použil ako základ pre vytváranie nástrojov Google.

Vývoj je plánovaný postupne, postupne sa bude zvyšovať jeho funkčnosť. Navrhuje sa, aby prvé možnosti mali formu medzivrstvy medzi aplikáciou a systémom libc, z ktorej si budú vypožičané nerealizované funkcie.

Po dosiahnutí určitej úrovne funkčnosti je možné nový Libc použiť ako úplnú náhradu za systém Libc.

Plánuje sa začať s podporou architektúry x86-64, Linuxu a statického viazania (dynamické načítanie, balenie a ďalšie architektúry budú implementované ako druhé).

Projekt je stále v počiatočnej fáze vývoja, ale základné ciele už boli definované:

  • Modularita a vývoj v súlade s filozofiou poskytovania granulárnej knižnice, skôr ako monolitický súbor.
  • Podpora statického odkazu v režimoch PIE (pozičné nezávislé spustiteľné súbory) a bez PIE. Poskytnite CRT (C runtime) a PIE loader pre staticky spojené spustiteľné súbory.
  • Podporuje väčšinu funkcií knižnice C. štandardne s doplnkami POSIX a niektorými systémovo špecifickými rozšíreniami, ktoré sa požadujú v existujúcich aplikáciách.
  • Opatrný prístup k konkrétnym rozšíreniam od poskytovateľa a iba v prípade potreby ich pridať. Na podporu rozšírenia tretích strán sa navrhuje použiť projektový prístup Clang a libc ++.
  • Využívanie osvedčených postupov pri vývoji pomocou nástrojov LLVM, ako je napríklad aplikácia dezinfekčných prostriedkov a vylúčenie testov od začiatku.

Jeden z aktívnych vývojárov LLVM to naznačil dodávka libc ako súčasť balíka nástrojov LLVM nie je to bezvýznamné, ale spravidla s takou potrebou používajú musl knižnicu, Je dobre napísaný, podporuje rôzne architektúry a poskytuje potrebné funkcie vrátane dynamického prepojenia.

Začlenenie Muslu do LLVM a jeho vývoj ako synchronizovanej vidlice s hlavným projektom je opodstatnený.

Jeho názor vyjadril aj autor projektu Musl, ktorý sa snažil argumentovať, prečo sú návrh spoločnosti Google a zahrnutie Libc do dodávky LLVM veľmi zlé nápady:

Vývoj a údržba správneho, kompatibilného a vysoko kvalitného libc je veľmi ťažká úloha. Problém nie je v množstve kódu, ale v zabezpečení správneho správania.

A ťažkosti s implementáciou rozhrania, berúc do úvahy obrovské úložisko aplikácií napísaných v C / C ++, ako aj aplikácií v iných jazykoch, ktorých runtime používa Libc.

Prístup na čelo bez zohľadnenia nuancií povedie iba k tomu, že mnoho existujúcich programov nebude schopných spolupracovať s Libcom, ale takýto projekt nebude pre spotrebiteľov zaujímavý.

Rozvoj firmy môže zničiť Libc, ale vedú k rozšírenému používaniu, čo bude mať za následok potrebu pridávať hacky, aby sa zabezpečila kompatibilita aplikácií.

Rozvoj pod záštitou korporátneho otvoreného projektu povedie k pokrytiu potrieb a rozhodnutí spoločnosti na úkor záujmov komunity.

Napríklad v prípade identifikácie problému spôsobeného chybou v inom vašom vlastnom programe, pri vývoji pod kontrolou, je jednoduchšie zaručiť kompatibilitu Libc s touto chybou ako opraviť samotnú chybu.

Apple na tieto účely používa vidlicu BSD libc a Google vidlicu Fuchsia. Muslove skúsenosti s vývojármi naznačujú, že právnici ho kontaktovali predovšetkým kvôli objasneniu problémov s licenciami.

Fuente: http://lists.llvm.org


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.