Глава 1 / 51
Том 1 · Старт и ментальная модель (открытие)

Введение: что такое XServer и как читать эту книгу

Том 1 закладывает три понятия на всю книгу — поколения, lease и утилизацию при нуле ссылок. Эта глава сначала отвечает на самый фундаментальный вопрос: что именно такое XServer и какой шаг «написания сервера» он меняет.

Обзор

Позиционирование: в этой главе нет кода — только насмотренность. Прочитав, вы сможете точно сказать, что является артефактом развёртывания XServer, чем он отличается от вашего текущего стека и какие тома книги вам нужны. Если вы уже запускали демо и понимаете «исходники и есть развёртывание» — пробегите 1.1 и 1.3 и переходите к главе 2.

Сначала определение в одно предложение:

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 Дорожная карта книги

Учебник XServer (5 томов, 51 глава) Том 1 Старт и модель Том 2 Конфигурация ┌──────────────────┐ ┌──────────────────┐ │ поколения·lease │ ───▶ │ xs.json по полям │ │ мин. приложение │ │ vhost·серт·откат │ └──────────────────┘ └────────┬─────────┘ │ ┌──────────────────┐ ┌────────▼─────────┐ │ Том 5 Практика │ ◀─── │ Том 3 Протоколы │ │ REST·шлюз·фермы │ │ HTTP·WS·TCP·UDP │ └──────────────────┘ └────────┬─────────┘ ┌────────▼─────────┐ │ Том 4 Перезагрузка│ │ передача·GC·антипат│ └──────────────────┘
  • Том 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 закрывать по блокам «Что дальше»

Частые ошибки

Поиск админ-панели / xsdbg
Симптом
После старта вы обращаетесь к административной точке вроде __xs/status для инспекции — и получаете 404.
Причина
Это встроенное отладочное приложение исторической линейки (эпохи vnext). Текущая основная ветка XServer сознательно не содержит плоскости управления — хост даёт сетевой стек, скриптовый хост и гарантии стабильности; панель управления — уровень приложения.
✗ Неверное ожидание
curl http://127.0.0.1:9080/__xs/status
/* ожидание встроенной админ-точки → 404 */
✓ Правильный путь
/* Пишите админ-маршруты в своём скрипте:
 * инспекция/перезагрузка — обычные бизнес-маршруты */

Упражнения

БазовыйИнвентаризация поверхности миграции

Перечислите состав одного вашего действующего сервиса (маршрутизация, статика, база данных, задачи по расписанию, сертификаты) и пометьте каждый пункт: после миграции на XServer он ложится в какое поле xs.json, в какую часть каталога приложения или требует собственного модуля.

Приёмка: каждый пункт попадает в один из классов «конфигурация / статический слой / модуль скрипта / встроенная возможность xrt», ничего не висит как «не знаю куда».
ПродвинутыйРасширение сравнительной таблицы

Добавьте в таблицу 1.2 фреймворк, которым реально пользуетесь (например Spring / FastAPI / Gin), и заполните три столбца: «артефакт развёртывания / бизнес-логика / цена правки одной строки».

Приёмка: вы можете указать, где именно в каждом стеке сцеплены «среда исполнения и бизнес-код».

Итоги

ТезисВывод
Определение XServerОднофайловый C-сервер приложений: один exe + каталог исходников = полное развёртывание
АртефактИсходники и есть развёртывание; встроенный TCC компилирует в нативный код, ноль интерпретатора
Поверхность возможностейСкрипты вызывают 3 030 API xrt по адресу; без песочницы — для доверенной эксплуатации
Структура книги5 томов, 51 глава; восьмичастный шаблон — контракт
Разделение с xrtОсновы — прямыми ссылками в учебник xrt; книга покрывает только слой XServer
Что дальше по xrt