Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Light
Light — декларативный реактивный GUI-фреймворк для Rust. Вы пишете HTML-разметку
с директивами (v-if, v-for, v-model), описываете состояние реактивными
свойствами (#[proxy]), а Light компилирует шаблоны на этапе сборки в
Rust-код, строящий виртуальный DOM. Окна создаются на winit, а программно
нарисованный кадр показывается через softbuffer; wgpu доступен отдельной
фичей wgpu-backend.
- Компиляция вместо интерпретации. Шаблоны превращаются в Rust на этапе сборки: в рантайме нет HTML-парсера и интерпретатора разметки.
- Гранулярная реактивность. Изменение свойства перерисовывает только зависящие узлы виртуального дерева.
- Нативные окна. Безрамочные окна, кастомный titlebar, модальные окна и несколько окон — из коробки.
- Изображения. PNG встраиваются в бинарник на этапе компиляции:
<image src="…">и иконка окнаicon="…"(фичаimage-support). - Платите только за используемое. Каждая подсистема — Cargo-фича; код выключенных возможностей не попадает в бинарник.
- Компактные бинарники. Программный рендеринг через
softbufferвключён по умолчанию: release-сборка демо занимает ~1.7 MB вместо ~7.7 MB сwgpu.
Статус
Текущая версия — 0.15.5. Проект в стадии пре-1.0: публичный API ещё не стабилен и может меняться между минорными версиями.
Быстрый старт
Создать проект с готовыми компонентами и найти сторонние можно через CLI:
Вручную проект собирается так:
Cargo.toml:
[]
= "my-app"
= "0.1.0"
= "2021"
[]
= { = "https://github.com/gifoff/light" }
[]
= ["light/dev-mode"]
src/main.rs:
use *;
templates/app.html:
Привет, {{ name }}!
Поздороваться
Создание проекта через CLI
Скелет проекта генерируется одной командой:
Дополнительные компоненты подключаются флагом --with:
form добавляет light-fw-element-form и фичу light/elements-form,
validation — light-fw-behavior-validation и фичу light/validation.
Готовые шаблоны
Вместо пустого окна можно взять showcase-приложение:
Шаблоны и их HTML встроены в бинарник через include_str!. Исходники примеров
лежат в examples/.
Showcase
| Calculator | Todo | Dashboard |
|---|---|---|
![]() |
![]() |
![]() |
Полноценный dashboard с изображениями, вкладками и модальным окном:
Hot Reload и DevTools
Запустите light dev (автоматически находит пакет в текущей папке) — Light
поднимет TCP-сервер на 127.0.0.1:9229 с JSON-снимком UI для будущего
Web UI DevTools и включит горячую перезагрузку.
При изменении templates/*.html применяется мгновенный RELOAD_TEMPLATE (без
пересборки). При изменении исходников .rs происходит инкрементальная
пересборка и подмена бинарника с сохранением состояния окна.
Agent-friendly DevTools (0.16)
Light удобен для автономной разработки с ИИ-агентами: команда
light devtools <cmd> даёт агенту «увидеть» UI (дерево VDOM, раскладка,
поиск элемента, снимок состояния, скриншот) и «потрогать» его (клик, ввод
текста, клавиши) — всё по стабильным ключам узлов, а не пикселям. Флаг
light dev --agent автоматически пишет каждое действие в журнал сессии
(.light/agent-sessions/<id>/actions.jsonl) и генерирует summary.md при
выходе процесса — готовый артефакт для отчёта агента.
Подробности — в docs/guide.md (разделы
«CLI-обёртка light devtools» и «Автоматизированное тестирование с ИИ»)
и в AGENTS.md.
С версии 0.16.2 флаг --path у shot умеет автоматическое именование: при
значении-каталоге (shots), имени без расширения или . файл получает имя
<YYYYMMDD_HHMMSS>.png; точный путь с расширением (например, out/frame.png)
используется как есть. Флаг --json для shot не имеет смысла: без --path
stdout всегда содержит сырой base64 (без префикса base64:) — его можно
сразу перенаправить в файл (base64 -d, certutil -decode).
Добавление компонентов
light search ищет компоненты на crates.io. light add разрешает компонент
во встроенном реестре, workspace или vendor/, после чего ищет на crates.io.
Фичи самого крейта передаются через --features:
Крейты воркспейса
| Крейт | Назначение |
|---|---|
light |
Мета-крейт: реэкспортирует ядро, макросы и подключённые компоненты. |
light-fw-core |
Ядро: виртуальный DOM, реактивность, раскладка, отрисовка, окно. |
light-fw-macros |
Процедурные макросы #[template] и #[proxy]. |
light-fw-html |
Разбор HTML-шаблонов для макросов. |
light-fw-element-form |
Компонент-элемент: <checkbox>, <radio>, <select>/<option>. |
light-fw-behavior-validation |
Компонент-поведение: required, :validator, @validate. |
light-fw-cli |
Утилита light: проверка проекта и управление компонентами. |
light-fw-cli-core |
Ядро CLI: анализ проекта, light.lock, управление компонентами. |
Документация
Сайт: gifoff.github.io/light.
- docs/SUMMARY.md — оглавление книги.
- docs/ARCHITECTURE.md — обзор архитектуры для контрибьюторов.
- docs/guide.md — руководство пользователя.
- docs/COMPONENT_MODEL.md — модель компонентов.
- docs/COMPONENT_AUTHORING.md — как писать свои компоненты.
- docs/EXTERNAL_COMPONENTS.md — краткий гайд по созданию и публикации стороннего компонента.
- docs/RELEASING.md — публикация релиза (для мейнтейнеров).
- docs/ROADMAP.md — план развития.
Лицензия
Распространяется под лицензией MIT OR Apache-2.0 на ваш выбор. Полные тексты — в файлах LICENSE-MIT и LICENSE-APACHE.


