Mød den nye version af Cosmopolitan 2.0, standard C-biblioteket på tværs af platforme

Lanceringen af den nye version af projektet "Cosmopolitan 2.0", som udvikler et standard C-bibliotek og et universelt eksekverbart filformat, der kan bruges til at distribuere programmer til forskellige operativsystemer uden brug af tolke og virtuelle maskiner.

Containeren at generere universelle eksekverbare filer er afhængig af at kombinere specifikke segmenter og headere fra forskellige systemer operativsystemer i én fil, der kombinerer flere forskellige formater, der bruges i Unix, Windows og macOS.

For at sikre det en enkelt eksekverbar køre på systemer Windows og Unix, et trick bruges til at kode Windows PE-filer som et shell-script, udnytter det faktum, at Thompson Shell ikke bruger "#!"-scriptmarkøren.

For at oprette programmer, der inkluderer flere filer (der kombinerer alle ressourcer i en enkelt fil), understøttes det at generere en eksekverbar fil i form af et specielt udformet ZIP-arkiv. Oversigt over det foreslåede format (eksempel hello.com-applikation):

qemu-x86_64-opkaldet er givet for yderligere portabilitet og tillader kode, der er kompileret til x86_64-arkitekturen, at køre på ikke-x86-platforme, såsom Raspberry Pi-kort og Apple-enheder udstyret med ARM-processorer. Projektet kan også bruges til at skabe selvstændige applikationer, der fungerer uden et operativsystem (bart metal). I sådanne applikationer er en bootloader knyttet til den eksekverbare fil, og programmet fungerer som et bootbart operativsystem.

Vigtigste nyheder i Cosmopolitan 2.0

I denne nye version fremhæves det skemaet for adgang til interne ressourcer er blevet ændret Dentro fra en zip-fil (når du åbner filer, bruges de sædvanlige /zip/...-stier nu i stedet for at bruge zip:..-præfikset). Tilsvarende, for at få adgang til diske i Windows, er det muligt at bruge stier som "/c/..." i stedet for "C:/...".

Der foreslås en ny APE-læsser (Faktisk Portable Executable), som definerer formatet for universelle eksekverbare filer. Den nye bootloader bruger mmap til at allokere programmet til hukommelsen og ændrer ikke længere indholdet i farten. Om nødvendigt kan den universelle eksekverbare konverteres til almindelige eksekverbare filer, der er knyttet til individuelle platforme.

På Linux er det muligt at bruge binfmt_misc-kernemodulet at køre APE-programmer. Det bemærkes, at brugen af ​​binfmt_misc er den hurtigste opstartsmetode, foruden En implementering af funktionaliteten af ​​pledge()- og unveil()-systemkaldene, udviklet af OpenBSD-projektet, samt tilvejebringelse af en API til brug af opkaldsdata i C-, C++-, Python- og Redbean-programmer samt et hjælpeprogram fra belofte.com at isolere vilkårlige processer.

Vi kan også finde det for Linux er ydeevnen af ​​opkaldene clock_gettime og gettimeofday blevet øget op til 10 gange på grund af brugen af ​​vDSO-mekanismen (Virtual Dynamic Shared Object), som gør det muligt at overføre systemopkaldsbehandleren til brugerrummet og omgå switchkonteksten.

Bygningen bruger Landlock Make, en udgave af GNU Make med strengere afhængighedskontrol og brug af Landlock-systemkaldet for at isolere programmet fra resten af ​​systemet og forbedre cachingeffektiviteten. Som en mulighed bevares compiler-kapacitet og det sædvanlige GNU Make.

På den anden side fremhæver det også implementerede funktioner til multithreading: _spawn() og _join(), som er universelle bindinger over specifikke API'er til forskellige operativsystemer. Der arbejdes også på at implementere support til POSIX-tråde.

Af de andre ændringer, der skiller sig ud:

  • Tilføjet understøttelse af "–ftrace" og "–strace" mulighederne til eksekverbare filer for at sende information om alle funktions- og systemkald til stderr.
  • Tilføjet understøttelse af closefrom()-systemkaldet, der er kompatibelt med Linux 5.9+, FreeBSD 8+ og OpenBSD.
  • Matematiske funktioner til at arbejde med komplekse tal er blevet flyttet fra Musl-biblioteket.
  • Mange matematiske funktioner er blevet fremskyndet.
  • Funktionen nointernet() foreslås, som deaktiverer netværksfunktioner.
  • Tilføjet nye funktioner til effektivt at tilføje strenge: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf og vappendf.
  • En beskyttet version af kprintf()-familien af ​​funktioner, designet til at arbejde med forhøjede privilegier, er blevet tilføjet.
  • Markant forbedret ydeevne af SSL, SHA, curve25519 og RSA implementeringer.

Endelig, hvis du er interesseret i at lære mere om det, skal du vide, at projektets kodeeller distribueres under ISC-licensen (forenklet version af MIT/BSD).


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.