diff --git a/README.md b/README.md index ed62805..70c649b 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@
(К началу)
+## Динамическая библиотека + +По умолчанию, после компиляции в директории `/flusql/target/debug` находится файл `libflusql.so`-то динамически подключаемая библиотека (shared object), созданная в процессе компиляции проекта flusql. +**libflusql.so** — это скомпилированная библиотека flusql, которая может использоваться как самостоятельный компонент или подключаться к другим программам для расширения их функциональности SQL и Lua возможностями. + + +**Основное назначение** + +Это скомпилированная версия Rust-библиотеки в формате динамической библиотеки для ОС семейства Linux: + + * .so — стандартное расширение для shared objects в Linux (аналог .dll в Windows) + * Содержит откомпилированный код всех модулей проекта (кроме main.rs) + * Может быть динамически загружена и использована другими программами + + Данная библиотека создаётся, благодаря указанной конфигурации в файле `Cargo.toml`, а именно строке: `crate-type = ["cdylib", "staticlib", "rlib"]`. Она означает, что компилятор создает несколько форматов: + + * cdylib → libflusql.so (динамическая библиотека для C-интерфейса) + * staticlib → libflusql.a (статическая библиотека) + * rlib → libflusql.rlib (Rust-специфичный формат для зависимостей) + + **Практическое использование** + +1) Использование как библиотеки Lua + +Так как flusql поддерживает Lua, libflusql.so может использоваться как: + + * Модуль Lua (через require в Lua) + * Расширение для других программ, которые могут загружать динамические библиотеки + +2) Интеграция с другими языками + +Библиотека может быть использована из: + + * C/C++ программ (через C-совместимый интерфейс) + * Python (через ctypes или cffi) + * Node.js (через FFI) + * Других языков с поддержкой загрузки .so файлов + +3) Тестирование и отладка + +Файл находится в target/debug, что означает: + + * Скомпилирован с отладочной информацией (debug = true) + * Не оптимизирован для производительности + * Содержит символы для отладки + * Используется при запуске тестов (cargo test) + + ## Использование **Запуск интерактивного интефейса**