Changelog for typed-encoding-0.4.1.0
Changelog for typed-encoding
Anticipated future breaking changes
Data.TypedEncoding.Internal.Class.IsStringR
expected to be be changed / replaced- (post 0.3) "enc-B64" will be moved to a different package (more distant goal)
- Improved constrains in
Data.TypedEncoding.Conv
modules
0.4.1
-
Code Changes. Backward compatible
- changed order in
IsSuperset
definition to speed up compilation of of more common cases (there is a small chance that it impacts GHC error messages) - Faster "r-UTF8", possible issue is changed error message in case ByteString is invalid.
- Deprecated 'validFromEnc' for its confusing name
- Deprecated
runDecodings
in favor of consistently namedrunDecodings'
- Deprecated
runDecoding
in favor of consistently namedrunDecoding'
- Deprecated
runValidation
in favor of consistently namedrunValidation'
- changed order in
-
Documentation / code comment fixes and improvements.
-
New functionality
validRFromEnc'
replacing 'validFromEnc' confusing namepropCompEncoding
propertypropSupersetCheck
propertypropSafeDecoding'
propertiespropSafeValidatedDecoding
propertiesIsEnc
type family andEncoding
constraintgetUncheckedPayload
functionpack
andunpack
overloads inData.TypedEncoding.Conv.ByteString.Char8
-
Fixes
- corrected
propEncodesInto'
property test specification
- corrected
0.4
-
Breaking
- IsSupersetOpen type family type arguments have changed
-
Potentially Breaking
(These changes should be backward compatible in almost all cases):- Stronger (more precise) constraints on all functions
Data.TypedEncoding.Conv
- Compilation errors emitted from
IsSuperset
are different - "r-ban" now only allows ASCII chars in annotation name, errors-out otherwise
- Stronger (more precise) constraints on all functions
-
New
"r-CHAR8"
phantom restriction andSuperset
modified for "r-CHAR8""r-UNICODE.D76"
/text/ character set restriction andSuperset
modificationsSuperset
constraint added back (different than in 0.2)- properties for
Superset
testing "r-ByteRep"
annotation used as a marker of low level use ofChar
instead ofWord8
forByteString
work.
-
Improved:
Data.TypedEncoding.Conv
Text
,String
andByteString
conversions are now more type safe and less error prone. Conversion functions are reversible, A to B to C diagrams commute.
-
Fixes:
Data.TypedEncoding.Instances.Restriction.BoundedAlphaNums
"r-ban"
now verifiesSuperset "r-ASCII"
0.3.0.2
- Added documentation to
Data.TypedEncoding.Conv
outlining current limitations, challenges of conversions. - Improved readme
0.3.0.1
- Documentation changes / corrections
- New doctest tests
- Haddock coverage and @since flags
0.3
-
Breaking: Numerous changes on the implementation side, new version should be largely compatible on the call site except for small differences in constraints and order for type variables (if
-XTypeApplications
is used). See v3 migration guide.EncodeFAll
,DecodeFAll
,RecreateFAll
,EncodeF
,DecodeF
,RecreateF
replaced withEncodeAll
,DecodeAll
,ValidateAll
,Encode
,Decode
,Validate
.- functions used to create encoding instances or encoding combinators (e.g.
implEncodeP
) are now more precisely typed Displ String
instance (used in examples, has been made consistent with Text and ByteString)- Modules under
Data.TypedEncoding.Combinators
merged intoData.TypedEncoding.Instances
. - Modules under
Data.TypedEncoding.Internal
have been reorganized and moved outside ofInternal
. Various changes that make the library easier to navigate. for better navigation and discovery. - some previously exported combinators (e.g.
implTranF
) have moved toData.TypedEncoding.Instances.Support.Unsafe
ToEncString
,FromEncString
have more type variables and function name but backward compatible functions have been provided.Superset
typeclass removed, replaced withIsSuperset
type family.- Minor changes in
forall
variable order in combinators for"r-bool:"
encodings. Encoder
type removed, replaced byEncodings
.checkWithValidationsEnc
combinator renamed tocheck
- (Considered private)
MkCheckedEnc
constructor becameUnsafeMkCheckedEnc
- (Considered private)
MkEnc
constructor becameUnsafeMkEnc
-
new functionality
- new types and typeclasses are based on both encoding name and algorithm name allowing
typeclass definitions for open encodings like
"r-ban:"
that can contain arbitrary symbol literals. - new set of combinators grouped into
_
(compiler decided algorithm),'
(program specifies algorithm), andalgorithm name ~ encoding name
categories above
combinator subsumes partial encoding / decoding combinatorsEncodingSuperset
class added
- new types and typeclasses are based on both encoding name and algorithm name allowing
typeclass definitions for open encodings like
0.2.2
- Next version (0.3) will have number of breaking changes, some rethinking and a lot of cleanup, this version preps for some of that (see section above)
- Fixes
- Conversions type safety issues
- new and corrected approach to conversions (all old conversion functions have been deprecated)
- corrected documentation in
Data.TypedEncoding.Combinators.Restriction.BoundedAlphaNums
- new functionality:
Enc
versions forpack
/unpack
forText
andByteString
.Enc
versions ofdecodeUtf8
/encodeUtf8
- new and corrected approach to conversions (all old conversion functions have been deprecated)
IsSuperset
type family with basic combinators deprecatesSuperset
typeclass.- more modules exported from
Data.TypedEncoding.Instances.Support
for instance and combinator creation - more utility type families
Data.TypedEncoding.Internal.Util.TypeLits
- more utility combinators for creating encoding instances and combinators.
- String instance added in number of places, including for "r-ASCII" encoding
- few more support convenience functions.
- deprecation warnings (see above)
0.2.1.0
- new functionality:
- bounded alpha-numeric restriction encodings (
r-ban
) - boolean algebra of encodings
- bounded alpha-numeric restriction encodings (
- minor improvements
- dropped IsString constraint from instances in
Data.TypedEncoding.Instances.Restriction.Common
- added forall annotation to encodeAll and decodeAll
- dropped IsString constraint from instances in
0.2.0.0
- breaking:
- Data.TypedEncoding.Instances modules reorganized
- Data.TypedEncoding.Internal.Class modules reorganized
- Data.TypedEncoding.Internal.Utils module renamed
- Several TypeAnnotations friendly changes:
- Removed polymorphic kinds in most places
- Changed typeclass name from
Subset
toSuperset
- flipped type parameters on FlattenAs, HasA typeclass functions
- Removed Proxy parameters from several methods (few methods have a '_' backward compatible version which still has them)
- new functionality:
ToEncString
- class allowing to convert types toEnc
encoded stringsFromEncString
- class reverses ToEncStringCheckedEnc
untyped version ofEnc
containing valid encodingSomeEnc
existentially quantified version ofEnc
UncheckedEnc
for working with not validated encodingRecreateExUnkStep
constructor added to RecreateEx- utility
IsStringR
- reverse toIsString
class - utility
SymbolList
class
- docs:
- ToEncString example
0.1.0.0
- initial release