AWF — сайт одним исполняемым файлом
Сервер приложений, в котором сайт, портал или API пишутся на Python, Lua или TCL, а всё, что под ними, — сеть, протоколы, шифрование, кластер — компилированное ядро AWH без единой сторонней зависимости.
Сегодня веб-портал — это стек из двадцати частей
- nginx или Apache впереди, отдельный процесс приложения позади — две конфигурации, два журнала, две точки отказа.
- Интерпретатор с менеджером пакетов и десятками зависимостей — у каждой своя версия, свои уязвимости, свой темп обновлений.
- Отдельные службы под очереди, кэш, поиск, планировщик — ещё четыре демона под наблюдение.
- Контейнеры, чтобы всё это вообще воспроизводилось.
Что нужно разработчику
Один инструмент: написал обработчик — получил работающий сайт. Развернуть то же самое на Windows, ARM или BSD — не отдельный проект, а та же команда.
Один исполняемый файл — вся площадка
AWF ставится одним файлом и сразу является веб-сервером, средой исполнения сценариев, кластером процессов и набором из тридцати готовых модулей.
1 · Запрос
HTTP/1.1, HTTP/2, HTTP/3 или WebSocket приходит в ядро и разбирается компилированным кодом.
2 · Сценарий
Ядро находит сценарий по доменному имени; обработчик на Python, Lua или TCL получает разобранный запрос.
3 · Ответ
Сжатие, шифрование, отдача — снова на стороне ядра; сценарий об этом не думает.
Архитектура не придумывается с нуля: слой сценариев с зеркальными модулями, привязкой к доменам, очередями и шифрованием сценариев годами работает в нашем закрытом проекте, где пользовательский код исполняется на сервере под нагрузкой.
Три языка — три разные причины
Lua · порог входа
Один из простейших языков в мире: описание умещается в брошюру, синтаксис осваивается за день. Начинающего разработчика можно учить прямо на задаче. Самый лёгкий интерпретатор — для горячих путей.
TCL · власть над системой
Язык, сросшийся с оболочкой ОС: естественно управляет системой и внешними программами. Сайт становится панелью управления серверами и оборудованием; наследие телекома и САПР переносится без переписывания.
Python · весь мир пакетов
Самый популярный язык и полная поддержка pip без ограничений. Нейросети, обработка данных, компьютерное зрение — прямо в обработчике страницы, без россыпи отдельных служб.
Все три получают зеркально одинаковый набор модулей: web, ws, tcp, dns, ntp, fs, regexp, csv, hash, syslog, timer, hnsw, bloom, lev и другие — с одинаковыми именами методов и поведением.
Модули на разных языках работают как одно целое
Каждый модуль пишется на подходящем ему языке, и любой модуль вызывает функции любого другого по имени, не зная, на чём тот написан. Платформа держит общий реестр функций и сама доставляет вызов в нужный процесс.
# TCL · обслуживание catalog call "reindex" $ids
-- Lua · каталог ai:call("embed", text)
# Python · умный поиск shop.call("price", sku)
Команда не спорит о языке, модуль переписывается на другой язык без правки остальных, а библиотека модулей ставится в любой проект. Записи иллюстрируют проектируемый интерфейс; форма вызова закрепляется при переносе слоя сценариев.
Языки — часть проекта, а не зависимость
| Язык | Версия | Как собран |
|---|---|---|
| Python | 3.13 | оптимизация по профилю исполнения (PGO), ThinLTO, -O3 |
| Lua | 5.4 | семь платформенных правок: ARM, FreeBSD, Solaris, Windows, Windows ARM |
| TCL | main | статическая 64-разрядная сборка |
Дистрибутивы так не собирают: системный Python собран ради совместимости, без PGO и сквозного связывания. Пакеты pip ставятся встроенным интерпретатором в каталог площадки — весь мир библиотек доступен, но живёт внутри платформы, а не в системе заказчика.
Процессы вместо потоков
AWF строится на кластере процессов AWH, который работает и под Windows: мастер принимает подключения и раздаёт их работникам.
- Изоляция площадок. Сценарий соседа не прочитает вашу память и не уронит ваш процесс.
- Перезапуск упавшего. Кластер поднимает погибший процесс, площадка продолжает отвечать.
- Потолок Python снят. Глобальная блокировка интерпретатора живёт внутри процесса — восемь процессов, восемь ядер.
- Память под контролем. Утечка в сценарии ограничена своим процессом и обнуляется его перезапуском.
- Обновление без простоя. Работники заменяются по одному, мастер продолжает принимать подключения.
- Одна установка — сотни площадок, каждая своим процессом, со своими правами, лимитами и журналом.
Проект уезжает к заказчику одним приложением
Сценарии площадки шифруются и упаковываются вместе с платформой. Заказчик получает работающий веб-проект как единое приложение — без исходных кодов и без понимания, как он устроен внутри.
- Исходники не уезжают: код запечатан под AES-GCM, ключ разделён на части, запуск проверяется ключом лицензии.
- Архитектура не раскрывается: снаружи виден один исполняемый файл.
- Закрытый контур: ни доступа к нашим серверам, ни интернета.
Что это меняет
Студия продаёт результат, а наработки остаются у автора. Продуктовая компания ставит коробочную версию на серверы клиента, не отдавая продукт целиком. Каталог готовых решений — форум, корзина, личный кабинет — без утечки исходников.
Где AWF сильнее привычных стеков
| AWF | PHP + nginx | Node.js | Python + Django | |
|---|---|---|---|---|
| Частей в поставке | одна | две и больше | две и больше | три и больше |
| Внешних зависимостей ядра | ноль | десятки | сотни | десятки |
| HTTP/3 своей реализацией | да | через сервер впереди | частично | через сервер впереди |
| Языков для логики | три | один | один | один |
| Изоляция площадок процессами | встроена | снаружи | снаружи | снаружи |
| ГОСТ в комплекте | да | внешний модуль | нет | внешний модуль |
| Защита исходников при поставке | встроена | нет | нет | нет |
| Зрелость экосистемы | начинаем | огромная | огромная | огромная |
Последняя строка честная: мы не выигрываем числом готовых библиотек. Мы выигрываем там, где стек надо развернуть, изолировать и обслуживать малой командой — на своих серверах, на нестандартной системе, под нагрузкой.
Три этапа
Этап 1 · Ядро площадки
- слой сценариев на AWH v5
- кластер процессов
- маршрутизация по доменам и статика
- сессии, формы, загрузка файлов
Этап 2 · Продукт
- панель управления площадками
- лимиты и журналы площадок
- документация и примеры на трёх языках
Этап 3 · Экосистема
- каталог сценариев с лицензированием
- шаблоны: портал, магазин, база знаний
- умные функции на векторном индексе