Запознайте се с новата версия на Cosmopolitan 2.0, междуплатформената стандартна C библиотека

Стартирането на новата версия на проекта "Космополитен 2.0", който разработва стандартна C библиотека и универсален изпълним файлов формат, който може да се използва за разпространение на програми за различни операционни системи без използването на интерпретатори и виртуални машини.

Контейнерът за генериране на универсални изпълними файлове разчита на комбиниране на специфични сегменти и хедъри от различни системи операционни системи в един файл, съчетаващ няколко различни формата, използвани в Unix, Windows и macOS.

За да се гарантира това един изпълним файл работят на системи Windows и Unix, използва се трик за кодиране на Windows PE файлове като shell скрипт, възползвайки се от факта, че Thompson Shell не използва маркера на скрипта "#!".

За създаване на програми, които включват множество файлове (комбиниране на всички ресурси в един файл), се поддържа генериране на изпълним файл под формата на специално създаден ZIP архив. Схема на предложения формат (примерно приложение hello.com):

Обаждането qemu-x86_64 е предоставено за допълнителна преносимост и позволява кодът, компилиран за x86_64 архитектурата, да работи на различни от x86 платформи, като например Raspberry Pi платки и устройства на Apple, оборудвани с ARM процесори. Проектът може да се използва и за създаване на самостоятелни приложения, които работят без операционна система (bare metal). В такива приложения към изпълнимия файл е прикачен буутлоудър и програмата действа като стартираща операционна система.

Основни новости на Cosmopolitan 2.0

В тази нова версия е подчертано, че схемата за достъп до вътрешни ресурси е променена в от zip файл (при отваряне на файлове вече се използват обичайните пътища /zip/… вместо използването на префикса zip:..). По същия начин, за достъп до дискове в Windows е възможно да използвате пътища като "/c/…" вместо "C:/…".

Предлага се нов товарач APE (Всъщност Portable Executable), който дефинира формата на универсалните изпълними файлове. Новият буутлоудър използва mmap за разпределяне на програмата в паметта и вече не променя съдържанието в движение. Ако е необходимо, универсалният изпълним файл може да бъде преобразуван в обикновени изпълними файлове, свързани с отделни платформи.

В Linux е възможно да се използва модулът на ядрото binfmt_misc за стартиране на APE програми. Отбелязва се, че използването на binfmt_misc е най-бързият метод за стартиране, в допълнение към Реализация на функционалността на системните повиквания pledge() и unveil(), разработени от проекта OpenBSD, както и предоставяне на API за използване на данни за повиквания в програми на C, C++, Python и Redbean, както и помощна програма от promise.com за изолиране на произволни процеси.

Можем да открием и това за Linux производителността на извикванията clock_gettime и gettimeofday е увеличена до 10 пъти поради използването на механизма vDSO (Virtual Dynamic Shared Object), който позволява прехвърляне на манипулатора на системно повикване в потребителско пространство и заобикаляне на контекста на превключване.

Изграждането използва Landlock Make, издание на GNU Make с по-строга проверка на зависимостите и използване на системното извикване Landlock за изолиране на програмата от останалата част от системата и подобряване на ефективността на кеширането. Като опция се запазват възможностите на компилатора и обичайното GNU Make.

От друга страна, тя също така подчертава внедрени функции за многопоточност: _spawn() и _join(), които са универсални обвързвания върху специфични API за различни операционни системи. Работи се и за внедряване на поддръжка за POSIX нишки.

От останалите промени, които се открояват:

  • Добавена е поддръжка за опциите „–ftrace“ и „–strace“ към изпълними файлове за изпращане на информация за всички извиквания на функции и системни повиквания към stderr.
  • Добавена е поддръжка за системното повикване closefrom(), съвместимо с Linux 5.9+, FreeBSD 8+ и OpenBSD.
  • Математическите функции за работа с комплексни числа са преместени от библиотеката на Musl.
  • Много математически функции са ускорени.
  • Предлага се функцията nointernet(), която деактивира мрежовите възможности.
  • Добавени са нови функции за ефективно добавяне на низове: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf и vappendf.
  • Добавена е защитена версия на фамилията функции kprintf(), проектирана да работи с повишени привилегии.
  • Значително подобрена производителност на реализации на SSL, SHA, curve25519 и RSA.

И накрая, ако се интересувате да научите повече за него, трябва да знаете, че кодът на проектаили се разпространява под лиценз ISC (опростена версия на MIT/BSD).


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.