Cosmopolitan, стандартная библиотека C с кроссплатформенным исполняемым файлом

 

Только что вышла первая версия проект Космополитический который выделяется развитием стандартная библиотека C и универсальный формат исполняемого файла, который можно использовать для распространения программ для различных операционных систем.

Контейнер для формирования универсальных исполняемых файлов основан на сочетании определенных сегментов и заголовков для разных операционных систем (PE, ELF, MALE, OPENBSD) в одном файле.

Чтобы гарантировать запуск единый исполняемый файл в системах Windows и Unix, используется трюк, суть которого заключается в кодировке файлов Windows PE в виде сценария оболочки, используя тот факт, что оболочка Томпсона не использует маркер сценария «#!».

Cosmopolitan делает C языком для однократной сборки, который можно запускать где угодно, подобно Java, за исключением того, что он не требует предварительной установки интерпретаторов или виртуальных машин. Cosmo предлагает те же преимущества переносимости, что и языки высокого уровня, такие как Go и Rust, но он не изобретает новый язык, и вам не нужно настраивать систему CI для создания отдельных двоичных файлов для каждой операционной системы.

Cosmopolitan фокусируется на исправлении C путем отделения его от платформ, поэтому его можно использовать для написания небольших программ Unix, которые легко распространяются среди гораздо более широкой аудитории.

В результате создается исполняемый файл, в котором объединены несколько разных форматов используется в Unix, Windows и macOS. и краткое изложение предлагаемого формата.

Файл начинается с тега «MZqFpD», который интерпретируется как заголовок в формате Windows PE.

Например, в системах Unix, код оболочки запускается командой exec, передача исполняемого кода через безымянный канал.

Хотя отмечается, что у предлагаемого метода есть ограничение. возможность работать в Unix-подобной операционной системе используя только оболочки, поддерживающие режим совместимости Thompson Shell, в противном случае он не будет запускаться напрямую с системного вызова.

Вызов qemu-x86_64 предназначен для обеспечения дополнительной переносимости и он позволяет запускать скомпилированный код x86_64 на платформах, отличных от x86, таких как платы Raspberry Pi и устройства Apple с процессорами ARM.

В рамках проекта также может использоваться для создания автономных приложений которые работают без операционной системы (голый металл). В таких приложениях к исполняемому файлу прикреплен загрузчик, и программа действует как загрузочная операционная система.

В стандартной библиотеке C libc, разработанной проектом, предложено около 1400 функций для создания консольных приложений.

Что касается производительности, Космополитический работает так же быстро, как glibc, и заметно опережает Musl и Newlib, тогда как Cosmopolitan на порядок меньше по размеру кода, чем glibc, и примерно соответствует Musl и Newlib.

Для оптимизации часто вызываемых функций, таких как memcpy и strlen, дополнительно используется метод, в котором для вызова функции используется привязка макроса, при которой компилятор информируется о регистрах ЦП, участвующих в выполнении кода, что экономит ресурсы. сохраняя состояние процессора, сохраняя только изменяемые регистры.

Создавать программы которые включают несколько файлов (связывая все ресурсы в один файл), поддерживается формирование универсального исполняемого файла в виде ZIP-файла специально созданный (содержимое можно просмотреть с помощью команды «unzip -v», но файл остается доступным для прямого запуска).

Файл, полученный статическим связыванием с предлагаемой библиотекой libc и средой выполнения, подходит для запуска в любом дистрибутиве Linux, macOS, Windows, FreeBSD и OpenBSD. Код проекта распространяется по лицензии ISC (упрощенная версия MIT / BSD).

В конце концов если вам интересно узнать об этом больше об этой библиотеке вы можете проверить детали, а также документацию По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.