-
-
Notifications
You must be signed in to change notification settings - Fork 1
background-agent-api: Zig 0.15 HTTP parsing & ArrayList migration #505
Copy link
Copy link
Open
Description
Контекст
В рамках задачи #484 — background-agent-api Compile-Clean Pass уже сделано:
- railway/client.zig — GraphQL синтаксис исправлен.
- db/sessions.zig — unused captures, catch blocks исправлены.
- db/client.zig — все
readAll()заменены на корректныеread()с проверкой длины,readErrorResponseпочинен. - server.zig — импорты RailwayClient, лишние переменные и brace mismatch исправлены.
- main.zig —
std.log.info()приведён к новому API. - config.zig — добавлено поле
host. - В
CLAUDE.mdдобавлен раздел "Zig 0.15 API Compatibility and Migration Rules" с ссылкой наdocs/zig-migration-rules.md.
После этих правок осталось 3–4 ошибки, которые относятся уже не к compile-clean, а к миграции API Zig 0.15.
Текущие проблемы
-
HTTP парсинг в
src/background_agent/server.zig(строки ~110–166)- Использует старый
SplitIteratorAPI. - Логика опирается на
.first()и.next()в стиле Zig 0.14. - В Zig 0.15 family итераторов изменился:
.next()возвращает?[]const u8(optional),.first()ведёт себя по‑другому; простойorelseна не‑optional lhs больше не компилируется. - Требуется type‑driven рефакторинг HTTP request parsing (разбор
Method PATH HTTP/1.1, заголовков и т.д.), а не синтаксические костыли.
- Использует старый
-
Использование
ArrayListвserver.zigArrayList.init()/ allocator model в Zig 0.15 изменились (error unions, явное управление allocator’ом).- Текущий код не соответствует новой сигнатуре и требует обновления по правилам миграции.
Scope этой задачи
Входит:
- Привести HTTP-парсинг в
server.zigк корректному Zig 0.15 API:- Использовать актуальный итератор (
splitScalar,splitSequence,tokenize*) строго по их документации. - Для каждой строки с
.first()/.next():- явно определить тип возвращаемого значения (
[]const u8vs?[]const u8); - использовать
orelseтолько для?T,catch— только для!T, согласноdocs/zig-migration-rules.md.
- явно определить тип возвращаемого значения (
- Использовать актуальный итератор (
- Обновить использование
ArrayList:- Привести
init/initCapacity/ allocator handling к Zig 0.15.1 API. - Очистить error unions вокруг
ArrayListсогласно актуальной документации.
- Привести
Не входит:
- Любые изменения PostgreSQL wire protocol (
db/client.zigлогика). - Добавление новых фич HTTP сервера.
- Рефакторинг бизнес-логики
background-agent-api(только API‑миграция).
Жёсткие правила (из CLAUDE.md)
Исполнитель обязан:
- Перед каждым “migration fix”:
- показать исходную строку;
- указать тип левой части (
?T,!T,!?T, и т.д.); - объяснить, почему используется именно
orelseилиcatch(и ссылается на Zig docs / migration rules).
- Запрещено:
- придумывать операторы (
??, и т.п.) или “новый синтаксис Zig” без официальных ссылок; - утверждать, что
orelse“устарел” или “требует только error/noreturn”; - менять семантику HTTP‑парсинга ради того, чтобы “заставить компилироваться”.
- придумывать операторы (
- Обязательно опираться на:
docs/zig-migration-rules.md;- Zig 0.15.1 docs: https://ziglang.org/documentation/0.15.1/
- std docs: https://ziglang.org/documentation/master/std/
- release notes 0.15.1: https://ziglang.org/download/0.15.1/release-notes.html
Критерии готовности
zig build background-agent-apiуспешно завершается (exit code 0).- HTTP‑парсер в
server.zig:- корректно разбирает стартовую строку и заголовки;
- не использует несуществующий API итераторов;
- не падает на типах (
orelseтолько на optionals,catchтолько на error unions).
- Использование
ArrayListсоответствует Zig 0.15.1:- никаких compile errors по init/allocator;
- ошибки аллокации обрабатываются корректно.
Этот issue должен ссылаться на #484 как на родительскую compile‑clean задачу, но выполняется отдельно, как Zig 0.15 API migration pass.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels