Susipažinkite su nauja Cosmopolitan 2.0 versija, kelių platformų standartine C biblioteka

Paleidimas naują projekto versiją „Cosmopolitan 2.0“, kuri kuria standartinę C biblioteką ir universalų vykdomojo failo formatą, kuris gali būti naudojamas platinti programas skirtingoms operacinėms sistemoms nenaudojant vertėjų ir virtualių mašinų.

Konteineris generuoti universalius vykdomuosius failus remiasi tam tikrų segmentų ir antraštių iš skirtingų sistemų deriniu operacines sistemas į vieną failą, sujungiant kelis skirtingus formatus, naudojamus Unix, Windows ir MacOS.

Norėdami tai užtikrinti vienas vykdomasis failas paleisti sistemose Windows ir Unix, gudrybė naudojama „Windows PE“ failams koduoti kaip apvalkalo scenarijų, pasinaudojant tuo, kad Thompson Shell nenaudoja „#!“ scenarijaus žymeklio.

Norint sukurti programas, kuriose yra keli failai (sujungiant visus išteklius į vieną failą), palaikomas vykdomojo failo generavimas specialiai sukurto ZIP archyvo pavidalu. Siūlomo formato metmenys (pavyzdys hello.com programa):

Skambutis qemu-x86_64 suteikiamas papildomam perkeliamumui ir leidžia kodui, sudarytam x86_64 architektūrai, veikti ne x86 platformose, pvz., Raspberry Pi plokštėse ir Apple įrenginiuose su ARM procesoriais. Projektas taip pat gali būti naudojamas kuriant atskiras programas, veikiančias be operacinės sistemos (pliko metalo). Tokiose programose prie vykdomojo failo pridedamas įkrovos įkroviklis, o programa veikia kaip paleidžiama operacinė sistema.

Pagrindinės Cosmopolitan 2.0 naujovės

Šioje naujoje versijoje tai pabrėžiama pakeista vidinių išteklių prieigos schema per iš zip failo (atidarant failus dabar naudojami įprasti /zip/… keliai, o ne zip:.. priešdėlis). Panašiai, norint pasiekti diskus sistemoje „Windows“, galima naudoti tokius kelius kaip „/c/…“, o ne „C:/…“.

Siūlomas naujas APE krautuvas (Factually Portable Executable), kuris apibrėžia universalių vykdomųjų failų formatą. Nauja įkrovos programa naudoja mmap programai priskirti atmintyje ir nebekeičia turinio skrydžio metu. Jei reikia, universalų vykdomąjį failą galima konvertuoti į įprastus vykdomuosius failus, susietus su atskiromis platformomis.

Linux sistemoje galima naudoti branduolio modulį binfmt_misc paleisti APE programas. Pažymima, kad binfmt_misc naudojimas yra greičiausias paleidimo būdas, be to Įgyvendinimas pledge() ir unveil() sistemos iškvietimų, sukurtų OpenBSD projekto, funkcionalumas, taip pat API suteikimas skambučių duomenims naudoti C, C++, Python ir Redbean programose, o taip pat programėlė iš pažadų.com išskirti savavališkus procesus.

Mes taip pat galime rasti Linux sistemoje clock_gettime ir gettimeofday skambučių našumas buvo padidintas iki 10 kartų dėl vDSO (Virtual Dynamic Shared Object) mechanizmo panaudojimo, leidžiančio perkelti sistemos skambučių tvarkyklę į vartotojo erdvę ir apeiti komutatoriaus kontekstą.

Statant naudojamas Landlock Make, GNU Make leidimas su griežtesniu priklausomybės tikrinimu ir „Landlock“ sistemos iškvietimu, siekiant atskirti programą nuo likusios sistemos ir pagerinti talpyklos efektyvumą. Kaip pasirinktis, išsaugomos kompiliatoriaus galimybės ir įprastas GNU Make.

Kita vertus, tai taip pat pabrėžia įdiegtos kelių gijų funkcijos: _spawn() ir _join(), kurie yra universalūs susiejimas su konkrečiomis API skirtingoms operacinėms sistemoms. Taip pat vyksta POSIX gijų palaikymo diegimas.

Iš kitų išsiskiriančių pakeitimų:

  • Pridėtas vykdomųjų failų parinkčių „–ftrace“ ir „–strace“ palaikymas, siekiant siųsti informaciją apie visus funkcijų iškvietimus ir sistemos iškvietimus į stderr.
  • Pridėtas closefrom() sistemos skambučio palaikymas, suderinamas su Linux 5.9+, FreeBSD 8+ ir OpenBSD.
  • Matematinės funkcijos, skirtos darbui su kompleksiniais skaičiais, buvo perkeltos iš Musl bibliotekos.
  • Daugelis matematikos funkcijų buvo paspartintos.
  • Siūloma funkcija nointernet(), kuri išjungia tinklo galimybes.
  • Pridėtos naujos funkcijos, leidžiančios efektyviai pridėti eilutes: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf ir vappendf.
  • Pridėta apsaugota funkcijų šeimos kprintf() versija, skirta dirbti su padidintomis privilegijomis.
  • Žymiai patobulintas SSL, SHA, curve25519 ir RSA diegimų našumas.

Galiausiai, jei norite sužinoti daugiau apie tai, turėtumėte žinoti, kad projekto kodasarba platinamas pagal ISC licenciją (supaprastinta MIT/BSD versija).


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.