Coneix la nova versió de Cosmopolitan 2.0, la biblioteca C estàndard multiplataforma

Es va donar a conèixer el llançament de la nova versió de el projecte «Cosmopolitan 2.0», que desenvolupa una biblioteca C estàndard i un format de fitxer executable universal que es pot fer servir per distribuir programes per a diferents sistemes operatius sense l'ús d'intèrprets i màquines virtuals.

el contenidor per generar arxius executables universals es basa a combinar segments i encapçalaments específics de diferents sistemes operatius en un arxiu, combinant diversos formats diferents utilitzats a Unix, Windows i macOS.

Per garantir que un sol executable s'executi en sistemes Windows i Unix, s'usa un truc per codificar fitxers de Windows PE com un script de shell, aprofitant el fet que Thompson Shell no utilitza el marcador d'script «#!».

Per crear programes que incloguin diversos fitxers (combinant tots els recursos en un sol fitxer), s'admet generar un fitxer executable en forma d'un fitxer ZIP especialment dissenyat. Esquema del format proposat (exemple aplicació hello.com):

La trucada qemu-x86_64 es proporciona per a una portabilitat addicional i permet que el codi compilat per a l'arquitectura x86_64 s'executi en plataformes que no siguin x86, com ara plaques Raspberry Pi i dispositius Apple equipats amb processadors ARM. El projecte també es pot utilitzar per crear aplicacions independents que funcionen sense un sistema operatiu (bare metall). En aquestes aplicacions, s'adjunta un carregador d'arrencada al fitxer executable i el programa actua com un sistema operatiu d'arrencada.

Principals novetats de Cosmopolitan 2.0

En aquesta nova versió es destaca que s'ha canviat l'esquema per accedir als recursos interns Dins d'un fitxer zip (en obrir fitxers, ara es fan servir les rutes habituals /zip/… en lloc d'usar el prefix zip:..). De manera similar, per accedir als discs a Windows, és possible utilitzar rutes com a «/c/…» en lloc de «C:/…».

Es proposa un nou carregador APE (Actually Portable Executable), que defineix el format dels fitxers executables universals. El nou carregador d'arrencada utilitza mmap per assignar el programa a la memòria i ja no canvia el contingut sobre la marxa. Si cal, lexecutable universal es pot convertir en executables regulars vinculats a plataformes individuals.

A Linux, és possible utilitzar el mòdul del nucli binfmt_misc per executar programes APE. S‟observa que l‟ús de binfmt_misc és el mètode d‟inici més ràpid, a més que es proposa una implementació de la funcionalitat de les trucades al sistema pledge() i unveil(), desenvolupades pel projecte OpenBSD, així com també es destaca que es proporciona una API per utilitzar dades de trucades en programes C, C++, Python i Redbean, així com una utilitat de promise.com per aïllar processos arbitraris.

També podrem trobar que per a Linux, el rendiment de les trucades clock_gettime i gettimeofday s'ha incrementat fins a 10 vegades a causa de lús del mecanisme vDSO (objecte compartit dinàmic virtual), que permet transferir el controlador de trucades del sistema a lespai de lusuari i evitar el context dinterruptors.

La compilació utilitza Landlock Make, una edició de GNU Make amb una verificació de dependències més estricta i l'ús de la trucada al sistema Landlock per aïllar el programa de la resta del sistema i millorar l'eficiència de l'emmagatzematge a la memòria cau. Com a opció, es conserva la capacitat de compilació i el GNU Make habitual.

D'altra banda, també es destaquen les funcions implementades per a subprocessos múltiples: _spawn() i _join(), que són enllaços universals sobre API específiques per a diferents sistemes operatius. També s'està treballant per implementar suport per a subprocessos POSIX.

Dels altres canvis que es destaquen:

  • S'ha afegit suport per a les opcions “-ftrace” i “–strace” als fitxers executables per enviar a stderr informació sobre totes les trucades a funcions i trucades al sistema.
  • S'ha afegit suport per a la trucada al sistema closefrom() compatible amb Linux 5.9+, FreeBSD 8+ i OpenBSD.
  • Les funcions matemàtiques per treballar amb números complexos s'han mogut de la biblioteca Musl.
  • Moltes funcions matemàtiques s'han accelerat.
  • Es proposa la funció nointernet(), que desactiva les capacitats de xarxa.
  • Es van afegir noves funcions per afegir cadenes de manera eficient: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf i vappendf.
  • S'ha afegit una versió protegida de la família de funcions kprintf(), dissenyada per treballar amb privilegis elevats.
  • Rendiment significativament millorat de les implementacions de SSL, SHA, curve25519 i RSA.

Finalment, si estàs interessat en poder conèixer més sobre això has de saber que el codi del projecteo es distribueix sota la llicència ISC (versió simplificada de MIT/BSD).


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.