Files
Glint-Runtime/docs/ru/README.md

49 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Glint Runtime — документация
(да, пока-что написанное нейросетью. Её объяснений достаточно)
Бэкенд для исполнения скомпилированного байткода (.glbc) Glint UI-фреймворка. Загружает байткод, интерпретирует VDOM, применяет CSS-подобные стили, выполняет Rhai-скрипты и рендерит результат через Iced (native GPU-ускоренный GUI).
## Структура проекта
- `src/main.rs` — точка входа, CLI парсинг
- `src/lib.rs` — публичное API crate'а
- `src/app.rs` — GlintApp: Iced-приложение, update/view
- `src/cli.rs` — CLI команды compile/run
- `src/renderer.rs` — Iced-виджеты: преобразование Element → iced::Element
- `src/perf.rs` — PerfScope: замер производительности по фазам
- `src/interpreter/mod.rs` — Interpreter: загрузка bytecode, VDOM eval
- `src/interpreter/types.rs` — Element, VNode, FlatVDom, Value, InternedStr, Document
- `src/interpreter/style.rs` — StyleSheet, StyleRule, StyleIndex, StyleCache, ComputedStyle
- `src/interpreter/reactive.rs` — ReactiveTracker: граф зависимостей
- `src/interpreter/rhei.rs` — RheiContext: интеграция Rhai скриптов
- `src/interpreter/reader.rs` — Reader: чтение .glbc bytecode
- `src/interpreter/opcodes.rs` — OP_* константы байткода
## Связанные репозитории
- `glt` (компилятор .gltm/.glts → .glbc)
## Ключевые концепции
- **Document** — загруженный .glbc файл: дерево Element'ов, таблица стилей, переменные
- **Element** — узел VDOM: type_name, properties, children, computed_style, element_id, content_hash
- **VDOM** — виртуальное дерево, результат интерпретации байткода
- **StyleSheet** — таблица стилей с индексированным поиском и кэшем computed style
- **ReactiveTracker** — отслеживает зависимости element → variable, dirty_set
- **RheiContext** — компилирует и выполняет Rhai-скрипты, кэширует AST
- **ComputedStyle** — результат применения CSS-правил: ~40 полей (color, padding, font-size, etc.)
## Фазы оптимизации
См. [ARCHITECTURE-IMPROVEMENT-PLAN.md](../ARCHITECTURE-IMPROVEMENT-PLAN.md).
**Реализовано:** фазы 38, 10, 9.19.2 (content_hash, стабильные Iced widget ID).
**Осталось:**
| Фаза | Описание | Оценка ускорения |
|------|----------|-----------------|
| 0 | Профилирование (bench, flamegraph) | — |
| 1 | Типизированные Value в стилях вместо HashMap<String, String> | 23× |
| 2 | String interning для горячих путей | 1.52× |
| 9.3 | Кэш Iced-виджетов по content_hash | 1.52× (render) |