Möt den nya versionen av Cosmopolitan 2.0, det plattformsoberoende standard C-biblioteket

Lanseringen av den nya versionen av projektet "Cosmopolitan 2.0", som utvecklar ett standard C-bibliotek och ett universellt körbart filformat som kan användas för att distribuera program för olika operativsystem utan användning av tolkar och virtuella maskiner.

Behållaren för att generera universella körbara filer bygger på att kombinera specifika segment och rubriker från olika system operativsystem till en fil, som kombinerar flera olika format som används i Unix, Windows och macOS.

För att säkerställa det en enda körbar fil köra på system Windows och Unix, ett trick används för att koda Windows PE-filer som ett skalskript, dra fördel av det faktum att Thompson Shell inte använder "#!"-skriptmarkören.

För att skapa program som innehåller flera filer (som kombinerar alla resurser till en enda fil), stöds det att generera en körbar fil i form av ett speciellt skapat ZIP-arkiv. Översikt över det föreslagna formatet (exempel hello.com-applikation):

Anropet qemu-x86_64 tillhandahålls för ytterligare portabilitet och tillåter kod kompilerad för x86_64-arkitekturen att köras på icke-x86-plattformar, såsom Raspberry Pi-kort och Apple-enheter utrustade med ARM-processorer. Projektet kan också användas för att skapa fristående applikationer som fungerar utan operativsystem (bar metal). I sådana applikationer är en starthanterare kopplad till den körbara filen, och programmet fungerar som ett startbart operativsystem.

De viktigaste nyheterna i Cosmopolitan 2.0

I den här nya versionen markeras det schemat för åtkomst till interna resurser har ändrats dentro från en zip-fil (när du öppnar filer, används nu de vanliga /zip/…-sökvägarna istället för att använda prefixet zip:..). På liknande sätt, för att komma åt diskar i Windows, är det möjligt att använda sökvägar som "/c/..." istället för "C:/...".

En ny APE-lastare föreslås (Faktiskt Portable Executable), som definierar formatet för universella körbara filer. Den nya starthanteraren använder mmap för att allokera programmet till minnet och ändrar inte längre innehållet i farten. Vid behov kan den universella körbara filen konverteras till vanliga körbara filer kopplade till enskilda plattformar.

På Linux är det möjligt att använda kärnmodulen binfmt_misc att köra APE-program. Det noteras att användningen av binfmt_misc är den snabbaste startmetoden, förutom En implementering av funktionaliteten hos systemanropen pledge() och unveil(), utvecklade av OpenBSD-projektet, samt tillhandahåller ett API för att använda anropsdata i C-, C++-, Python- och Redbean-program, samt ett verktyg från belofte.com att isolera godtyckliga processer.

Vi kan också hitta det för Linux har prestandan för samtalen clock_gettime och gettimeofday ökat upp till 10 gånger på grund av användningen av vDSO-mekanismen (Virtual Dynamic Shared Object), som gör det möjligt att överföra systemanropshanteraren till användarutrymmet och kringgå switchkontexten.

Bygget använder Landlock Make, en utgåva av GNU Make med strängare beroendekontroll och användning av Landlock-systemanropet för att isolera programmet från resten av systemet och förbättra cachningseffektiviteten. Som ett alternativ bevaras kompilatorförmågan och det vanliga GNU-märket.

Å andra sidan belyser det också implementerade funktioner för multithreading: _spawn() och _join(), som är universella bindningar över specifika API:er för olika operativsystem. Arbete pågår även med att implementera stöd för POSIX-trådar.

Av de andra förändringarna som sticker ut:

  • Lade till stöd för alternativen "–ftrace" och "–strace" till körbara filer för att skicka information om alla funktions- och systemanrop till stderr.
  • Lade till stöd för systemanropet closefrom() som är kompatibelt med Linux 5.9+, FreeBSD 8+ och OpenBSD.
  • Matematiska funktioner för att arbeta med komplexa tal har flyttats från Musl-biblioteket.
  • Många matematiska funktioner har snabbats upp.
  • Funktionen nointernet() föreslås, som inaktiverar nätverkskapacitet.
  • Lade till nya funktioner för att effektivt lägga till strängar: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf och vappendf.
  • En skyddad version av kprintf()-familjen av funktioner, designad för att fungera med förhöjda privilegier, har lagts till.
  • Avsevärt förbättrad prestanda för SSL-, SHA-, curve25519- och RSA-implementeringar.

Slutligen, om du är intresserad av att lära dig mer om det, bör du veta att projektkodeneller distribueras under ISC-licensen (förenklad version av MIT/BSD).


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.