Skip to content

What's New in ETLantic 0.15

Status: Available in ETLantic 0.15.0.

ETLantic 0.15 ships Safe SQL Lowering for the portable kernel and portable-relational/1 claim set, prefers the Extract / Load / asset authoring vocabulary, and extracts direct execution behind a built-in LocalScheduler boundary.

Safe SQL Lowering

etlantic-sql now registers a portable transform compiler (etlantic.transform_compilerssql) that lowers dtcs.transform-plan/2 into typed etlantic.sql/1 IR and executes through the PostgreSQL reference dialect (SQLite remains a convenience path for local conformance).

  • Bound parameters and validated identifiers only — no literal interpolation
  • Trusted SQL fragments are forbidden in portable definitions
  • Dialect gaps fail during analyze() with PMXFORM* findings
  • Public conformance: run_portable_transform_conformance_suite(create_transform_compiler())

Native @implementation("sql") remains supported and tested.

Extract / Load / asset

Prefer:

from etlantic import Extract, Load

raw = Extract[Customer](asset="customers")
out = Load[Customer](input=result, asset="curated")

Source / Sink / binding= emit DeprecationWarning and are removed in 0.16. Plan, DPCS, and plugin wire names (binding, "source" / "sink" kinds, etlantic:binding) are unchanged for fingerprint stability.

See Migration 0.14 → 0.15.

LocalScheduler

Pipeline.run / arun now enter through LocalScheduler, the zero-service direct-execution default. Airflow remains an external compile target (etlantic.orchestration/1). Optional Prefect packaging is planned for 0.16 Gate B as an ExecutionScheduler (logical-node MVP; not a DAG compiler); vocabulary cleanup is the independent Gate A. See the scheduler plan and ROADMAP §0.16.

Not in 0.15

Advanced portable profile graduation (window, reshape, complex values, …) was deferred as 0.15 continuation and is now owned by 0.17; it is not required to close this release.