All notable changes to this project will be documented in this file.
[0.3.3] - 2026-02-28
Fixed
- CI creates GitLab releases (with tags) using the
releasekeyword instead of git push. - LICENSE and CHANGELOG included in ex_doc extras to resolve doc warnings.
- Removed hidden function reference in
BinaryDecoder.V11moduledoc. - Fixed ex_doc auto-linking warnings for hidden modules in CHANGELOG.
[0.3.1] - 2026-02-28
Changed
- CI now creates git tags automatically on publish.
- CI pipelines skip tag pushes to avoid duplicate builds.
[0.3.0] - 2026-02-28
Added
- Ion 1.1 macro system (Eyeon.Macro) with support for system macros, user-defined macros, and TDL (Template Definition Language) compilation.
- Ion 1.1 text parsing and macro integration — e-expressions, encoding directives (
$ion_encoding), and inline modules. - Ion 1.1 binary decoding — new binary primitives (FlexUInt, FlexInt, FlexSym), scalar types, containers, timestamps, annotations, e-expressions, and tagless argument encoding.
Eyeon.Decodermodule extracted for codec-agnostic AST decoding shared between text and binary paths.- IVM-based version router that dispatches to V10 or V11 binary decoders.
Eyeon.Timestampstruct for precision-preserving timestamp representation (opt-in via%{timestamp: :raw}).- Ion equivs/non-equivs test module for data model equivalence testing.
- Amazon Ion conformance DSL test runner covering 2000+ test cases.
- System macro implementations:
values,default,repeat,delta,sum,annotate,make_string,make_symbol,make_decimal,make_timestamp,make_list,make_sexp,make_field,make_struct,parse_ion,set_symbols,add_symbols,set_macros,add_macros,meta.
Fixed
- UTF-8 encoding of
\xHHescapes in Ion strings and symbols. $ion_symbol_tablestructs stripped from text decoder output.
[0.2.0] - 2026-02-02
Changed
- Replaced leex/yecc parser with pure Elixir recursive descent parser (Eyeon.TextParser). This is a complete rewrite of the parsing layer — the Erlang-generated lexer and parser have been removed.
- Significant performance improvements from the new single-pass text parser (see benchmarks).
Removed
ion_lexer.xrl(leex) andion_parser.yrl(yecc) — the Erlang lexer/parser pipeline has been fully removed in favor of the native Elixir parser.
[0.1.0] - 2026-02-01
Added
- Initial release of Eyeon — an Elixir library for Amazon Ion.
- Ion text decoder with full Ion 1.0 support via leex/yecc-generated lexer and parser.
- Ion text encoder with value-level round-trip support.
- Ion 1.0 binary decoder and encoder.
- Local and shared symbol table management (
Eyeon.LocalSymbolTable,Eyeon.SharedSymbolTable) withEyeon.SymbolTableprotocol. Eyeon.Catalogfor shared symbol table registry.- Public API:
Eyeon.encode/2,Eyeon.decode/2, and bang variants. - Timestamps decode to native Elixir types (
DateTime,NaiveDateTime,Date) by default. - UTF-16/UTF-32 encoding detection and transcoding.
- Passes Amazon's official Ion 1.0 conformance test suite.
- Post-lex adjacency validation for value tokens.
- Handles edge cases: UTF-16 surrogate pair decoding, overflowing float clamping to infinity, zero-coefficient timestamp fractions, sexp operator adjacency.