Spoznajte novo različico Cosmopolitan 2.0, medplatformske standardne knjižnice C

Začetek nova različica projekta "Cosmopolitan 2.0", ki razvija standardno knjižnico C in univerzalni format izvedljive datoteke, ki se lahko uporablja za distribucijo programov za različne operacijske sisteme brez uporabe tolmačev in virtualnih strojev.

Posoda za ustvarjanje univerzalnih izvedljivih datotek temelji na združevanju specifičnih segmentov in glav iz različnih sistemov operacijskih sistemov v eno datoteko, ki združuje več različnih formatov, ki se uporabljajo v sistemih Unix, Windows in macOS.

Za zagotovitev tega eno samo izvršljivo datoteko delujejo na sistemih Windows in Unix, uporablja se trik za kodiranje datotek Windows PE kot lupinskega skripta, izkoriščanje dejstva, da Thompson Shell ne uporablja označevalca skripta "#!".

Za ustvarjanje programov, ki vključujejo več datotek (ki združujejo vse vire v eno datoteko), je podprto ustvarjanje izvedljive datoteke v obliki posebej izdelanega arhiva ZIP. Oris predlagane oblike (primer aplikacije hello.com):

Za dodatno prenosljivost je na voljo klic qemu-x86_64 in omogoča, da se koda, prevedena za arhitekturo x86_64, izvaja na platformah, ki niso x86, kot so plošče Raspberry Pi in naprave Apple, opremljene s procesorji ARM. Projekt je mogoče uporabiti tudi za ustvarjanje samostojnih aplikacij, ki delujejo brez operacijskega sistema (bare metal). V takšnih aplikacijah je zagonski nalagalnik priložen izvedljivi datoteki in program deluje kot zagonski operacijski sistem.

Glavne novosti Cosmopolitana 2.0

V tej novi različici je poudarjeno, da spremenjena je shema za dostop do notranjih virov dentro iz zip datoteke (pri odpiranju datotek se namesto predpone zip:.. zdaj uporabljajo običajne poti /zip/…). Podobno je za dostop do diskov v sistemu Windows mogoče uporabiti poti, kot je »/c/…« namesto »C:/…«.

Predlaga se nov nakladalnik APE (Actually Portable Executable), ki določa format univerzalnih izvršljivih datotek. Nov zagonski nalagalnik uporablja mmap za dodelitev programa pomnilniku in ne spreminja več vsebine sproti. Po potrebi lahko univerzalno izvedljivo datoteko pretvorimo v običajne izvedljive datoteke, vezane na posamezne platforme.

V sistemu Linux je mogoče uporabiti modul jedra binfmt_misc za zagon programov APE. Opozoriti je treba, da je uporaba binfmt_misc poleg tega najhitrejša metoda zagona Izvedba funkcionalnost sistemskih klicev pledge() in unveil(), ki jih je razvil projekt OpenBSD, ter zagotavlja API za uporabo podatkov o klicih v programih C, C++, Python in Redbean ter pripomoček iz promise.com za izolacijo poljubnih procesov.

Tudi to lahko najdemo za Linux je bila povečana zmogljivost klicev clock_gettime in gettimeofday do 10-krat zaradi uporabe mehanizma vDSO (Virtual Dynamic Shared Object), ki omogoča prenos upravljalnika sistemskega klica v uporabniški prostor in mimo preklopnega konteksta.

Zgradba uporablja Landlock Make, izdaja GNU Make s strožjim preverjanjem odvisnosti in uporabo sistemskega klica Landlock za izolacijo programa od preostalega sistema in izboljšanje učinkovitosti predpomnjenja. Kot možnost se ohranita zmožnost prevajalnika in običajni GNU Make.

Po drugi strani pa poudarja tudi implementirane funkcije za večnitnost: _spawn() in _join(), ki so univerzalne vezave prek specifičnih API-jev za različne operacijske sisteme. Prav tako poteka delo za implementacijo podpore za niti POSIX.

Od ostalih sprememb, ki izstopajo:

  • Dodana podpora za možnosti »–ftrace« in »–strace« za izvedljive datoteke za pošiljanje informacij o vseh klicih funkcij in sistemskih klicih v stderr.
  • Dodana podpora za sistemski klic closefrom(), združljiv z Linuxom 5.9+, FreeBSD 8+ in OpenBSD.
  • Matematične funkcije za delo s kompleksnimi števili so bile premaknjene iz knjižnice Musl.
  • Številne matematične funkcije so bile pospešene.
  • Predlagana je funkcija nointernet(), ki onemogoči omrežne zmogljivosti.
  • Dodane nove funkcije za učinkovito dodajanje nizov: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf in vappendf.
  • Dodana je bila zaščitena različica družine funkcij kprintf(), zasnovana za delo s povišanimi privilegiji.
  • Bistveno izboljšana zmogljivost implementacij SSL, SHA, curve25519 in RSA.

Nazadnje, če vas zanima več o tem, morate vedeti, da koda projektaali se distribuira pod licenco ISC (poenostavljena različica MIT/BSD).


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.