Seznamte se s novou verzí Cosmopolitan 2.0, multiplatformní standardní knihovny C

Zahájení nová verze projektu "Cosmopolitan 2.0", která vyvíjí standardní knihovnu C a univerzální formát spustitelných souborů, který lze použít k distribuci programů pro různé operační systémy bez použití interpretů a virtuálních strojů.

Kontejner pro generování univerzálních spustitelných souborů spoléhá na kombinaci specifických segmentů a hlaviček z různých systémů operační systémy do jednoho souboru, který kombinuje několik různých formátů používaných v Unixu, Windows a macOS.

Abychom to zajistili jeden spustitelný soubor běží na systémech Windows a Unix, trik se používá ke kódování souborů Windows PE jako skriptu shell, využívající skutečnosti, že Thompson Shell nepoužívá značku skriptu „#!“.

Chcete-li vytvořit programy, které obsahují více souborů (sloučení všech zdrojů do jednoho souboru), je podporováno vygenerování spustitelného souboru ve formě speciálně vytvořeného archivu ZIP. Nástin navrhovaného formátu (příklad aplikace hello.com):

Volání qemu-x86_64 je poskytováno pro další přenositelnost a umožňuje, aby kód zkompilovaný pro architekturu x86_64 běžel na platformách jiných než x86, jako jsou desky Raspberry Pi a zařízení Apple vybavená procesory ARM. Projekt lze také použít k vytvoření samostatných aplikací, které fungují bez operačního systému (holý kov). V takových aplikacích je ke spustitelnému souboru připojen bootloader a program funguje jako zaváděcí operační systém.

Hlavní novinky Cosmopolitanu 2.0

V této nové verzi je zdůrazněno, že schéma pro přístup k interním zdrojům bylo změněno Dentro ze souboru zip (při otevírání souborů se nyní místo použití předpony zip:.. používají obvyklé cesty /zip/…). Podobně pro přístup k diskům ve Windows je možné použít cesty jako „/c/…“ místo „C:/…“.

Je navržen nový zavaděč APE (Actually Portable Executable), který definuje formát univerzálních spustitelných souborů. Nový bootloader používá mmap k přidělení programu do paměti a již nemění obsah za chodu. V případě potřeby lze univerzální spustitelný soubor převést na běžné spustitelné soubory vázané na jednotlivé platformy.

V Linuxu je možné použít modul jádra binfmt_misc ke spouštění programů APE. Je třeba poznamenat, že použití binfmt_misc je kromě toho nejrychlejší metodou spouštění Implementace funkčnost systémových volání pledge() a unveil() vyvinutých projektem OpenBSD, stejně jako poskytování API pro použití dat volání v programech C, C++, Python a Redbean, stejně jako obslužný program od slib.com izolovat svévolné procesy.

Můžeme to také najít pro Linux byl zvýšen výkon volání clock_gettime a gettimeofday až 10krát díky použití mechanismu vDSO (Virtual Dynamic Shared Object), který umožňuje přenést obsluhu systémového volání do uživatelského prostoru a obejít kontext přepínače.

Sestavení využívá Landlock Make, vydání GNU Make s přísnější kontrolou závislostí a použitím systémového volání Landlock k izolaci programu od zbytku systému a zlepšení efektivity ukládání do mezipaměti. Volitelně jsou zachovány možnosti kompilátoru a obvyklé GNU Make.

Na druhou stranu to také zdůrazňuje implementované funkce pro multithreading: _spawn() a _join(), což jsou univerzální vazby přes konkrétní API pro různé operační systémy. Pracuje se také na implementaci podpory pro vlákna POSIX.

Z dalších změn, které vynikají:

  • Do spustitelných souborů byla přidána podpora voleb „–ftrace“ a „–strace“ pro odesílání informací o všech voláních funkcí a systémových voláních do stderr.
  • Přidána podpora pro systémové volání closefrom() kompatibilní s Linuxem 5.9+, FreeBSD 8+ a OpenBSD.
  • Z knihovny Musl byly přesunuty matematické funkce pro práci s komplexními čísly.
  • Mnoho matematických funkcí bylo zrychleno.
  • Je navržena funkce nointernet(), která deaktivuje síťové funkce.
  • Přidány nové funkce pro efektivní připojování řetězců: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf a vappendf.
  • Byla přidána chráněná verze rodiny funkcí kprintf() navržená pro práci se zvýšenými oprávněními.
  • Výrazně zlepšený výkon implementací SSL, SHA, curve25519 a RSA.

A konečně, pokud se o tom chcete dozvědět více, měli byste vědět, že kód projektunebo je distribuován pod licencí ISC (zjednodušená verze MIT/BSD).


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.