Zoznámte sa s novou verziou Cosmopolitan 2.0, multiplatformovej štandardnej knižnice C

Spustenie nová verzia projektu "Cosmopolitan 2.0", ktorá vyvíja štandardnú knižnicu C a univerzálny formát spustiteľných súborov, ktorý možno použiť na distribúciu programov pre rôzne operačné systémy bez použitia tlmočníkov a virtuálnych strojov.

Kontajner na generovanie univerzálnych spustiteľných súborov sa spolieha na kombináciu špecifických segmentov a hlavičiek z rôznych systémov operačných systémov do jedného súboru, ktorý kombinuje niekoľko rôznych formátov používaných v systémoch Unix, Windows a macOS.

Aby ste to zabezpečili jeden spustiteľný súbor bežať na systémoch Windows a Unix, trik sa používa na kódovanie súborov Windows PE ako skriptu shell, využívajúc skutočnosť, že Thompson Shell nepoužíva značku skriptu „#!“.

Na vytváranie programov, ktoré obsahujú viacero súborov (spájajúcich všetky zdroje do jedného súboru), je podporované vygenerovanie spustiteľného súboru vo forme špeciálne vytvoreného archívu ZIP. Náčrt navrhovaného formátu (príklad aplikácie hello.com):

Volanie qemu-x86_64 poskytuje dodatočnú prenosnosť a umožňuje, aby kód zostavený pre architektúru x86_64 bežal na platformách iných ako x86, ako sú dosky Raspberry Pi a zariadenia Apple vybavené procesormi ARM. Projekt je možné použiť aj na vytváranie samostatných aplikácií, ktoré fungujú bez operačného systému (holého kovu). V takýchto aplikáciách je bootloader pripojený k spustiteľnému súboru a program funguje ako zavádzací operačný systém.

Hlavné novinky Cosmopolitanu 2.0

V tejto novej verzii je zdôraznené, že schéma prístupu k interným zdrojom bola zmenená dentro zo súboru zip (pri otváraní súborov sa teraz namiesto použitia predpony zip:.. používajú obvyklé cesty /zip/…). Podobne na prístup k diskom v systéme Windows je možné použiť cesty ako „/c/…“ namiesto „C:/…“.

Navrhuje sa nový nakladač APE (Actually Portable Executable), ktorý definuje formát univerzálnych spustiteľných súborov. Nový bootloader používa mmap na pridelenie programu do pamäte a už nemení obsah za chodu. V prípade potreby je možné univerzálny spustiteľný súbor previesť na bežné spustiteľné súbory viazané na jednotlivé platformy.

V systéme Linux je možné použiť modul jadra binfmt_misc na spustenie programov APE. Je potrebné poznamenať, že použitie binfmt_misc je okrem toho najrýchlejšia metóda spustenia Implementácia funkčnosť systémových volaní pledge() a unveil() vyvinutých projektom OpenBSD, ako aj poskytovanie rozhrania API na používanie údajov o volaniach v programoch C, C++, Python a Redbean, ako aj pomocný program zo stránky sľub.com izolovať svojvoľné procesy.

Aj to môžeme nájsť pre Linux bol zvýšený výkon volaní clock_gettime a gettimeofday až 10-krát vďaka použitiu mechanizmu vDSO (Virtual Dynamic Shared Object), ktorý umožňuje preniesť obsluhu systémového volania do užívateľského priestoru a obísť kontext prepínača.

Stavba využíva Landlock Make, vydanie GNU Make s prísnejšou kontrolou závislostí a použitím systémového volania Landlock na izoláciu programu od zvyšku systému a zlepšenie efektivity ukladania do vyrovnávacej pamäte. Voliteľne sú zachované možnosti kompilátora a obvyklé GNU Make.

Na druhej strane to tiež zvýrazňuje implementované funkcie pre multithreading: _spawn() a _join(), čo sú univerzálne väzby na špecifické API pre rôzne operačné systémy. Pracuje sa aj na implementácii podpory pre vlákna POSIX.

Z ďalších zmien, ktoré vynikajú:

  • Pridaná podpora pre voľby „–ftrace“ a „–strace“ do spustiteľných súborov na odosielanie informácií o všetkých volaniach funkcií a systémových volaniach do stderr.
  • Pridaná podpora pre systémové volanie closefrom() kompatibilné s Linuxom 5.9+, FreeBSD 8+ a OpenBSD.
  • Z knižnice Musl boli presunuté matematické funkcie pre prácu s komplexnými číslami.
  • Mnohé matematické funkcie sa zrýchlili.
  • Navrhuje sa funkcia nointernet(), ktorá deaktivuje možnosti siete.
  • Pridané nové funkcie na efektívne pridávanie reťazcov: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf a vappendf.
  • Bola pridaná chránená verzia rodiny funkcií kprintf() navrhnutá na prácu so zvýšenými privilégiami.
  • Výrazne zlepšený výkon implementácií SSL, SHA, curve25519 a RSA.

Nakoniec, ak máte záujem dozvedieť sa o ňom viac, mali by ste vedieť, že kód projektualebo je distribuovaný pod licenciou ISC (zjednodušená verzia MIT/BSD).


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ť.