Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
## 0.2.1
### Fixes
- **Compile-time ETS ownership race** — the runtime store's `:named_table`s
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 new `Frontier.Store.Owner`
spawns 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
`:frontier` to compilers. Supports `--warnings-as-errors` for CI.
### Docs
- Restructured README for clearer narrative flow
- Added `@moduledoc`, `@doc`, and `@spec` to all public modules and functions
- Added hierarchical configuration example to README
- Added Hex.pm, HexDocs, and CI badges
## 0.1.2
### Docs
- Added `public_schemas` examples to Boundary comparison section
- Improved option documentation for `public_schemas` in context modules
## 0.1.1
### Features
- **`public_schemas` option** — control whether schemas are auto-exported.
Set at root level (global default) or context level (per-frontier override).
Accepts `true` (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 Application` are
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 `Config` to `Store`** — the module manages ETS-backed runtime
state, not configuration. All internal references updated.
- **`mix frontier.spec` now 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/1` is 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 Frontier` macro 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 boundaries
- `mix frontier.visualize` — DOT/PNG dependency graph with violation legend
- Config validation for misconfigured options