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

3.2 KiB
Raw Permalink Blame History

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.

Реализовано: фазы 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)