Releases: DataBora/elusion
Releases · DataBora/elusion
Elusion v8.3.0
🚀 Elusion v8.3.0 Release Notes
📦 Installation
[dependencies]
elusion = "8.3.0"
tokio = { version = "1.50.0", features = ["rt-multi-thread"] }[8.3.0] - 2026-04-01
Added - Elusion Project (Medallion Architecture Pipeline Framework)
- New
ElusionProjectstruct — declarative, config-driven data pipeline framework inspired by medallion architecture (Bronze/Silver/Gold) used in Microsoft Fabric, Databricks, and Azure Data Lake - DAG-based execution engine with topological sort — correct execution order guaranteed regardless of registration order
- Parallel execution via level-based DAG grouping — independent nodes run concurrently with
tokio, dependent nodes wait automatically - Config-driven setup via
elusion.toml(project config) andconnections.toml(source declarations) - Fail-fast source validation at startup — missing files, paths, or unresolved env vars caught before execution begins
- Env var resolution via
dotenvy— supports both.envfiles (local dev) and system environment variables (Docker/CI/CD) - Materialization per layer — automatic write to Parquet or Delta after each node completes, before next layer starts
- Local and Microsoft Fabric/OneLake output destinations supported
- Per-model materialization overrides in
elusion.toml— override layer defaults for specific models - Execution plan printed before run — shows all nodes, layers, and materialization type per node
- Execution summary table printed after completion — model name, layer, row count, and timing per node
Medallion Layer Naming (Bronze / Silver / Gold)
NodeLayerenum usesBronze,Silver,Goldnaming aligned with Microsoft Fabric and Databricks medallion architectureBronze— raw ingestion layer (replaces Stage)Silver— cleaned and enriched layer (replaces Intermediate)Gold— aggregated business-ready layer (replaces Marts)NodeRegistryexposesref_source(),ref_bronze(),ref_silver(),ref_gold()for accessing resolved DataFrames between layers
Source connectivity
connections.tomlsource declarations supporting: CSV, Parquet, Delta, Fabric Service Principal, Fabric SAS token.source("name")— loads source automatically fromconnections.toml.source_fn("name", closure)— manual source loading without config files for quick prototyping
Layer registration — three API styles supported
- DataFrame API:
.bronze(),.silver(),.gold()— chainable Elusion DataFrame operations inside async closures - Raw SQL API:
.bronze_sql(),.silver_sql(),.gold_sql()— write SQL directly against registered table names from the registry - Slice deps API:
.bronze_slice(),.silver_slice(),.gold_slice(),.bronze_sql_slice(),.silver_sql_slice(),.gold_sql_slice()— for use withDEPS: &[&str]constants declared in separate model files
Const generics support
- All layer registration methods accept
[&str; N]const generic arrays instead ofVec— novec![]required - Slice variants accept
&[&str]for use withpub const DEPS: &[&str]in model files
Separated model files (medallion-style)
- Models organized in separate files per layer:
src/bronze/,src/silver/,src/gold/ - Each model file exports
pub const DEPS: &[&str]and either apub async fn model(ctx: NodeRegistry)or apub const SQL: &str main.rsbecomes minimal wiring only — one line per model- Adding a new model means creating one file and adding one line to
main.rs
elusion.toml configuration
[project]
name = "my_pipeline"
version = "1.0"
[materialization]
bronze = "parquet"
silver = "parquet"
gold = "parquet" -- or delta
[output]
destination = "local"
[output.local]
bronze_path = "C:\\Data\\output\\bronze"
silver_path = "C:\\Data\\output\\silver"
gold_path = "C:\\Data\\output\\gold"connections.toml configuration
[sources.raw_sales]
type = "csv"
path = "C:\\Data\\SalesData2022.csv"
[sources.raw_fabric_orders]
type = "fabric"
abfss_path = "abfss://container@account.dfs.core.windows.net"
file_path = "bronze/orders.parquet"
tenant_id = "TENANT_ID"
client_id = "CLIENT_ID"
client_secret = "CLIENT_SECRET"Fixed
drop_null()now correctly handles non-string columns — previously appliedTRIM()toInt64/Float64columns causing DataFusionbtrimfunction errors. Non-string columns now useIS NOT NULLonly, string columns retain full null string detection ('','NULL','NA','N/A','NONE','-','?','NaN')
Elusion v8.2.0
🚀 Elusion v8.2.0 Release Notes
📦 Installation
[dependencies]
elusion = "8.2.0"
tokio = { version = "1.50.0", features = ["rt-multi-thread"] }Updated
- Major dependency upgrades for long-term compatibility:
tokiofrom1.48.0to1.50.0datafusionfrom43.0.0to46.0.1deltalakefrom0.23.0to0.31.0arrowfrom53.2.0to57.x(now sourced viadatafusion::arrowto avoid dual-version conflicts)chronofrom=0.4.38(pinned) to0.4.44(unpinned)reqwestfrom0.12.xto0.13.2(featurerustls-tlsrenamed torustls)parquetfrom53.xto58.1.0calamineupdated withchronofeature enabled for properExcelDateTimehandlingurlpromoted from optional to required dependency
Fixed
- Resolved
arrow-arithtrait clash withchrono >= 0.4.40(quarter()function ambiguity) - Removed dual
arrowcrate conflict betweendeltalake(arrow 57) anddatafusion(arrow 54) by routing all arrow imports throughdatafusion::arrow - Fixed
deltalake0.31 breaking API changes:from_uri()→from_url()(now requiresUrlinstead of&str)try_from_uri()→try_from_url()StructType::new()→StructType::try_new()Metadatafields made private, now accessed via methods (id(),name(),description(), etc.)Protocol::new()→Protocol::default()LocalFileSystemnow sourced fromdeltalake::logstore::object_store::localtable.version()now returnsOption<i64>open_table()now requiresUrlinstead of&str
- Fixed
calaminebreaking API changes:DataTypetrait renamed toDataenumDurationvariant removed, mapped toNullExcelDateTimeserial value conversion updated
- Fixed
object_storedual-version conflict (0.12 vs 0.13) - Fixed
RecordBatchandSchematype mismatches across delta, redis, calendar, xml, excel, and with_schema modules via IPC round-trip conversion
Elusion v8.1.0
🚀 Elusion v8.1.0 Release Notes
📦 Installation
[dependencies]
elusion = "8.1.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }Added
- Schema Loading Feature - Load files with predefined schemas using
new_with_schema()method - Support for custom schema definition via JSON specification with
schema_from_json() SchemaBuilderfor ergonomic, programmatic schema construction without requiring manualvec![]declarationsFileSchema::schema_builder()convenience method for fluent schema building- Schema support for all file formats: CSV, Parquet, JSON, Excel, XML, and Delta Lake
FileSchemastruct for schema representation and reuse- Exposed schema-loading APIs through
CustomDataFramewrappers (not direct imports in prelude)
Elusion v8.0.0
🚀 Elusion v8.0.0 Release Notes
📦 Installation
[dependencies]
elusion = "8.0.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }Added
- COPY DATA feature for continuous reading and writing for files bigger than RAM. Currenty source can be JSON, CSV and PARQUET, and destinations: CSV and PARQUET.
- RAW SQL Execution with Macro implementation for better user experience.
Elusion v7.9.0
🚀 Elusion v7.9.0 Release Notes
📦 Installation
[dependencies]
elusion = "7.9.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }Added
- Dashboard Filtering Features (requires
dashboardfeature flag) - Category filtering for bar, pie and donut plots with category picker UI
- Waterfall plot
- NEW Color schema for all plots
Elusion v7.7.0
🚀 Elusion v7.7.0 Release Notes
📦 Installation
[dependencies]
elusion = "7.7.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }ADDED
- New features for DASHBOARD: export_report_to_pdf(), export_plot_to_png()
Elusion v7.6.0
🚀 Elusion v7.6.0 Release Notes
📦 Installation
[dependencies]
elusion = "7.6.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }ENHANCED
- Schema Type conversion for Excel file reading
Elusion v7.5.0
🚀 Elusion v7.5.0 Release Notes
📦 Installation
[dependencies]
elusion = "7.5.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }ADDED
- drop_duplicates_by_column() function that creates new dataframe with removed duplicate rows by keeping first row occurence
Elusion v7.4.0
🚀 Elusion v7.4.0 Release Notes
📦 Installation
[dependencies]
elusion = "7.4.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }IMPROVED
- Error message for select() and group_by_all()
ADDED
- drop_duplicates() function that creates new dataframe with removed duplicate rows by keeping first row occurence
Elusion v7.3.0
🚀 Elusion v7.3.0 Release Notes
📦 Installation
[dependencies]
elusion = "7.3.0"
tokio = { version = "1.45.0", features = ["rt-multi-thread"] }ADDED
- FTP/FTPS Connector for reading and writing files with numerous functions: from_ftp(), from_ftp_folder(), write_csv_to_ftp(), write_excel_to_ftp(), write_parquet_to_ftp()...