Cosmopolitan, una biblioteca C estándar con un ejecutable multiplataforma

 

Se acaba de presentar la primera versión del proyecto Cosmopolitan el cual se destaca por desarrollar una biblioteca C estándar y un formato de archivo ejecutable universal que puede ser utilizado para distribuir programas para diferentes sistemas operativos.

El contenedor para la formación de archivos ejecutables universales se basa en la combinación de segmentos y encabezados específicos para diferentes sistemas operativos (PE, ELF, MACHO, OPENBSD) en un solo archivo.

Para garantizar el lanzamiento de un único archivo ejecutable en los sistemas Windows y Unix, se utiliza un truco cuya esencia es la codificación de archivos de Windows PE en forma de un script de shell, aprovechando el hecho de que Thompson Shell no utiliza el marcador de script «#!».

Cosmopolitan hace de C un lenguaje que se puede construir una vez y que se puede ejecutar en cualquier lugar, similar a Java, excepto que no requiere la instalación previa de intérpretes o máquinas virtuales. Cosmo ofrece los mismos beneficios de portabilidad que los lenguajes de alto nivel como Go y Rust, pero no inventa un nuevo lenguaje y no necesitará configurar un sistema CI para crear binarios separados para cada sistema operativo.

En lo que Cosmopolitan se enfoca es en arreglar C al desacoplarlo de las plataformas, por lo que puede ser agradable de usar para escribir pequeños programas Unix que se distribuyen fácilmente a una audiencia mucho más amplia.

Como resultado, se crea un archivo ejecutable en el que se combinan varios formatos diferentes utilizados en Unix, Windows y macOS. y un esquema del formato propuesto.

El archivo comienza con la etiqueta «MZqFpD», que se interpreta como un encabezado en formato Windows PE.

Por ejemplo, en los sistemas Unix, el código de shell se ejecuta mediante el comando exec, pasando el código ejecutable a través de una tubería sin nombre.

Aun que se menciona que existe una limitación del método propuesto es la capacidad de ejecutarse en un sistema operativo similar a Unix utilizando únicamente shells que admitan el modo de compatibilidad Thompson Shell, ya que de otra forma no comenzara directamente con la llamada al sistema.

La llamada qemu-x86_64 está destinada a proporcionar portabilidad adicional y le permite ejecutar código compilado x86_64 en plataformas que no son x86, como placas Raspberry Pi y dispositivos Apple con procesadores ARM.

El proyecto también se puede utilizar para crear aplicaciones autónomas que funcionen sin un sistema operativo (bare metal). En tales aplicaciones, se adjunta un cargador al archivo ejecutable y el programa actúa como un sistema operativo de arranque.

En la biblioteca estándar C libc, desarrollada por el proyecto, se han propuesto unas 1400 funciones para crear aplicaciones de consola.

En términos de rendimiento, Cosmopolitan funciona tan rápido como glibc y está notablemente por delante de Musl y Newlib, mientras que Cosmopolitan es un orden de magnitud más pequeño en tamaño de código que glibc y coincide aproximadamente con Musl y Newlib.

Para optimizar funciones frecuentemente llamadas como memcpy y strlen, se utiliza adicionalmente la técnica en la que se usa un enlace de macro para llamar a la función, en la que se informa al compilador sobre los registros de CPU involucrados en la ejecución del código, lo que ahorra recursos al guardar el estado de la CPU al almacenar solo registros mutables.

Para crear programas que incluyan varios archivos (vinculando todos los recursos en un solo archivo), se admite la formación de un archivo ejecutable universal en forma de un archivo ZIP especialmente diseñado (el contenido se puede ver con el comando «unzip -v», pero el archivo permanece disponible para el lanzamiento directo).

El archivo obtenido mediante la vinculación estática con la libc y el runtime propuestos es adecuado para su ejecución en cualquier distribución de Linux, macOS, Windows, FreeBSD y OpenBSD.  El código del proyecto se distribuye bajo la licencia ISC (versión simplificada de MIT / BSD).

Finalmente si estás interesado en conocer más al respecto sobre esta biblioteca, puedes consultar los detalles, asi como la documentación en el siguiente enlace.

from Linux Adictos https://ift.tt/3oeGz6y
via IFTTT

26 aplicaciones Android para cumplir tus propósitos de Año Nuevo

26 aplicaciones Android para cumplir tus propósitos de Año Nuevo

Te proponemos una lista de aplicaciones Android que te ayudarán a cumplir con toda esa lista de deseos que confeccionaste al final de 2020. Apps de tareas pendientes, recordatorios, aplicaciones Android con las que dejar de fumar… Te serán de mucha ayuda para tachar todos los propósitos de 2021.

¿Otro año en el que te hiciste una lista inmensa de propósitos por cumplir después de que haya transcurrido el anterior sin haber tachado los que tenías pendientes? No se hable más: llegó el momento de llevar a buen término todos esos deseos que terminarán mejorando tu vida, también la vida de aquellos que te rodean. Por más que parezca imposible, la felicidad está a sólo una app de distancia. O varias.


Continue reading

Cómo activar el modo Lite de MIUI 12: haz que tu móvil Xiaomi sea más sencillo de usar

Cómo activar el modo Lite de MIUI 12: haz que tu móvil Xiaomi sea más sencillo de usar

La última revisión de la capa personalizada de Xiaomi introdujo un modo reducido que mejora la visibilidad de todos los elementos de la pantalla. El citado modo, denominado como lite, adapta la interfaz a un estilo más minimalista, de iconos grandes y también con texto de mayor tamaño. Es perfecto para los que buscan un uso sencillo.

MIUI 12 incluye un sinfín de ajustes y personalizaciones, todo para permitir un número tan amplio de posibilidades que dos Xiaomi pueden no parecerse incluso teniendo la misma versión de sistema. Y una de las novedades que introdujo recientemente la marca es el Modo lite, una interfaz ‘ligera’ que es perfecta para reducir las complicaciones del teléfono. ¿Quieres saber cómo activarla? Pues es tan sencillo como la propia interfaz.


Continue reading