Light
Light — декларативный реактивный GUI-фреймворк для Rust. Вы пишете HTML-разметку
с директивами (v-if, v-for, v-model), описываете состояние реактивными
свойствами (#[proxy]), а Light компилирует шаблоны на этапе сборки в
Rust-код, строящий виртуальный DOM. Окна создаются на winit, а программно
нарисованный кадр показывается через softbuffer; wgpu доступен отдельной
фичей wgpu-backend.
- Компиляция вместо интерпретации. Шаблоны превращаются в Rust на этапе сборки: в рантайме нет HTML-парсера и интерпретатора разметки.
- Гранулярная реактивность. Изменение свойства перерисовывает только зависящие узлы виртуального дерева.
- Нативные окна. Безрамочные окна, кастомный titlebar, модальные окна и несколько окон — из коробки.
- Платите только за используемое. Каждая подсистема — Cargo-фича; код выключенных возможностей не попадает в бинарник.
- Компактные бинарники. Программный рендеринг через
softbufferвключён по умолчанию: release-сборка демо занимает ~1.7 MB вместо ~7.7 MB сwgpu.
Статус
Текущая версия — 0.4.0. Проект в стадии пре-1.0: публичный API ещё не стабилен и может меняться между минорными версиями.
Быстрый старт
Cargo.toml:
[]
= "my-app"
= "0.1.0"
= "2024"
[]
= { = "https://github.com/gifoff/light" }
src/main.rs:
use *;
templates/app.html:
Привет, {{ name }}!
Поздороваться
Крейты воркспейса
| Крейт | Назначение |
|---|---|
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, управление компонентами. |
Документация
- docs/guide.md — руководство пользователя.
- docs/MIGRATION_0.3_TO_0.4.md — миграция с 0.3 на 0.4 (softbuffer по умолчанию).
- docs/COMPONENT_MODEL.md — модель компонентов.
- docs/COMPONENT_AUTHORING.md — как писать свои компоненты.
- docs/RELEASING.md — публикация релиза (для мейнтейнеров).
- docs/ROADMAP.md — план развития.
Ссылки
Лицензия
Распространяется под лицензией MIT OR Apache-2.0 на ваш выбор. Полные тексты —
в файлах LICENSE-MIT и LICENSE-APACHE.