Njihuni me versionin e ri të Cosmopolitan 2.0, bibliotekën standarde C ndër-platformë

Nisja e versioni i ri i projektit "Cosmopolitan 2.0", i cili zhvillon një bibliotekë standarde C dhe një format skedari të ekzekutueshëm universal që mund të përdoret për të shpërndarë programe për sisteme të ndryshme operative pa përdorimin e interpretuesve dhe makinave virtuale.

Enë për të gjeneruar skedarë të ekzekutueshëm universal mbështetet në kombinimin e segmenteve dhe titujve të veçantë nga sisteme të ndryshme sistemet operative në një skedar, duke kombinuar disa formate të ndryshme të përdorura në Unix, Windows dhe macOS.

Për të siguruar atë një ekzekutues i vetëm ekzekutohet në sisteme Windows dhe Unix, një truk përdoret për të koduar skedarët e Windows PE si një skript shell, duke përfituar nga fakti se Thompson Shell nuk përdor shënuesin e skriptit "#!".

Për të krijuar programe që përfshijnë skedarë të shumtë (duke kombinuar të gjitha burimet në një skedar të vetëm), ai mbështetet për të gjeneruar një skedar të ekzekutueshëm në formën e një arkivi ZIP të krijuar posaçërisht. Skica e formatit të propozuar (shembull aplikimi hello.com):

Thirrja qemu-x86_64 ofrohet për transportueshmëri shtesë dhe lejon që kodi i përpiluar për arkitekturën x86_64 të funksionojë në platforma jo-x86, të tilla si bordet Raspberry Pi dhe pajisjet Apple të pajisura me procesorë ARM. Projekti mund të përdoret gjithashtu për të krijuar aplikacione të pavarura që funksionojnë pa një sistem operativ (metal i zhveshur). Në aplikacione të tilla, një bootloader është bashkangjitur në skedarin e ekzekutueshëm dhe programi vepron si një sistem operativ bootable.

Risitë kryesore të Cosmopolitan 2.0

Në këtë version të ri theksohet se skema e aksesit në burimet e brendshme është ndryshuar Dentro nga një skedar zip (kur hapen skedarët, shtigjet e zakonshme /zip/… përdoren tani në vend të përdorimit të prefiksit zip:..). Në mënyrë të ngjashme, për të hyrë në disqe në Windows, është e mundur të përdoren shtigje si "/c/…" në vend të "C:/…".

Propozohet një ngarkues i ri APE (Aktualisht Portable Executable), i cili përcakton formatin e skedarëve të ekzekutueshëm universal. Bootloader i ri përdor mmap për të ndarë programin në memorie dhe nuk e ndryshon më përmbajtjen në fluturim. Nëse është e nevojshme, ekzekutuesi universal mund të konvertohet në ekzekutues të rregullt të lidhur me platforma individuale.

Në Linux, është e mundur të përdoret moduli i kernelit binfmt_misc për të ekzekutuar programet APE. Vihet re se përdorimi i binfmt_misc është metoda më e shpejtë e nisjes, përveç Një zbatim i funksionalitetin e thirrjeve të sistemit pledge() dhe unveil(), të zhvilluara nga projekti OpenBSD, si dhe ofrimin e një API për përdorimin e të dhënave të thirrjeve në programet C, C++, Python dhe Redbean, si dhe një mjet nga premtimi.com për të izoluar proceset arbitrare.

Ne gjithashtu mund ta gjejmë atë për Linux, performanca e thirrjeve clock_gettime dhe gettimeofday është rritur deri në 10 herë për shkak të përdorimit të mekanizmit vDSO (Virtual Dynamic Shared Object), i cili lejon transferimin e mbajtësit të thirrjeve të sistemit në hapësirën e përdoruesit dhe anashkalimin e kontekstit të kalimit.

Ndërtimi përdor Landlock Make, një botim i GNU Make me kontroll më të rreptë të varësisë dhe përdorimin e thirrjes së sistemit Landlock për të izoluar programin nga pjesa tjetër e sistemit dhe për të përmirësuar efikasitetin e memorizimit. Si opsion, aftësia e përpiluesit dhe GNU Make e zakonshme ruhen.

Nga ana tjetër, ai gjithashtu thekson funksionet e implementuara për multithreading: _spawn() dhe _join(), të cilat janë lidhje universale mbi API-të specifike për sisteme të ndryshme operative. Po punohet gjithashtu për zbatimin e mbështetjes për temat POSIX.

Nga ndryshimet e tjera që bien në sy:

  • Mbështetje e shtuar për opsionet “–ftrace” dhe “–strace” për skedarët e ekzekutueshëm për të dërguar informacione për të gjitha thirrjet e funksioneve dhe thirrjet e sistemit te stderr.
  • Mbështetje e shtuar për thirrjen e sistemit closefrom() të pajtueshme me Linux 5.9+, FreeBSD 8+ dhe OpenBSD.
  • Funksionet matematikore për punën me numrat kompleks janë zhvendosur nga biblioteka e Musl.
  • Shumë funksione matematikore janë përshpejtuar.
  • Propozohet funksioni nointernet(), i cili çaktivizon aftësitë e rrjetit.
  • U shtuan funksione të reja për të bashkuar me efikasitet vargjet: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf dhe vappendf.
  • Është shtuar një version i mbrojtur i familjes së funksioneve kprintf(), i krijuar për të punuar me privilegje të ngritura.
  • Performanca e përmirësuar ndjeshëm e implementimeve SSL, SHA, curve25519 dhe RSA.

Së fundi, nëse jeni të interesuar të mësoni më shumë rreth tij, duhet të dini se kodi i projektitose shpërndahet sipas licencës ISC (versioni i thjeshtuar i MIT/BSD).


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.