Xenolith 是一套跨平台 C/C++ SDK —— 包含 Vulkan 引擎、自包含的系统运行时,以及完整的应用库。用同一份代码构建 Linux、Windows、Android 与 macOS —— 无需 Windows SDK,无需 NDK,无需 macOS SDK。
无需预装任何东西 —— 工具链自带一切,连 GNU Make 本身也在内。
无需安装或授权任何平台 SDK,一套工具链构建全部目标 —— 技术与授权上的“门槛”被直接移除。
在技术允许的范围内,每个平台都暴露相同的接口 —— 没有成片的 #ifdef,无需为每个系统重写。
每一次构建都是交叉编译。切换平台只需一个参数,代码和 Makefile 完全不变。
Windows 无需 UCRT 或 Windows SDK,Android 无需 NDK,macOS 无需 macOS SDK —— 工具链自带 libc、链接器和头文件。
默认交叉编译。 面向其他平台只需一个参数 STAPPLER_TARGET=<triple>。同一份源码,同一个 Makefile。
无需预装任何东西。 工具链自带 GNU Make、Clang、lld、lldb 和着色器编译器,版本固定,构建可复现。
模块自动解析依赖。 只需列出用到的模块,构建系统按传递关系拉取依赖,缺失时给出清晰提示。
着色器在构建中编译。 GLSL 自动编译为 SPIR-V 并以头文件形式内嵌 —— 无需额外步骤。
开箱即用的 IDE 支持。 每次构建都会生成 compile_commands.json;附带 VS Code 的 clangd、构建与 LLDB 配置。
伞形运行时为每个平台提供统一的 POSIX 接口,再替换真正重要的部分。
在 glibc、musl、Bionic 与 macOS 上提供相同的 POSIX 接口,并在 Windows 上提供完全自研的 libc。time_t / off_t 在所有平台都是 64 位;系统缺失的调用会返回 ENOSYS,而不是从 API 中消失。
每个平台都有完整的 pthread:优先级继承互斥锁(Linux 用 futex、Windows 用 WaitOnAddress、macOS 用 os_sync)、健壮互斥锁、写者公平的读写锁,以及自适应自旋锁。
longjmp 与 setjmp 之间的 C++ 析构函数会被正确调用 —— 线程的销毁与取消干净利落,而非标准 C 中的未定义行为。
自带的部分 C++ STL,以获得完整的 ABI 控制 —— 无异常,通过 Status/Result<T> 处理错误;侵入式引用计数在 Debug 构建中记录调用栈以追踪泄漏。
一次调用 → 三种内核。 同一个 SPRT 锁映射到各平台的原生原语 —— 带优先级继承 —— 因此你的代码在 Linux、Windows 与 macOS 上完全一致。
提供 libc 与线程的同一个运行时,也提供事件循环、窗口与显示 —— 各平台的底层机制都藏在统一接口之后,且不依赖任何平台 SDK。
统一的分发 API(Looper / Queue)之上对接 epoll + io_uring(Linux)、IOCP(Windows)、kqueue / CFRunLoop(macOS)与 ALooper(Android):定时器、套接字与文件就绪、异步文件 I/O、工作线程池、可流式读取 stdout/stderr 的进程派生,以及跨线程唤醒。
为 Wayland、X11/XCB、Win32、Cocoa 与 Android 提供真实后端 —— Linux 甚至在运行时选择 Wayland 或 X11(带 XWayland 回退),并通过 DBus 集成 GNOME/KDE 门户。每个后端都向引擎交付现成的 Vulkan surface。无需 Windows SDK,无需 NDK。
多显示器枚举与跨屏桌面、每显示器缩放与 Wayland 上的分数 DPI 缩放、独占全屏、刷新率 / present 模式控制、物理尺寸与 EDID —— 在支持的输出上还能感知 HDR。
鼠标(滚轮与触控笔)、带修饰键的 XKB 键盘映射、触摸;带类型的 IME 文本输入(邮箱 / 数字 / 电话 / 密码 / 多行);支持 MIME 类型协商的剪贴板;服务端或客户端窗口装饰。
将一帧描述为由通道与资源组成的图,引擎自动插入屏障与布局转换。 图形与计算共存于同一张图中。
按需渲染。 仅在场景实际变化时才准备新的一帧 —— 应用空闲时实实在在地省电。
自研 GPU 分配器。 基于分页的子分配,带预算管理与专用分配回退,专为异步帧模型优化。
从着色器生成描述符布局。 描述符集与 push constant 通过反射从 SPIR-V 提取 —— 无需易“脱节”的样板代码。
在 macOS 上稳妥运行 Vulkan。 MoltenVK 并正确启用 portability subset,加载器直接从 .app 中发现。
一套真正的 CSS flexbox 工具:direction、wrap、justify、align、grow/shrink/basis、间距与 order。
以矢量数据形式提供的 Material 图标,任意像素密度下都清晰锐利,并支持可动画的形变。
位移、缩放、淡入淡出、着色;序列、并行、重复;Sine / Quad / Cubic / Expo / Elastic / Back / Bounce 缓动与 Bézier —— 还有基于物理的惯性,让滚动自然流畅。
点按、长按、滑动、捏合、滚动与悬停识别器;带优先级与捕获的派发器、焦点分组,以及支持 IME 的文本输入。
每个窗口拥有独立的场景与 director,显示密度贯穿手势与渲染,并可选择显示器/模式。
像素级精准的文本。 GPU 字形图集,异步光栅化,可变字体(字重/字宽/光学尺寸轴),基于词典的连字断词、两端对齐,并在任意显示密度下保持清晰。
图像:位图与矢量。 读取 PNG / JPEG / WebP / GIF / TIFF,写入 PNG / JPEG / WebP,提供 16 种高质量重采样滤镜;矢量路径在 GPU 上细分,任意 DPI 下都锐利。
声明式模式、丰富的字段类型(对象、集合、文件、带缩略图的图像、全文、虚拟与计算字段)、按操作粒度的角色访问控制、keyset 分页与 upsert —— 两种引擎共用同一套 API。
统一的 Value 容器可序列化为 JSON、CBOR 或 URL 安全格式 —— 透明 LZ4 压缩并自动识别格式。
OpenSSL、GnuTLS 与 mbedTLS 后端;RSA、ECDSA 与 EdDSA;OpenSSL 与 GnuTLS 后端上的 GOST 3410/3411/3412;带算法混淆防护与恒定时间校验的 JWT。
Snowball 词干提取、与 PostgreSQL 兼容的查询向量、智能分词器(识别 email / URL / 路径)、摘要高亮与模糊匹配 —— 并提供可离线使用的内存索引。
具备真实 CSS 盒模型的文档引擎 —— 块级流、浮动、完整表格、分页 —— 以及带目录与内嵌字体的 EPUB 2/3,输出为带坐标的对象,直接在 GPU 上渲染。
Pug 模板引擎,支持条件、循环、include 与 mixin,转义/非转义输出,并在文件变更时热重载。
任何容器、字符串与值都可以使用 arena 内存池(分配上千个对象,一次调用全部释放,无需逐个析构),或普通 malloc。切换只是一个模板参数,无需重写任何代码即可获得服务端级别的分配表现。
桌面安装器(Windows、macOS、Linux)会配置引擎、宿主工具链与目标平台,下载经 GPG 校验,进度清晰可见。
脚手架生成图形项目,然后直接在 GUI 中构建、运行、清理与重建 —— 选择目标、运行结果,并以通俗提示阅读构建错误。另有 headless CLI 覆盖 CI。
工具链只下载一次并在各引擎版本间共享,升级不会重复占用数 GB。提供英文与俄文界面。
固定且可复现 —— 每次构建都使用同一批经审核的版本
我们更愿意如实说明现状,而非夸大其词。以下功能已完成设计并部分实现 —— 值得期待,但尚未完成。
“瘦客户端 / GPU 服务端”架构:安全的 QUIC 传输、场景图序列化、瘦 GPU 句柄。逐帧流式协议仍在路上。
基于 WAMR 的可用宿主运行时,为沙箱化访客代码提供丰富的 data/filesystem API。尚未向访客开放图形能力。
GPU 粒子系统与 iOS 支持正在积极开发中 —— iOS 目前仅构建工具链 sysroot。
一个小巧的应用从发布服务器获取引擎、宿主工具链与目标 sysroot(经 GPG 校验、可断点续传),然后脚手架生成、构建并运行你的第一个 Vulkan 项目。在服务器与 CI 上可无界面运行。
安装器构建目前未签名 —— 首次启动需通过 Gatekeeper / SmartScreen 确认。(上方的 GPG 校验针对下载的 SDK 工件,是真实存在的。)
适合希望用同一份代码交付 Linux、Windows、Android 与 macOS、又不想与平台 SDK 搏斗的 C/C++ 开发者 —— 在现代 Vulkan 基础上构建应用、工具、游戏、阅读器,或图形与计算密集型软件。