このプロジェクトについて

Cosmopolitan Libcは、C/C++をビルド一度でどこでも実行できる言語のように振る舞わせるCライブラリ兼ツールチェーンであり、精神面ではJavaに似ているが、インタプリタや仮想マシンを必要としない。既存のGCCとClangを再構成し、POSIX承認のポリグロット実行形式を生成することで、Linux、macOS、Windows、FreeBSD、OpenBSD 7.3、NetBSD、BIOS上でネイティブに動作し、高い性能と非常に小さなフットプリントを目指している。 導入の中心はcosmoccコンパイラで、cosmo.zipからzipとして配布されている。展開後、簡単なhello.cは`cosmocc -o hello hello.c`でコンパイルし、そのまま実行できる。ランタイムはデフォルトで重量級のトラブルシューティング機能をリンクする。`--strace`はシステムコールを、`--ftrace`は関数呼び出しをログに記録し、どちらもkprintf機能を使用する。これはKPRINTF_LOG環境変数でファイルにリダイレクトできる。 このツールチェーンは、CCとCXXをcosmoコンパイラにエクスポートし、configure、make、make installを実行することで、従来のautotoolsベースのオープンソースプロジェクトもビルドできる。Cosmopolitan自体も対応プラットフォーム上でソースからビルド可能で、Makefileがcosmoccを自動的にダウンロードする。ape/apeinstall.shによるシステム全体へのAPE Loaderのインストールが推奨され、Linuxでは追加性能のためにbinfmt_miscに登録される。ビルドにはGNU Makeを使用し、ブートストラップmakeはcosmo.zipから入手できる。リポジトリが大きいため、個別のターゲット(単一のPOSIXテストやテストパッケージ全体など)をビルドできる。ビルドモードには、非常に小さなバイナリ(最小12kb)向けの`m=tiny`や、他のオペレーティングシステムを削ってMusl Libcにより近い動作をする`m=tinylinux`がある。 デバッグのガイダンスでは、UTF-8文字セットとレイアウトのためのGDB設定、.dbgファイルの実行、デバッグシンボルの独立した読み込みを扱う。プラットフォームに関する注意では、シェル(zsh 5.9+推奨、古いシェルやPython subprocess向けの回避策あり)、MZ実行ファイルをWINEに誤ってルーティングしたりrun-detectorエラーを出力したりするLinuxシステム、WSLInterop binfmt_miscを無効化することが推奨されるWSLについて述べている。プロジェクトはサポートされる最小プラットフォームバージョンを列挙しており、AMD K8、Intel Core、Linux 2.6.18、Windows 8(古いWindows向けのコミュニティvistaブランチあり)、Darwin 23.1.0+、OpenBSD 7.3、FreeBSD 13、NetBSD 9.2が含まれる。開発に関する議論はDiscordサーバーで行われ、資金はGitHub SponsorsとPatreonを通じて提供されている。