Cosmopolitan, une bibliothèque C standard avec un exécutable multiplateforme

La première version vient de sortir projet Cosmopolite qui se distingue par le développement une bibliothèque C standard et un format de fichier exécutable universel qui peut être utilisé pour distribuer des programmes pour différents systèmes d'exploitation.

Le conteneur pour la formation de fichiers exécutables universels est basé sur la combinaison de segments et de titres spécifiques pour différents systèmes d'exploitation (PE, ELF, MALE, OPENBSD) dans un seul fichier.

Pour garantir le lancement un seul fichier exécutable sur les systèmes Windows et Unix, une astuce dont l'essence est l'encodage des fichiers Windows PE est utilisée sous la forme d'un script shell, en tirant parti du fait que Thompson Shell n'utilise pas le marqueur de script "#!".

Cosmopolitan fait de C un langage qui peut être construit une fois et peut être exécuté n'importe où, similaire à Java, sauf qu'il ne nécessite pas l'installation préalable d'interprètes ou de machines virtuelles. Cosmo offre les mêmes avantages de portabilité que les langages de haut niveau comme Go et Rust, mais il n'invente pas de nouveau langage et vous n'aurez pas besoin de configurer un système CI pour créer des binaires séparés pour chaque système d'exploitation.

Cosmopolitan se concentre sur la correction de C en le dissociant des plates-formes, de sorte qu'il peut être agréable à utiliser pour écrire de petits programmes Unix qui sont facilement distribués à un public beaucoup plus large.

En conséquence, un fichier exécutable est créé dans lequel plusieurs formats différents sont combinés utilisé sous Unix, Windows et macOS. et un aperçu du format proposé.

Le fichier commence par la balise "MZqFpD", qui est interprétée comme un en-tête au format Windows PE.

Par exemple, sur les systèmes Unix, le code shell exécuté par la commande exec, passer du code exécutable via un tube sans nom.

Même si il est mentionné qu'il existe une limitation de la méthode proposée est la possibilité de fonctionner sur un système d'exploitation de type Unix en utilisant uniquement des shells prenant en charge le mode de compatibilité Thompson Shell, sinon, il ne démarrera pas directement avec l'appel système.

L'appel qemu-x86_64 est destiné à fournir une portabilité supplémentaire et vous permet d'exécuter du code x86_64 compilé sur des plates-formes non x86 telles que les cartes Raspberry Pi et les appareils Apple avec des processeurs ARM.

Le projet peut également être utilisé pour créer des applications autonomes qui fonctionnent sans système d'exploitation (bare metal). Dans de telles applications, un chargeur est attaché au fichier exécutable et le programme agit comme un système d'exploitation amorçable.

Dans la bibliothèque standard C libc, développée par le projet, environ 1400 fonctions ont été proposées pour créer des applications console.

En termes de performances, Cosmopolite fonctionne aussi vite que la glibc et devance notamment Musl et Newlib, tandis que Cosmopolitan est un ordre de grandeur plus petit en taille de code que la glibc et correspond à peu près à Musl et Newlib.

Pour optimiser les fonctions fréquemment appelées telles que memcpy et strlen, la technique dans laquelle une liaison de macro est utilisée pour appeler la fonction est également utilisée, dans laquelle le compilateur est informé des registres CPU impliqués dans l'exécution du code, ce qui économise des ressources en sauvegardant l'état du processeur en ne stockant que les registres mutables.

Pour créer des programmes qui incluent plusieurs fichiers (reliant toutes les ressources dans un seul fichier), la formation d'un fichier exécutable universel sous la forme d'un fichier ZIP est prise en charge spécialement conçu (le contenu peut être visualisé avec la commande "unzip -v", mais le fichier reste disponible pour un lancement direct).

Le fichier obtenu par liaison statique avec la libc et le runtime proposés est adapté pour fonctionner sur n'importe quelle distribution Linux, macOS, Windows, FreeBSD et OpenBSD. Le code du projet est distribué sous la licence ISC (version simplifiée du MIT / BSD).

Enfin si vous souhaitez en savoir plus à propos de cette bibliothèque, vous pouvez vérifier les détails, ainsi que la documentation dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.