Введение: что такое XServer и как читать эту книгу
Том 1 закладывает три понятия на всю книгу — поколения, lease и утилизацию при нуле ссылок. Эта глава сначала отвечает на самый фундаментальный вопрос: что именно такое XServer и какой шаг «написания сервера» он меняет.
Обзор
Сначала определение в одно предложение:
XServer — однофайловый сервер приложений на C: один исполняемый файл (с встроенными компилятором и рантаймом) плюс один каталог исходников на чистом C — это полное серверное развёртывание с горячей перезагрузкой.
Три ключевых слова в этом предложении соответствуют трём сюжетным линиям книги: одиночный файл (рантайм и инструментарий полностью встроены — том 2 о сборке и поставке), каталог исходников на C (приложение — сами исходники, а не прекомпилированный артефакт — тома 1 и 3 о том, как писать) и горячая перезагрузка (правка кода без простоя — глубокое погружение в томе 4).
1.1 Что такое XServer
Классическая разработка C-сервера — это «написал → скомпилировал → слинковал → развернул бинарник → перезапустил», и каждое бизнес-изменение проходит весь конвейер. XServer сворачивает конвейер в рантайм: на целевую машину вы кладёте каталог исходников как артефакт развёртывания; xs.exe компилирует ваш C-код встроенным компилятором TCC при старте и при каждой горячей перезагрузке в машинный код и исполняет его в процессе.
/* Классический C-сервер */
myapp/ → конвейер сборки → myapp.exe + список зависимостей → установка зависимостей → перезапуск
/* xs */
myapp/ = xs.exe (единственный бинарник; компилятор/рантайм/SDK внутри)
+ main.c + modules/ + wwwroot/ + db/ (исходники и есть развёртывание)
→ скопировал — развернул; правишь исходники — горячая перезагрузка
Это не игрушечное «C как скрипты», а осознанный инженерный компромисс: скрипты — доверенный нативный код, в одном процессе с хостом, вызывающий его 3 030 API xrt по адресу — без накладных расходов интерпретатора и без границы FFI; вызов функции остаётся вызовом функции. Плата — отсутствие песочницы: XServer предназначен для доверенных развёртываний под контролем оператора и не принимает недоверенные сторонние скрипты (граница разбирается в главе 44 тома 5).
Фундамент под XServer — xrt: 310 тысяч строк собственного рантайма (TLS 1.2/1.3, HTTP/1.1, WebSocket, событийный цикл на пяти бэкендах, корутины, отладка памяти). Эта книга не переучивает xrt: где важны основы xrt, блок «Что дальше» в конце главы ссылается на соответствующие главы учебника xrt.
1.2 Сравнение с альтернативами
| Стек | Развёртывание | Бизнес-логика | Цена правки одной строки |
|---|---|---|---|
| nginx + модули | бинарник + масса конфигов | в основном конфигурация; C-модули требуют пересборки | reload конфигурации; модули — пересборка всего nginx |
| сервисы Node / Go | рантайм + исходники или бинарник | JS / Go, экосистемы пакетов | перезапуск процесса (PM2/supervisor) |
| классический C-сервер | свой конвейер сборки | C, своё или сторонние библиотеки | компиляция + развёртывание + окно простоя |
| XServer | один exe + каталог исходников | C, прямые вызовы 3 030 встроенных API | горячая перезагрузка; старые соединения ничего не замечают |
Разница одной фразой: остальные стеки управляют «средой исполнения» и «вашим кодом» как двумя разными вещами; XServer упаковывает их в один файл, один процесс и один жизненный цикл.
1.3 Дорожная карта книги
- Том 1 (гл. 01–06): ментальная модель и инструментарий. Три ключевые главы — 03 (ментальная модель), 04 (минимальное приложение) и 06 (отладка).
- Том 2 (гл. 07–13): xs.json — единственный интерфейс сборки; каждое поле, ограничение и семантика ошибок.
- Том 3 (гл. 14–25): шаблоны разработки четырёх классов протоколов; выбирайте свои.
- Том 4 (гл. 26–31): горячая перезагрузка от «умею запустить» до «понимаю семантику» — откат, передача состояния, ноль утечек.
- Том 5 (гл. 32–43): система расширений, развёртывание и эксплуатация, границы безопасности и три сквозных проекта.
1.4 Контракт шаблона глав
Все 51 глава следуют единой восьмичастной структуре. Глава 1 превращает шаблон в контракт — любая последующая глава, ему не соответствующая, считается дефектом главы, а не стилевым выбором:
| № | Название | Назначение |
|---|---|---|
| 1 | Обзор | Место главы в книге, стратегия чтения, можно ли пробежать |
| 2 | Введение (N.1) | От реальной боли, а не от списка API |
| 3 | Понятия (N.2) | Ментальные модели, сравнительные таблицы, схемы состояний |
| 4 | Примеры (N.3) | Набор из пяти: имя файла + происхождение + команда запуска + реальный вывод + «что только что произошло» |
| 5 | Контракт (N.4) | Жёсткие правила: потоки / владение / жизненный цикл |
| 6 | Частые ошибки | Симптом → причина → неправильный/правильный способ бок о бок |
| 7 | Упражнения | Три уровня (базовый / продвинутый / вызов), у каждого критерии приёмки |
| 8 | Итоги | Шпаргалка: все выводы главы на одном экране |
Каждая глава заканчивается двумя фиксированными блоками: API, затронутые в главе (ссылки на справочные страницы книги с числом записей) и что дальше по xrt (ссылки на учебник xrt). У каждого блока кода с меткой «проверено на реальной машине» вывод — настоящий, включая неподделываемые детали: динамические порты и реальные метки времени.
1.5 Маршруты читателей
| Кто вы | Рекомендуемый маршрут |
|---|---|
| Бэкенд-разработчик | Том 1 → Том 3 по своим протоколам → Том 4 (обязательно) → проекты Тома 5 |
| Эксплуатация / деплой | гл. 01–02 → Том 2 → гл. 42–39 |
| Оценщик | гл. 01–04 + бенчмарк + гл. 44 (границы безопасности) |
| Контрибьютор | Читать подряд; пробелы по xrt закрывать по блокам «Что дальше» |
Частые ошибки
- Симптом
- После старта вы обращаетесь к административной точке вроде
__xs/statusдля инспекции — и получаете 404. - Причина
- Это встроенное отладочное приложение исторической линейки (эпохи vnext). Текущая основная ветка XServer сознательно не содержит плоскости управления — хост даёт сетевой стек, скриптовый хост и гарантии стабильности; панель управления — уровень приложения.
curl http://127.0.0.1:9080/__xs/status
/* ожидание встроенной админ-точки → 404 *//* Пишите админ-маршруты в своём скрипте:
* инспекция/перезагрузка — обычные бизнес-маршруты */Упражнения
Перечислите состав одного вашего действующего сервиса (маршрутизация, статика, база данных, задачи по расписанию, сертификаты) и пометьте каждый пункт: после миграции на XServer он ложится в какое поле xs.json, в какую часть каталога приложения или требует собственного модуля.
Добавьте в таблицу 1.2 фреймворк, которым реально пользуетесь (например Spring / FastAPI / Gin), и заполните три столбца: «артефакт развёртывания / бизнес-логика / цена правки одной строки».
Итоги
| Тезис | Вывод |
|---|---|
| Определение XServer | Однофайловый C-сервер приложений: один exe + каталог исходников = полное развёртывание |
| Артефакт | Исходники и есть развёртывание; встроенный TCC компилирует в нативный код, ноль интерпретатора |
| Поверхность возможностей | Скрипты вызывают 3 030 API xrt по адресу; без песочницы — для доверенной эксплуатации |
| Структура книги | 5 томов, 51 глава; восьмичастный шаблон — контракт |
| Разделение с xrt | Основы — прямыми ссылками в учебник xrt; книга покрывает только слой XServer |
- учебник xrt · Введение — общая с этой книгой методология глав
- быстрый старт xrt — двухминутная проверка нижележащего рантайма