Changelog for typed-encoding-0.5.2.0
Changelog for typed-encoding
Anticipated future breaking changes
Data.TypedEncoding.Common.Class.IsStringR
expected to be be changed / replaced- (post 0.5) "enc-B64" could be moved to a different package (more distant goal)
0.5.2.0
- Fixed up IsSuperset type family improving transitivity
- added
_mkEncoding1
runEncoding1'
functions that show equivalence ofEncoding
to one level encoding - added convenience one level encoding conversion functions
- base64-bytestring deps relaxed
0.5.1.0
- "r-B64" added
- @implVerifyR@ convenience function added to 'Data.TypedEncoding.Instances.Support.Encode'
0.5.0
Changes on a high level
- Most of the changes should not create a big impact on upgrading. Many definitions were moved to a different module but these modules are and had been re-exported by either
Data.TypedEncoding
orData.TypedEncoding.Instances.Support
- Some functionality has been moved to Examples or removed, notably:
- "do-" encodings
SomeEnc
,SomeAnnotation
HasA
typeclass
- Some functions have been renamed or type signatures adjusted to follow consistent naming conventions. In most cases the changes have been made on previously deprecated definitions.
Details
-
Data.TypedEncoding.Instances.Do.Sample moved to Examples
-
Examples.TypedEncoding folder re-org
-
Data.TypedEncoding.Instances.Support.Helpers
removedfoldEncStr
,foldCheckedEncStr
renamedsplitSomePayload
tosplitCheckedPayload
-
HasA
typeclass moved to Examples -
removed experimental
Data.TypedEncoding.Instances.Restriction.Bool
in favor of combinator helpersData.TypedEncoding.Instances.Support.Bool
-
Data.TypedEncoding.Common.Types.SomeEnc
moved to Examples -
Data.TypedEncoding.Common.Types.SomeAnnotation
moved to Examples -
camel-case of some property names
-
Text instances for "Base64" moved to
Data.TypedEncoding.Instances.Enc.Warn.Base64
-
Removed instanced for
"r-()"
encoding -
Functions from
Data.TypedEncoding.Instances.Support.Common
moved toData.TypedEncoding.Instances.Support.Decode
-
Signature changed in previously deprecated function
runDecoding
to matchmn ~ alg
convention and deprecation removed -
Signature changed in previously deprecated function
runDecodings
to matchmns ~ algs
convention and deprecation removed -
Signature changed in previously deprecated function
runValidation
to matchmns ~ algs
convention and deprecation removed -
runValidationChecks
renamed torunValidationChecks'
to match /typed-encoding/ naming conventions. -
removed deprecated
propEncodesInto'
-
moved
Append
type family from fromData.TypedEncoding.Common.Class.Util
toData.TypedEncoding.Common.Util.TypeLits
-
Data.TypedEncoding.Common.Class.Util
renamed toData.TypedEncoding.Common.Class.Common
-
function
extractEither
removed fromData.TypedEncoding.Internal.Util
-
function
withSomeSymbol
moved toData.TypedEncoding.Common.Util.TypeLits
-
function
proxyCons
moved toData.TypedEncoding.Common.Util.TypeLits
-
More general instances for some encodings in
Data.TypedEncoding.Instances.Restriction.Misc
-
mkDecoding
deprecated in favor of_mkDecoding
to follow the naming convention -
mkValidation
deprecated in favor of_mkValidation
to follow the naming convention -
validR'
function renamed to_validR
0.4.2
Data.TypedEncoding.Instances.Support.Bool
combinators ("r-bool" remains experimental)- Correction in
r-ban
error message typo ("'G' not bounded by 'F'") _implEncFromString
creates "r-" encoding fromFromEncString
definition- property changes:
propEncodesIntoCheck
added;propSuperset'
,propEncodesInto'
deprecated
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