diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..94b6b04 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,105 @@ +[package] +name = "flusql" +version = "0.5.0" +edition = "2024" +authors = ["Your Name "] +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