контракт 14 символов · слой хоста 23 API · xrt 3 030 символов · расширения 843 · поиск по сайту 147 записей

Справочник API

Три слоя символов: контракт скриптов (хост ищет по имени) → слой XServer (топология / перезагрузка / таймеры) → полный экспорт xrt (прямые вызовы через таблицу символов, ноль FFI). Все сигнатуры сверены с xsbase.h и xrt_decl.h.

Контрактные символы

Хост ищет колбэки по имени символа в результате компиляции TCC (xsbase.h); каждый из них необязателен. Имена символов и есть протокол — без функций регистрации и базовых классов.

СимволПротоколСигнатура
ServiceInitвсеvoid (XS_HostInfo*)
ServiceUnitвсеvoid (XS_HostInfo*)
ServiceSwapвсеbool (XS_HostInfo*, xvalue**)
RequestProchttpXS_RequestResult (XS_HttpReq*)
WsOpenwsvoid (XS_HostInfo*, xwsstream*)
WsTextwsvoid (XS_HostInfo*, xwsstream*, xstrview)
WsBinarywsvoid (XS_HostInfo*, xwsstream*, xbytesview)
WsPingwsvoid (XS_HostInfo*, xwsstream*, xbytesview)
WsPongwsvoid (XS_HostInfo*, xwsstream*, xbytesview)
WsClosewsvoid (XS_HostInfo*, xwsstream*, uint16, xstrview)
EventOpentcpvoid (XS_HostInfo*, XS_StreamConn*)
EventDatatcpvoid (XS_HostInfo*, XS_StreamConn*, xnetbuf*)
EventClosetcpvoid (XS_HostInfo*, XS_StreamConn*, xnetresult, const xerror*)
EventDgramudpvoid (XS_HostInfo*, xnetudp*, const xnetudpmessage*)

RequestProc возвращает трёхзначный результат: XS_OK (ответ отправлен, keep-alive продолжается) / XS_FALLBACK (передать статическому слою или 404) / XS_TAKEOVER (приложение перехватывает соединение). Семантика — в руководстве · контракт скриптов. Полный справочник (сигнатуры / момент / потоки / примеры) →

API слоя XServer (23)

Прямая связь внутри процесса: реализованы однопроцессным хостом и разрешаются по адресу через tcc_add_symbol, без экспортных украшений. Всё остальное — символы xrt или расширений. Полный справочник (сигнатуры / владение / примеры) →

Запросы топологии

Горячая перезагрузка

Таймеры · развёртывание · передача

Рантайм xrt (3 030 символов с индексом по доменам)

Скрипты видят xrt в полном объёме: публичные API 91 модуля вызываются по адресу через таблицу символов в точности как сам хост. Краткая карта доменов (полные прототипы — во встроенном в VFS /xs/xrt_decl.h; карточки ведут в справочник API xrt, или смотрите наш индекс по доменам):

Сетевое ядро371+

xrtNet / Tcp / Udp / NetServer / NetStream — соединения, слушатели (SHARED / REUSE_PORT), дейтаграммы, разрешение адресов

TLS 1.2 / 1.3252+

xrtTls / Tls12 / Tls13 — рукопожатия, record, возобновление PSK / Ticket, взаимная аутентификация

Сертификаты / ASN.1123+

xrtX509 / Der / Pem — построение и проверка цепочек, name constraints, CRL, системные хранилища доверия

HTTP / 1.1149

xrtHttp / Http1 — парсер (35 кодов ошибок), ResponseWrite, Chunk, BodyRead

WebSocket104

xrtWs — кадры, потоки, Upgrade, permessage-deflate, чтение/запись со счётчиком ссылок

Конкурентность≈220

xrtCo / Channel / Task / Future / Executor / Thread — корутины, каналы в стиле Go, пул потоков с вытеснением

Динамические значения / JSON181

xrtValue 116 + Json / Xson 65 — объекты / массивы / деревья, сериализация, запросы

Строки / Unicode133

xrtStr / Utf8 / Utf16 / Utf32 — представления, преобразование, регистр, валидация

Регулярки / шаблоны91

xrtRegex / RegexSet / Pattern — NFA-регулярки, пакетно прекампилированные pattern маршрутов

