Tutvuge platvormideülese standardse C-teegi Cosmopolitan 2.0 uue versiooniga

Programmi käivitamine projekti uus versioon "Cosmopolitan 2.0", mis arendab standardset C-teeki ja universaalset käivitatavat failivormingut, mida saab kasutada erinevate operatsioonisüsteemide jaoks mõeldud programmide levitamiseks ilma tõlkeid ja virtuaalmasinaid kasutamata.

Konteiner universaalsete täitmisfailide genereerimiseks tugineb eri süsteemide konkreetsete segmentide ja päiste kombineerimisele operatsioonisüsteemid üheks failiks, ühendades mitu erinevat Unixis, Windowsis ja macOS-is kasutatavat vormingut.

Selle tagamiseks üks käivitatav fail töötab süsteemides Windows ja Unix, nippi kasutatakse Windows PE-failide kodeerimiseks shelliskriptina, kasutades ära asjaolu, et Thompson Shell ei kasuta skriptimarkerit "#!".

Mitut faili sisaldavate programmide loomiseks (ühendades kõik ressursid üheks failiks) toetatakse käivitatava faili genereerimist spetsiaalselt koostatud ZIP-arhiivi kujul. Pakutud vormingu ülevaade (rakenduse hello.com näide):

Täiendavaks teisaldatavuseks on kõne qemu-x86_64 ja võimaldab x86_64 arhitektuuri jaoks kompileeritud koodil töötada mitte-x86 platvormidel, nagu Raspberry Pi plaadid ja ARM-protsessoritega varustatud Apple'i seadmed. Projekti saab kasutada ka iseseisvate rakenduste loomiseks, mis töötavad ilma operatsioonisüsteemita (paljas metall). Sellistes rakendustes on käivitatavale failile lisatud alglaadur ja programm toimib käivitatava operatsioonisüsteemina.

Cosmopolitan 2.0 peamised uuendused

Selles uues versioonis on see esile tõstetud siseressurssidele juurdepääsu skeemi on muudetud jooksul ZIP-failist (failide avamisel kasutatakse nüüd tavalisi /zip/… teid, mitte zip:.. eesliidet). Samamoodi on Windowsis ketastele juurdepääsuks võimalik kasutada "C:/…" asemel selliseid teid nagu "/c/…".

Pakutakse välja uus APE laadur (Tegelikult Portable Executable), mis määrab universaalsete täitmisfailide vormingu. Uus alglaadur kasutab programmi mällu eraldamiseks mmap-i ega muuda enam sisu käigu pealt. Vajadusel saab universaalse käivitatava faili teisendada tavalisteks täitmisfailideks, mis on seotud üksikute platvormidega.

Linuxis on võimalik kasutada kerneli moodulit binfmt_misc APE programmide käitamiseks. Tuleb märkida, et binfmt_misc kasutamine on lisaks sellele ka kiireim käivitusmeetod Rakendus süsteemikõnede pledge() ja unveil() funktsioonid, mis on välja töötatud OpenBSD projektis, samuti API pakkumine kõneandmete kasutamiseks C, C++, Pythoni ja Redbeani programmides, samuti utiliit saidilt permit.com suvaliste protsesside eraldamiseks.

Seda võime ka leida Linuxi puhul on clock_gettime ja gettimeofday kõnede jõudlust suurendatud kuni 10 korda tänu vDSO (Virtual Dynamic Shared Object) mehhanismi kasutamisele, mis võimaldab süsteemikõnede töötleja kasutajaruumi üle kanda ja kommutaatori kontekstist mööda minna.

Ehitus kasutab Landlock Make'i, GNU Make'i väljaanne, mis sisaldab rangemat sõltuvuskontrolli ja Landlocki süsteemikutset, et eraldada programm ülejäänud süsteemist ja parandada vahemällu salvestamise tõhusust. Võimalusena säilib kompilaatori võimalus ja tavaline GNU Make.

Teisest küljest tõstab see esile ka rakendatud funktsioonid mitme lõime jaoks: _spawn() ja _join(), mis on universaalsed sidemed erinevate operatsioonisüsteemide spetsiifiliste API-de üle. Samuti on käimas töö POSIX-i lõimede toe juurutamiseks.

Muudest silmapaistvatest muudatustest:

  • Lisatud täitmisfailidele suvandite „–ftrace” ja „–strace” tugi, et saata teavet kõigi funktsioonikutsete ja süsteemikutsete kohta stderrile.
  • Lisatud on closefrom() süsteemikõne tugi, mis ühildub operatsioonisüsteemidega Linux 5.9+, FreeBSD 8+ ja OpenBSD.
  • Matemaatilised funktsioonid kompleksarvudega töötamiseks on teisaldatud Musli raamatukogust.
  • Paljud matemaatikafunktsioonid on kiirendatud.
  • Pakutakse funktsiooni nointernet(), mis keelab võrguvõimalused.
  • Stringide tõhusaks lisamiseks on lisatud uusi funktsioone: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf ja vappendf.
  • Lisatud on funktsioonide perekonna kprintf() kaitstud versioon, mis on loodud töötama kõrgendatud õigustega.
  • Oluliselt paranenud SSL-i, SHA-, curve25519- ja RSA-rakenduste jõudlus.

Lõpuks, kui olete huvitatud selle kohta rohkem teada saada, peaksite teadma, et projekti koodvõi levitatakse ISC litsentsi alusel (MIT/BSD lihtsustatud versioon).


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.