Тулчейн, libc, libc++, прикладные библиотеки и графический движок. Linux, Windows, macOS и Android из одного кода. Windows SDK, MacOS SDK и Android NDK для этого не нужны.
Компилятор, линкер и make уже в тулчейне. Отдельно их ставить не нужно.
MIT
Как создать проект, собрать его и выбрать систему: всё есть в базе знаний репозитория. Содержание и документация оптимизированы для агентной работы.
Тулчейн везёт компилятор, заголовки и библиотеки с собой. Чужой SDK нужен только если вы сами выбрали сборку через него.
x86_64, arm64 и riscv64, glibc и musl. Рантайм работает над системной libc.
x86_64 и arm64. Своя libc на mimalloc, без UCRT и без Windows SDK. Импорт DLL и компиляция в DLL поддерживаются.
x86_64 и arm64. Сборка +open обходится без macOS SDK и лицензионных ограничений. Обычная сборка под Apple SDK ищет его в системе.
arm64, armv7, x86 и x86_64. Есть свой sysroot для сборки без NDK. Есть отдельная обёртка для сборки через NDK, если нужно интегрировать проект в общую систему.
Отдельными таргетами собираются WebAssembly, Embox и NuttX. На iOS пока только sysroot тулчейна: рантайма и варианта +open там нет.
С вашего кода Linux, Windows, macOS и Android выглядят одинаково. Лес #ifdef из-за разной CRT не нужен.
На Linux, Android и macOS вызовы идут в glibc, musl, Bionic или libSystem. На Windows libc своя. time_t и off_t везде 64-битные. Вызова, которого в системе нет, из заголовков не выкидываем: он возвращает ENOSYS.
Обычный pthread на каждой системе. Мьютекс с наследованием приоритета сидит на futex, на WaitOnAddress или на os_sync — смотря где запущено.
Сам рантайм собран на маленьком sprt/cxx: без поддержки исключений. Прикладной код получает обычный std:: из порта LLVM libc++. Он живёт в отдельном namespace и не сталкивается с чужим libc++.
Потоки, таймеры, сокеты, файлы и процессы — через один Looper. Под ним epoll и io_uring, IOCP, kqueue или ALooper. Здесь же окна, дисплеи и все системные детали.
Реализованы поверх рантайма и дают ключевые возможности, необходиые реальным приложениям.
Один контейнер Value пишется в JSON, CBOR и свой url-safe формат. Сжатие LZ4, формат на чтении определяется сам.
SQLite и PostgreSQL через одни схемы: объекты, файлы, роли на операцию, постраничная выборка. Полнотекстовый поиск на 23 языках, в том числе в памяти, без сервера.
HTTP и HTTP/3 через curl. OpenSSL или GnuTLS (если предустановлен на Linux): RSA, ECDSA, EdDSA, ГОСТ 34.10, 34.11 и 34.12, JWT.
Чтение PNG, JPEG, WebP, GIF и TIFF, запись PNG, JPEG и WebP. Вектор режется в треугольники на GPU. Шрифты — FreeType и HarfBuzz, поддержка variadic шрифтов.
HTML и EPUB со своей вёрсткой: блоки, обтекание, таблицы, оглавление. Markdown и шаблоны Pug.
Свой zip, файловая система, гостевой WebAssembly на WAMR.
Кадр — это граф проходов и ресурсов. Барьеры и смену лейаутов движок ставит сам, графику и compute можно мешать в одном графе. Новый кадр готовится, только если сцена изменилась: в простое батарею не жжёт.
Основной. На macOS это MoltenVK из вашего .app.
Отдельный бэкенд на macOS, без прослойки через Vulkan.
Для плат, где Vulkan нет: Mali, VideoCore, старый Android и эмуляторы.
Нативно и в браузере, через сборку в WebAssembly.
Собственный программный растеризатор для простых интерфейсов. Поддерживает SSE2/4, NEON, RVV
Wayland и X11 (на Linux выбирается при запуске), Win32, Cocoa, Android, прямой вывод на HDMI для встроек и режим без окна. В комплекте flexbox и grid, жесты, вектор и текст с посадкой глифа в пиксель.
Откроется в браузере. Ставить тулчейн для этого не нужно.