Контейнеры≈160

Array / List / Map / Set / AVL / Stack / Buffer / SlotMap

Файлы / пути118

xrtFile 45 / Path 38 / Dir 35 — синхронный и асинхронный IO, деревья каталогов, нормализация путей

Память≈90

xrtMem / Temp / Pool — аллокация, временные аллокаторы, пулы, отчёты отладки памяти

Логирование76

xrtLog — уровни, форматирование, несколько приёмников

Шаблоны32

xrtTemplate — компиляция / рендеринг, {$var} и {#foreach}

Процессы / система≈40

xrtProcess / Signal / Environment — дочерние процессы, сигналы, переменные окружения

Криптография / сжатие118+

Семейство SHA, HMAC / HKDF / PBKDF2, AES, RSA / ECDSA / Ed25519; сжатие miniz

Счётчики доменов агрегируют семейства префиксов (xrtTcp входит в сетевое ядро); не перечисленные малые домены (Time / Atomic / Math / Random / Html / Codec …) дополняют итог до 3 030.

Расширение · sqlite (272 символа)

Вкомпилируется вариантом сборки build.bat sqlite. Полный движок SQLite линкуется в хост статически; в скриптах достаточно #include <sqlite3.h> (даёт VFS), режим FULLMUTEX для нескольких worker'ов. Полный справочник (соединения / пять шагов оператора / транзакции) →

/* Реальное использование из demo-single/modules/database.h */
iResult = sqlite3_open_v2(sDBFile, &G_DB,
    SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
(void)sqlite3_exec(G_DB, "CREATE TABLE IF NOT EXISTS ...", NULL, NULL, NULL);

sqlite3_prepare_v2(G_DB, sSQL, -1, & pStatement, NULL);   /* prepared statement */
sqlite3_bind_text(pStatement, 1, sName, -1, SQLITE_TRANSIENT);
sqlite3_step(pStatement);
sqlite3_finalize(pStatement);

Экспортируется полный нативный API SQLite (open/exec/prepare/step/bind/finalize/backup/…, 272 символа) — пять семейств и пять шагов оператора разобраны в справочнике sqlite; полная практика — в главе 32.

Расширение · xtp2 (13 функций)

Вкомпилируется вариантом сборки build.bat xtp. Библиотека кадров бинарного протокола прикладного уровня поверх упорядоченных потоков байтов: заголовок 32 байта, типы REQUEST / RESPONSE / PUSH / EVENT, потоковый инкрементальный разбор, полноценная система limits. Проверена libFuzzer на сквозную согласованность и потоковый автомат состояний.

xtp2_processor* pRx;
if ( xtp2_create(NULL, &pRx) != XTP2_OK ) { ... }

/* В каждом цикле чтения открытого текста TCP / TLS: */
while ( iSize ) {
    size_t iUsed;
    xtp2_message tMsg;
    xtp2_result r = xtp2_feed(pRx, pBytes, iSize, &iUsed, &tMsg);
    pBytes += iUsed; iSize -= iUsed;
    if ( r < 0 ) break;              /* залипающая ошибка */
    if ( r == XTP2_MESSAGE ) { ... }  /* использовать/скопировать tMsg и продолжать feed */
    if ( r == XTP2_MORE ) break;        /* мало данных, ждём следующий раунд */
}
/* На EOF — xtp2_finish(pRx) проверяет полуразобранные кадры, затем xtp2_destroy */
Все 13 сигнатур и официальный пример — в справочнике xtp2; практика сборки TCP — в главе 33. Сейчас xtp2 позиционируется как доступный скриптам примитив кодека протокола: приёмопередачу TCP и автомат состояний протокола приложение собирает само в колбэке EventData — серверная интеграция протоколов в дорожной карте.

Расширение · xllm (68 функции)

Вкомпилируется вариантом сборки build.bat xllm. Ядро вызова LLM-сервисов (vendored из extlibs xrt, базовый слой v3.0.0): один вызов, один API, три диалекта провайдеров (Chat Completions / OpenAI Responses / Anthropic Messages). Все зависимости времени выполнения — сеть, TLS, JSON, отмена — даёт встроенный в хост полный xrt; скрипту достаточно #include <xllm.h>.

xllm_client_config tConf;
xllm_client* pClient;
xllm_request tReq;
xllm_response* pResp = NULL;
xllm_error tErr;

xllmClientConfigInit(&tConf);
tConf.sBaseUrl   = "https://open.bigmodel.cn/api/paas/v4";
tConf.sApiKey    = sKey;                    /* заимствованный указатель, без копии */
tConf.sModel     = "glm-5.2";
tConf.eProvider  = XLLM_PROVIDER_GLM;
pClient = xllmClientCreate(&tConf, &tErr);  /* по умолчанию владеет своим движком */

xllmRequestInit(&tReq);
xllmRequestAddTextMessage(&tReq, XLLM_ROLE_USER, "Расскажи про XServer одним предложением");
if ( xllmClientComplete(pClient, &tReq, NULL, &pResp, &tErr) == XLLM_RESULT_OK ) {
    /* читаем текстовые блоки / причину завершения / расход, затем xllmResponseDestroy(pResp) */
}
xllmRequestUnit(&tReq);
xllmClientDestroy(pClient);
Все 53 публичные функции ядра импортированы в скрипты и вложенный TCC. xllm только вызывает: он не исполняет инструменты и не ведёт историю диалога (слои xllm-session и xllm-memory в этот вариант не входят). Полное описание применения (профили, вызовы, стриминг и повторы, контракт) — в главе 34; сигнатуры по каждой функции — в каталоге lib/xllm репозитория.

Расширение · почтовое семейство (283 функции)

Вкомпилируется вариантом build.bat xsmtp (или xpop3 / ximap — xmail подтянется автоматически). xmail — база MIME: кодеки (QP/Base64), кодировки, разбор адресов и дат, параметры и multipart, дерево сообщения, конструкторы и проводной формат; три протокольных клиента делят его транспорт и SASL. TLS даёт xrt хоста. #include <xsmtp.h> разрешает всё семейство.

283 символа на четыре библиотеки (xmail 89 / xsmtp 44 / xpop3 48 / ximap 102), импортированы все. Учебник — глава 36; сигнатуры по семействам — почтовый справочник.

Расширение · md4c (2 функции)

Вкомпилируется вариантом build.bat md4c. Разбор CommonMark и рендеринг HTML: md_parse — поток событий с колбэками (вход/выход блоков и span'ов, куски текста); md_html рендерит одним шагом поверх; таблицы, зачёркивание и списки задач включаются флагами. Заголовки самодостаточны, зависимостей на линковку нет. Осторожно: указатели колбэков не проверяются — ведите md_parse с полностью заполненной структурой или берите md_html с собственными колбэками.

Рендер в буфер
void sink(const MD_CHAR* p, MD_SIZE n, void* u) { buf_append(u, p, n); }
md_html(sMarkdown, iLen, sink, &tBuf, MD_DIALECT_GFM, 0);
Естественный партнёр шаблонного слоя гл. 19: Markdown питает контролируемые блоки шаблона. Учебник — глава 37.

Расширение · xacme (20 функций)

Вкомпилируется вариантом build.bat xacme. Клиент сертификатов ACME (RFC 8555): регистрация счёта, заказ, вызов dns-01 и получение сертификата одной остановкой (xacmeClientIssue); xacmeClientIssueStored добавляет дисковое хранилище с правилом «продлевать только при малом остатке срока». DNS-провайдер Aliyun встроен; сторонние подключаются чистыми структурами. Свой синхронный HTTPS-транспорт и зонд распространения TXT — зависит только от xrt хоста.

20 символов (13 публичных + 5 входов потока + 2 приращения). Учебник — глава 38, полные сигнатуры — справочник xacme; стыкуется с сертификатами развёртывания гл. 42.

Расширение · qrcodegen (10 функций)

Вкомпилируется вариантом build.bat qrcodegen. Генератор QR-кодов (Nayuki, MIT) плюс слой вывода PNG: 9 функций вверх по течению (три входа кодирования Text/Binary/Segments, определение числового/буквенно-цифрового режима, расчёт буфера, чтение матрицы getSize/getModule) плюс qrcodegen_png для одношагового 1-битного grayscale PNG (IDAT сжимается потоком zlib xrt, CRC32 локально). Типовые сценарии: 2FA provisioning (otpauth:// URI в QR), динамические платёжные коды, маршрут GET /qr?text=..., QR в письмах (с xsmtp).

Все 10 символов импортированы; вверх по течению ноль аллокаций (буферы даёт вызывающий), слой PNG возвращает буфер xrtMalloc. Полные сигнатуры — справочник qrcodegen.

Расширение · xjwt (24 функции)

Включается сборкой build.bat xjwt. Подпись и проверка JWT (RFC 7519) / JWS (RFC 7515): HS256/384/512, семейство RS256/384/512 (ключи PKCS#8/PKCS#1), ES256 (DER-кодировка, двусторонняя совместимость с OpenSSL); выбор ключей JWKS (RFC 7517) по kid; тройка кэша публичных ключей для высокочастотной проверки. Claims передаются как xvalue* (нулевая мостовая прослойка на уровне скриптов), код ошибки читается одной строкой через xjwtLastError(), aud принимает строки и массивы. Четыре раунда аудита, включая interop с OpenSSL, fuzz и замер нулевых утечек в устойчивом состоянии.

Базовая безопасность: нецелые exp/nbf отклоняются, alg=none и подмена алгоритма блокируются на всех путях, iss/aud сравниваются за константное время. Полные сигнатуры — в справочнике xjwt.

Расширение · xoauth2 (25 функций)

Включается сборкой build.bat xoauth2. Клиент OAuth 2.0 (RFC 6749): поток кода авторизации + PKCE (RFC 7636) + обновление токенов + пять пресетов провайдеров (GitHub/Google/WeChat/Microsoft/Custom); помощники OIDC (однократное сжигание nonce, HttpGet для JWKS, GetUserInfo). Транспорт инъектируется через xoauth2httpproc (моки прогоняют весь поток офлайн); в комплекте — реализация на xrt net/tls/http1 (стековая и кучная версии). Четырёхуровневые коды ошибок напрямую отображаются на семантику HTTP. Связь с xjwt — на данных, нулевая зависимость линковки: OIDC-логин собирается из восьми строк клея, без requires.

Базовая безопасность: однократное сжигание state/nonce/verifier, полное form-кодирование тела запроса, обнуление токенов перед освобождением. Полные сигнатуры и пример восьмистрочного клея — в справочнике xoauth2.

Расширение · xwork (42 функции)

Включается сборкой build.bat xwork (автоматически тянет xllm + xllm-session). Вершина AI-стека (v2.3.1): оркестрация агентов, регистрация и выполнение инструментов, политика рабочей области, типы субагентов, уведомления и компакция. release/agent-demo/ — сквозное практическое подтверждение.

Расширение · webview (2 функции) + узел app

Включается сборкой build.bat webview. Окно рабочего стола (WebView2): на стороне скрипта только 2 функции-проба; управлением владеет узел class: "app". С односоставной публикацией = десктоп-exe в один клик.

Встроенные ресурсы VFS

Всё необходимое для компиляции скриптов уже внутри бинарника (сжатие LZMA, 350 ресурсов в варианте all) — целевой машине не нужны никакие заголовки и библиотеки:

ПутьСодержимое
/xs/xsbase.hКонтрактный заголовок (та же версия, что у бинарника)
/xs/xrt_decl.hПолные публичные объявления xrt (3 030 прототипа API)
/xs/libtcc.hAPI вложенной компиляции
/tcc/include_win/**Заголовки Windows SDK (включая winapi, curl)
/tcc/include_linux/**Стандартные заголовки для Linux
/tcc/lib/*.defkernel32 / msvcrt / user32 / gdi32 / shell32 / ole32 / oleaut32 / ws2_32 / imm32
/tcc/lib/libtcc1.aВспомогательная библиотека рантайма TCC

Состав ресурсов VFS и различия вариантов — в справочнике VFS. На Windows msvcrt и kernel32 монтируются автоматически в режиме компиляции в память; 7 системных библиотек выше хост экспортирует явно — процессы, COM, сокеты и Shell Win32 API напрямую доступны в скриптах. sqlite3.h / xtp2.h входят только в соответствующие варианты.