Changelog
Copy Markdown0.2.1
Fixes
- Compile-time ETS ownership race — the runtime store's
:named_tables were created by whichever parallel compiler worker first hit__after_compile__. When that transient worker exited, the tables died with it and the next worker's insert crashed with "the table identifier does not refer to an existing ETS table". A newFrontier.Store.Ownerspawns an unlinked, detached process to own the tables, so ownership never rides on a worker's lifetime.
0.2.0
Features
mix frontier.check— on-demand boundary checks without adding:frontierto compilers. Supports--warnings-as-errorsfor CI.
Docs
- Restructured README for clearer narrative flow
- Added
@moduledoc,@doc, and@specto all public modules and functions - Added hierarchical configuration example to README
- Added Hex.pm, HexDocs, and CI badges
0.1.2
Docs
- Added
public_schemasexamples to Boundary comparison section - Improved option documentation for
public_schemasin context modules
0.1.1
Features
public_schemasoption — control whether schemas are auto-exported. Set at root level (global default) or context level (per-frontier override). Acceptstrue(default),false(schemas treated as internal), or a list of specific schemas to auto-export. Context settings override root settings.Application modules are god mode — modules that
use Applicationare automatically exempt from all boundary checks. No configuration needed. Application modules wire up supervision trees and need to call into every context during startup.
Fixes
Renamed
ConfigtoStore— the module manages ETS-backed runtime state, not configuration. All internal references updated.mix frontier.specnow works after compilation — previously showed "No contexts declared" because tracer state wasn't persisted. Store now rebuilds state from persisted module attributes.Tracer no longer wipes references on every trace event —
initialize_module/1is now idempotent, only clearing references once per module per compilation.Violation detection fixed — cross-context violations are now properly detected and reported.
0.1.0
Initial release.
- Convention-based boundary enforcement for Elixir projects
use Frontiermacro with options:globals:,ignore:,reaches:,externals:,exports:,skip_violations:,enforce:,belongs_to:- Module classification: ignored → global → reclassified → context root → schema → exported → internal → unowned
- Compile-time tracer with actionable warnings
mix frontier.spec— text summary of boundariesmix frontier.visualize— DOT/PNG dependency graph with violation legend- Config validation for misconfigured options