Cosmopolitan, ett standard C-bibliotek med en körbar plattform

Den första versionen har precis släppts. av projektet Cosmopolitan som utmärker sig för att utvecklas ett standard C-bibliotek och ett universellt körbart filformat som kan användas för att distribuera program för olika operativsystem.

Behållaren för bildandet av universella körbara filer baseras på kombinationen av segment och specifika rubriker för olika operativsystem (PE, ELF, MACHO, OPENBSD) i en enda fil.

För att garantera utgivningen av en enda körbar fil på Windows- och Unix-system, ett knep används, vars essens är Windows PE-filkodning i form av ett skalskript, och drar fördel av det faktum att Thompson Shell inte använder "#!"-skriptmarkören.

Cosmopolitan gör C till ett build-once, run anywhere-språk, liknande Java, förutom att det inte kräver förinstallation av tolkar eller virtuella maskiner. Cosmo erbjuder samma portabilitetsfördelar som högnivåspråk som Go och Rust, men det uppfinner inte ett nytt språk och du behöver inte konfigurera ett CI-system för att skapa separata binärer för varje operativsystem.

Det Cosmopolitan fokuserar på är att fixa C genom att frikoppla det från plattformar, så det kan vara trevligt att använda för att skriva små Unix-program som enkelt distribueras till en mycket större publik.

Som ett resultat en körbar fil skapas där flera olika format kombineras används på Unix, Windows och macOS. och en översikt över det föreslagna formatet.

Filen börjar med taggen "MZqFpD", som tolkas som en rubrik i Windows PE-format.

Till exempel på Unix-system, skalkoden exekveras av exec-kommandot, skicka den körbara koden genom ett namnlöst rör.

Fastän det nämns att det finns en begränsning av den föreslagna metoden är möjligheten att köra på ett Unix-liknande operativsystem använder endast skal som stöder Thompson Shell-kompatibilitetsläge, eftersom det annars inte skulle starta direkt med systemanropet.

Samtalet qemu-x86_64 är avsedd att ge ytterligare portabilitet och låter dig köra x86_64-kompilerad kod på icke-x86-plattformar, såsom Raspberry Pi-kort och Apple-enheter med ARM-processorer.

Projektet kan också användas för att skapa fristående applikationer som fungerar utan ett operativsystem (bar metall). I sådana applikationer är en loader kopplad till den körbara filen och programmet fungerar som ett startbart operativsystem.

I C libc-standardbiblioteket, utvecklat av projektet, har cirka 1400 funktioner föreslagits för att bygga konsolapplikationer.

När det gäller prestanda, Cosmopolitan fungerar lika snabbt som glibc och ligger märkbart före Musl och Newlib, medan Cosmopolitan är en storleksordning mindre i kodstorlek än glibc och ungefär matchar Musl och Newlib.

För att optimera ofta anropade funktioner som memcpy och strlen, används dessutom tekniken där en makrohook används för att anropa funktionen, där kompilatorn informeras om de CPU-register som är involverade i exekveringen av koden, varigenom sparar resurser genom att spara CPU-tillstånd genom att endast lagra föränderliga register.

För att skapa program som inkluderar flera filer (länkar alla resurser i en enda fil), bildningen av en universell körbar fil i form av ett ZIP-arkiv stöds specialgjorda (innehållet kan ses med kommandot "unzip -v", men arkivet förblir tillgängligt för direktstart).

Filen som erhålls genom statisk länkning med den föreslagna libc och runtime är lämplig för körning på alla Linux-distributioner, macOS, Windows, FreeBSD och OpenBSD. Projektkoden distribueras under ISC-licensen (MIT/BSD Simplified Version).

Slutligen om du är intresserad av att veta mer om det om det här biblioteket kan du konsultera detaljerna, såväl som dokumentationen I följande länk.


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.