View Source Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.3.0 - 2022-02-15
Added
- [Plugin] Add the
field/4
callback with an additionalenv
argument. This is the same asfield/3
but gives access to the environment of the field definition.
Deprecated
- [Plugin] Deprecate the
field/3
callback in favour offield/4
. You should migrate tofield/4
, simply by adding_env
as the last argument in your implementation. Currently, if a plugin implementsfield/3
,field/4
is derived from it and a compilation warning is emitted.field/3
will be removed in TypedStruct 1.0.0.
Removed
- Drop support for unsupported Elixir versions in the tests and CI. The library may still be compatible, but this is not tested.
Fixed
- Fix the lexical scope of the
typestruct
block, so it covers it completely. Previously, anything defined inside thetypedstruct
block, such as aliases, would not be available for the field definitions. See #22 and #21 for details. - Fix a typo in the documentation.
0.2.1 - 2020-07-19
Added
- Add the
module: ModuleName
top-level option to create the typed struct in a submodule.
Changed
- Update the
@typedoc
example in the documentation to put it inside thetypedstruct
block and not above. While putting it above works in the general case, it is mandatory to put it inside the block when defining a submodule.
0.2.0 - 2020-05-31
Added
- Add a plugin API.
Removed
- Remove reflection support through the
__keys__/0
,__defaults__/0
and__types__/0
function which where defined by TypedStruct in the user modules. If you rely on these functions, please use the TypedStructLegacyReflection plugin to enable them again, and consider creating a plugin for your needs.
Fixed
- Do not enforce fields with a default value set to nil (fixes #14).
- Prefix all internal module attributes and clean them after use (fixes #15).
- Create a scope in the
typedstruct
block to avoid import leaks.
0.1.4 - 2018-11-13
Added
- Add the ability to generate an opaque type (#10).
0.1.3 - 2018-09-06
Fixed
- Fix a bug where boolean fields with
default: false
where still enforced when settingenforce: true
at top-level.
0.1.2 - 2018-09-06
Added
- Add the ability to enforce keys by default (#6).
Fixed
- Clarify the documentation about
runtime: false
.
0.1.1 - 2018-06-20
Fixed
- Do not make the type nullable when there is a default value.
0.1.0 - 2018-06-19
Added
- Struct definition
- Type definition
- Default values
- Enforced keys