Thanks to visit codestin.com
Credit goes to github.com

Skip to content

FerrisMind/Zver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zver Browser Engine

Zver — современный браузерный движок, написанный на Rust с акцентом на производительность, модульность и простоту использования.

License Rust Status Animated demo

🚀 Возможности

  • Полный 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::tests

📊 Производительность

Zver оптимизирован для производительности:

  • Параллельная обработка 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 🦀

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published