Zver — современный браузерный движок, написанный на Rust с акцентом на производительность, модульность и простоту использования.
- Полный HTML/CSS парсинг с поддержкой современных стандартов
- JavaScript движок на базе Boa Engine
- Flexbox и Grid Layout через интеграцию с Taffy
- GPU-ускоренный рендеринг с использованием WGPU
- Асинхронная архитектура на базе Tokio
- Модульная структура для легкого расширения
- GUI демо на базе egui для визуализации
zver/
├── crates/
│ ├── zver/ # Основная библиотека движка
│ └── zver-egui/ # GUI демо приложение
├── examples/ # Примеры использования
├── tests/ # Интеграционные тесты
└── assets/ # Тестовые HTML/CSS файлы
- Rust 2024 edition или новее
- Cargo для сборки проекта
# Клонирование репозитория
git clone https://github.com/your-username/zver.git
cd zver
# Сборка проекта
cargo build
# Запуск GUI демо
cargo run --bin zver-egui
# Запуск примера базового использования
cargo run --example basic_usageДобавьте в ваш Cargo.toml:
[dependencies]
zver = { path = "path/to/zver/crates/zver" }
tokio = { version = "1.48", features = ["full"] }Базовый пример использования:
use zver::Zver;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Создание экземпляра движка
let engine = Zver::new();
// Загрузка HTML страницы
engine.load_url("file://index.html").await?;
// Получение информации о DOM
let dom = engine.dom.read().await;
println!("DOM содержит {} узлов", dom.nodes.len());
Ok(())
}Zver построен на модульной архитектуре с четким разделением ответственности:
- DOM Engine (
dom/) - Парсинг и управление HTML документом - CSS Engine (
css/) - Парсинг CSS и применение стилей - Layout Engine (
layout/) - Вычисление позиций элементов (Flexbox/Grid) - Render Engine (
render/) - GPU-рендеринг с использованием WGPU - JavaScript Engine (
js/) - Исполнение JavaScript через Boa - Network Engine (
network/) - Загрузка ресурсов с кэшированием
HTML → DOM → CSS Styling → Layout → Render → Display
↑ ↓
└── JavaScript ←←←←←←←←←←←←←←←←←←←←←←←←←←←
- Базовый HTML парсинг через parser
- CSS парсинг с поддержкой селекторов (cssparser + selectors)
- Layout движок с Flexbox/Grid поддержкой (Taffy)
- JavaScript исполнение (Boa Engine)
- GPU рендеринг базовых элементов (WGPU)
- Асинхронная загрузка ресурсов
- GUI демо с визуализацией DOM/Layout
- Расширенная поддержка CSS свойств
- Обработка событий JavaScript
- Оптимизация производительности рендеринга
- Поддержка медиа-запросов
- CSS анимации и переходы
- WebAssembly интеграция
- Поддержка веб-компонентов
- Расширенная поддержка HTML5 API
- Мобильная оптимизация
- Плагинная система
# Запуск всех тестов
cargo test
# Запуск с подробным выводом
cargo test -- --nocapture
# Тестирование конкретного модуля
cargo test css::testsZver оптимизирован для производительности:
- Параллельная обработка CSS с использованием Rayon
- Кэширование селекторов для повторного использования
- Асинхронная загрузка ресурсов без блокировки UI
- GPU-ускоренный рендеринг для плавной анимации
Мы приветствуем вклад в развитие проекта! Пожалуйста, ознакомьтесь с руководством по участию.
Проект распространяется под лицензией MIT. Подробности в файле LICENSE.
Zver использует следующие отличные библиотеки:
- cssparser - CSS парсинг
- selectors - CSS селекторы
- taffy - Layout движок
- boa_engine - JavaScript движок
- wgpu - GPU рендеринг
- egui - GUI фреймворк для демо
- tokio - Асинхронный runtime
- reqwest - HTTP клиент
- fontdue - Рендеринг шрифтов
- Rayon - Параллельные вычисления
- Serde - Сериализация/десериализация
- Log - Логирование
- Env Logger - Конфигурируемое логирование
- scraper - HTML парсинг
Zver Browser Engine - создавая будущее веб-технологий на Rust 🦀