flusql/Cargo.toml

106 lines
5.5 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[package]
name = "flusql"
version = "0.5.0"
edition = "2024"
authors = ["Your Name <your.email@example.com>"]
description = "Embedded SQL database with wait-free architecture, Lua support and clustering"
license = "BSD-2 LICENSE"
readme = "README.md"
repository = "https://source.futriix.ru/gvsafronov/flusql"
keywords = ["database", "sql", "embedded", "lua", "cluster", "mvcc", "wait-free"]
categories = ["database", "embedded"]
[features]
default = ["cli", "wal", "mvcc", "lua", "cluster", "plugins", "tokio"]
cli = ["ansi_term", "clap", "rustyline"] # интерактивный интерфейс
wal = [] # Write-Ahead Log
mvcc = [] # Multi-Version Concurrency Control
lua = ["mlua/lua54", "mlua/vendored"] # поддержка Lua 5.4 с встроенной библиотекой
cluster = ["serde", "serde_json", "tokio-tungstenite", "reqwest", "tokio"] # кластерные функции
plugins = ["serde", "serde_json", "uuid", "crossbeam"] # поддержка плагинов с lock-free архитектурой
full = ["cli", "wal", "mvcc", "lua", "cluster", "plugins"]
[dependencies]
# Основные системные зависимости
tokio = { version = "1.0", features = ["full"], optional = true } # асинхронная среда выполнения
futures = "0.3" # абстракции для асинхронного программирования
async-trait = "0.1" # поддержка async в трейтах
log = "0.4" # логирование
env_logger = "0.11" # конфигурация логов через переменные окружения
parking_lot = "0.12" # эффективные примитивы синхронизации (альтернатива std::sync)
dashmap = "5.0" # конкурентные HashMap на основе sharding
thiserror = "1.0" # удобные ошибки через derive макрос
anyhow = "1.0" # простая обработка ошибок для приложений
itertools = "0.12" # дополнительные итераторы
chrono = { version = "0.4", features = ["serde"] } # дата и время
uuid = { version = "1.0", features = ["v4", "serde"], optional = true } # генерация UUID
serde = { version = "1.0", features = ["derive"], optional = true } # сериализация/десериализация
mlua = { version = "0.11.5", optional = true } # интеграция с Lua
tokio-util = "0.7.0" # утилиты для Tokio
# Дополнительные зависимости
hex = "0.4.3" # кодирование/декодирование hex
crossbeam = { version = "0.8.4", optional = true } # lock-free структуры данных и каналы
toml = "0.5" # парсинг TOML файлов
libc = "0.2" # FFI для системных вызовов
postcard = "1.0" # компактная бинарная сериализация
atty = "0.2" # проверка типа терминала
lazy_static = "1.4" # ленивая инициализация статических переменных
regex = "1.5" # регулярные выражения
csv = "1.1" # работа с CSV файлами
memmap2 = "0.5" # memory-mapped файлы
arc-swap = "1.4" # атомарная замена Arc
unicode-width = "0.1" # вычисление ширины Unicode символов
# Сетевые и кластерные зависимости (опционально)
reqwest = { version = "0.11", optional = true } # HTTP клиент
tungstenite = { version = "0.20", optional = true } # WebSocket протокол
tokio-tungstenite = { version = "0.20", optional = true } # асинхронные WebSocket
serde_json = { version = "1.0", optional = true } # работа с JSON
# CLI и интерфейс
ansi_term = { version = "0.12", optional = true } # цветной вывод в терминал
clap = { version = "4.0", optional = true, features = ["derive"] } # парсинг аргументов командной строки
rustyline = { version = "12.0", optional = true } # редактирование строки ввода
colored = { version = "2.0", optional = true } # цветной вывод
prettytable-rs = { version = "0.10", optional = true } # табличный вывод
# Плагины и события (опционально)
notify = { version = "6.0", optional = true } # отслеживание файлов плагинов
# ДОБАВЛЕНЫ для исправления ошибок
atomic_refcell = "0.1" # атомарные ссылочные ячейки для wait-free доступа
nanorand = "0.7" # быстрый генератор случайных чисел
backtrace = "0.3" # трассировка стека для отладки
[dev-dependencies]
tempfile = "3.0" # временные файлы для тестов
criterion = "0.5" # бенчмарки
proptest = "1.0" # property-based тестирование
tokio-test = "0.4" # тестирование async
[lib]
name = "flusql"
path = "src/lib.rs"
crate-type = ["cdylib", "staticlib", "rlib"] # поддержка разных форматов
[profile.dev]
opt-level = 0
debug = true
debug-assertions = true
overflow-checks = true
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = 'abort' # для максимальной производительности
[profile.bench]
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
lto = true
codegen-units = 1