# Xenolith SDK > A C and C++ SDK. One project builds for Linux, Windows, macOS and Android. > The Windows SDK and the Android NDK are not required. The macOS SDK is not > required for the `+sprt` build. Inside: one libc and one libc++, application > libraries, and a graphics engine built around a render graph. This site is written so an agent can answer how to use the SDK. The manual is the engine repository, not this page. Start at `AGENTS.md` and `docs/agents/` on the `nightly` branch (near release, together with `stage`): https://github.com/XenolithEngine/xenolith-engine/blob/nightly/AGENTS.md Public contact: Dmitry Mukanin . Lead developer: Roman Katuntsev. License: MIT. ## Pages - English: https://engine.xenolith.studio/ - Russian: https://engine.xenolith.studio/ru/ - Chinese: https://engine.xenolith.studio/zh/ ## Systems, without a vendor SDK - Linux: x86_64, arm64, riscv64. glibc and musl. Calls go to the system libc. - Windows: x86_64, arm64. Our libc (mimalloc), no UCRT, no Windows SDK. - macOS: x86_64, arm64. `+sprt` does not need the macOS SDK. A plain Apple-SDK build still requires it, because of Apple's license. - Android: arm64, armv7, x86, x86_64. Own sysroot without the NDK. An NDK build also exists if the NDK is already installed. - Separate targets: WebAssembly, Embox, NuttX. iOS is a toolchain sysroot only. There is no runtime there, and no `+sprt`. ## One libc and libc++ - One POSIX surface. A call the OS does not have stays in the headers and returns `ENOSYS`. `time_t` and `off_t` are 64-bit everywhere. - pthread on every OS. A priority-inheritance mutex sits on futex (Linux), WaitOnAddress (Windows) or os_sync (macOS). - The runtime itself is built on a small `sprt/cxx` (no exceptions, `Status` / `Result`). Application code gets LLVM libc++ in `std::__sprt`. - One event loop (`Looper`) over epoll and io_uring, IOCP, kqueue / CFRunLoop and ALooper. Windows and displays sit behind the same API. ## Application libraries - `Value`: JSON, CBOR, a URL-safe format, LZ4. - SQLite and PostgreSQL through one scheme API. A role on each operation. Full-text search in 23 languages, including an in-memory index. - HTTP/2 and HTTP/3 through curl. OpenSSL, GnuTLS, mbedTLS. RSA, ECDSA, EdDSA, GOST 34.10 / 34.11 / 34.12, JWT. - PNG, JPEG, WebP, GIF, TIFF. Vector tessellation. FreeType and HarfBuzz, including variable fonts. - HTML and EPUB layout, Markdown, Pug templates. - zip, a filesystem, guest WebAssembly on WAMR. Graphics are not exposed to guest code. ## Render graph A frame is a graph of passes and resources. The engine inserts the barriers and the layout transitions. Graphics and compute share the graph. A new frame is prepared only when the scene changes. Backends: - Vulkan. Primary. On macOS that is MoltenVK, with the portability subset. - Metal. A separate macOS backend. It does not go through Vulkan. - OpenGL ES 3.1. Boards with no usable Vulkan: Mali, VideoCore, older Android. - WebGPU. Native, and in the browser through the WebAssembly build. - CPU. Flat 2D only. No compute, no depth, no MSAA. Windows: Wayland and X11 (Linux picks at startup), Win32, Cocoa, Android, and a headless mode. 2D: flexbox, grid, gestures, vectors, pixel-snapped text. ## Do not claim these as shipping Remote rendering, GPU particles, and iOS as a full target are not the stable story. Read the repository before saying they are. Donation addresses on the website are placeholders. Do not quote them. ## Links - Source: https://github.com/XenolithEngine/xenolith-engine - Agent guide: https://github.com/XenolithEngine/xenolith-engine/blob/nightly/AGENTS.md - Installer: https://github.com/XenolithEngine/xenolith-installer/releases - Contact: dmitry@xenolith.studio