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.
- got rid of Compat dependency
- reverting
Base.catch_backtrace()
toBase.catch_stack()
everywhere. Apparently this is really only an issue on julia nightly and should not be changed in julia 1.6. Hence reverting everything.
- using
Base.catch_backtrace()
now instead ofBase.catch_stack()
which got deprecated
Base.get
andBase.getindex
are now both implemented forConst
(like they are implemented already forIdentity
), to simplify working withConst
.- Vector conversions (
convert
) are now more generic and support AbstractArray in general
Option(3)
works now- The constructors
Const{ElementType}(value)
andIdentity{ElementType}(value)
had been removed already, however were still used. Maybe this now gave errors because of newer julia version, don't know, but now everything usesConst(value)
andIdentity(value)
instead. - fixed a couple of disambiguation errors which magically appeared after switching to Julia 1.6
- Thrown now parameterises also the type of the stacktrace. This is going to change in upcoming julia version 1.7.
Option{T}(value::T)
didn't work and is removed now, as it does not provide any benefit anylonger, which is a breaking changeOption{T}()
is also removed for completeness, which is a breaking changeConst
no longer converts toIdentity
. This was added originally so that aConst
nested within anIdentity
can be flattened. However, there is a better alternative, namely now theflatmap
operator onIdentity
just strips away the outer Identity, without any call toconvert
. This is simpler and more convenient approach which also makes the hacky conversion no longer needed. This is a breaking change.
- CI via GitHubActions
- Documentation via Documenter.jl and GitHubActions
- Codecoverage via GitHubActions and Codecov
- extensive Testing
- TagBot and CompatHelper GitHubActions
- extensive
promote_rule
andpromote_typejoin
implementations have been added for Identity, Const, Option, Either, OptionEither. @either
macro with which you can constructEither
using ? operator or if-else.
- Option is now represented as Union of Identity and Const{Nothing}
- Either is now represented as
Union
of Identity and Const - Try is now represented as
Union
of Identity and Const{<:Exception} - flatten in general is now unified to use
convert
for interoperability between similar container types - flatten of ContextManager is again reverted back to not use
FlattenMe
anymore. Instead the inner result value is explicitly converted toContextManager
, following the general principle now.
- foreach for Identity is fixed
- convert for Identity and Const preserves the container type now
- equality == for Thrown works now
- promote_type for Either (was too imprecise)
- flatten on ContextManager is now realised at runtime (the reason was that inaccurate typeinference could not be resolved for ContextManager before). Concretely, if you call
Iterators.flatten(...)
on the ContextManager, a tagFlattenMe
will be mapped onto the ContextManager. When the ContextManager is run, then a FlattenMe result will be further flattened out. Note that this wrapper is also applied to non-contextmanager types for advanced later flattening of complex nested flatten structures.
- typeinference for Option, Try, Either is now massively improved
initial release