From f3f3429d90be77f59903923f9bb5ce93c484dfd7 Mon Sep 17 00:00:00 2001 From: Romain Canon Date: Thu, 24 Aug 2023 23:45:48 +0200 Subject: [PATCH] release: version 1.6.0 --- docs/pages/project/changelog.md | 1 + docs/pages/project/changelog/version-1.3.0.md | 4 +- docs/pages/project/changelog/version-1.3.1.md | 4 +- docs/pages/project/changelog/version-1.4.0.md | 6 +- docs/pages/project/changelog/version-1.5.0.md | 28 ++--- docs/pages/project/changelog/version-1.6.0.md | 101 ++++++++++++++++++ 6 files changed, 123 insertions(+), 21 deletions(-) create mode 100644 docs/pages/project/changelog/version-1.6.0.md diff --git a/docs/pages/project/changelog.md b/docs/pages/project/changelog.md index 7e7db1fa..be4c9926 100644 --- a/docs/pages/project/changelog.md +++ b/docs/pages/project/changelog.md @@ -9,6 +9,7 @@ Below are listed the changelogs for all released version of the library. ## Version 1 +- [`1.6.0` — 25th of August 2023](changelog/version-1.6.0.md) - [`1.5.0` — 7th of August 2023](changelog/version-1.5.0.md) - [`1.4.0` — 17th of April 2023](changelog/version-1.4.0.md) - [`1.3.1` — 13th of February 2023](changelog/version-1.3.1.md) diff --git a/docs/pages/project/changelog/version-1.3.0.md b/docs/pages/project/changelog/version-1.3.0.md index e56ed8a0..89b40d7d 100644 --- a/docs/pages/project/changelog/version-1.3.0.md +++ b/docs/pages/project/changelog/version-1.3.0.md @@ -71,10 +71,10 @@ Note that this commit required heavy refactoring work, leading to a regression for union types containing enums and other types. As these cases are considered marginal, this change is considered non-breaking. -### Features +## Features * Handle custom enum constructors registration ([217e12](https://github.com/CuyZ/Valinor/commit/217e12047440f7ded43c502b8fea1246dd23f2c3)) -### Other +## Other * Handle enum type as class type ([5a3caf](https://github.com/CuyZ/Valinor/commit/5a3caf4b246315715c51802e88d939b7c17a27e3)) diff --git a/docs/pages/project/changelog/version-1.3.1.md b/docs/pages/project/changelog/version-1.3.1.md index ad67242b..6442a00b 100644 --- a/docs/pages/project/changelog/version-1.3.1.md +++ b/docs/pages/project/changelog/version-1.3.1.md @@ -5,7 +5,7 @@ Bugfix release. -### Bug Fixes +## Bug Fixes * Check if temporary cache file exists before deletion ([3177bf](https://github.com/CuyZ/Valinor/commit/3177bf76849ab60bb5a4396f023a1ef0cc8200c8)) * Display useful error message for invalid constructor return type ([dc7f5c](https://github.com/CuyZ/Valinor/commit/dc7f5c3f837d68704ba987c9f0a5456acc940c31)) @@ -13,6 +13,6 @@ Bugfix release. * Properly handle class static constructor for other class ([d34974](https://github.com/CuyZ/Valinor/commit/d349741dd361e4bf9e52c2dbd76ec8799157807a)) * Properly handle union of `null` and objects ([8f03a7](https://github.com/CuyZ/Valinor/commit/8f03a7e0cbe1b83434e14d05a3f533e26b7a243f)) -### Other +## Other * Update dependencies ([f7e7f2](https://github.com/CuyZ/Valinor/commit/f7e7f29ff64efa84e1954e0084bb52156e4de56c)) diff --git a/docs/pages/project/changelog/version-1.4.0.md b/docs/pages/project/changelog/version-1.4.0.md index 0d6c2726..012ee0d5 100644 --- a/docs/pages/project/changelog/version-1.4.0.md +++ b/docs/pages/project/changelog/version-1.4.0.md @@ -19,16 +19,16 @@ try { } ``` -### Features +## Features * Introduce `InvalidSource` thrown when using invalid JSON/YAML ([0739d1](https://github.com/CuyZ/Valinor/commit/0739d128caa66817ab278bc849ed836fc041b88b)) -### Bug Fixes +## Bug Fixes * Allow integer values in float types ([c6df24](https://github.com/CuyZ/Valinor/commit/c6df24da2bd1bb013ff0aee7c932983646fa4b0e)) * Make `array-key` type match `mixed` ([ccebf7](https://github.com/CuyZ/Valinor/commit/ccebf78c997eb89caa9bb2b73e82b25d9710e6a3)) * Prevent infinite loop when class has parent class with same name ([83eb05](https://github.com/CuyZ/Valinor/commit/83eb058478cc7dc162a77bb2800d2fbd1839639d)) -### Other +## Other * Add previous exception in various custom exceptions ([b9e381](https://github.com/CuyZ/Valinor/commit/b9e381604c90ac5531e1e7ae6b63b9abda36126e)) diff --git a/docs/pages/project/changelog/version-1.5.0.md b/docs/pages/project/changelog/version-1.5.0.md index 72dbec84..342bc161 100644 --- a/docs/pages/project/changelog/version-1.5.0.md +++ b/docs/pages/project/changelog/version-1.5.0.md @@ -3,22 +3,22 @@ !!! info inline end "[See release on GitHub]" [See release on GitHub]: https://github.com/CuyZ/Valinor/releases/tag/1.5.0 -### Features +## Features -* Introduce method to get date formats supported during mapping ([873961](https://github.com/romm/Valinor/commit/873961e8c17474bb4d96be6ea84390969d686d96)) +* Introduce method to get date formats supported during mapping ([873961](https://github.com/CuyZ/Valinor/commit/873961e8c17474bb4d96be6ea84390969d686d96)) -### Bug Fixes +## Bug Fixes -* Allow filesystem cache to be cleared when directory does not exist ([782408](https://github.com/romm/Valinor/commit/78240837e70a4a5f987e300de20478287e17224b)) -* Allow negative timestamp to be mapped to a datetime ([d358e8](https://github.com/romm/Valinor/commit/d358e83bf94dd37359ce4d52388cf7c8639d98ec)) -* Allow overriding of supported datetime formats ([1c70c2](https://github.com/romm/Valinor/commit/1c70c2d29ad9a70acc952031e5726e4ea492bad3)) -* Correctly handle message formatting for long truncated UTF8 strings ([0a8f37](https://github.com/romm/Valinor/commit/0a8f37b15572107f321c9525573bc5de82463048)) -* Make serialization of attributes possible ([e8ca2f](https://github.com/romm/Valinor/commit/e8ca2ff93c241034789d9af938bd7f5bbffd3d37)) -* Remove exception inheritance from `UnresolvableType` ([eaa128](https://github.com/romm/Valinor/commit/eaa1283ae15e00b64552abcd28c0236033577992)) -* Remove previous exception from `UnresolvableType` ([5c89c6](https://github.com/romm/Valinor/commit/5c89c66f0bdd87b4b50c401d1de22b72f4fde513)) +* Allow filesystem cache to be cleared when directory does not exist ([782408](https://github.com/CuyZ/Valinor/commit/78240837e70a4a5f987e300de20478287e17224b)) +* Allow negative timestamp to be mapped to a datetime ([d358e8](https://github.com/CuyZ/Valinor/commit/d358e83bf94dd37359ce4d52388cf7c8639d98ec)) +* Allow overriding of supported datetime formats ([1c70c2](https://github.com/CuyZ/Valinor/commit/1c70c2d29ad9a70acc952031e5726e4ea492bad3)) +* Correctly handle message formatting for long truncated UTF8 strings ([0a8f37](https://github.com/CuyZ/Valinor/commit/0a8f37b15572107f321c9525573bc5de82463048)) +* Make serialization of attributes possible ([e8ca2f](https://github.com/CuyZ/Valinor/commit/e8ca2ff93c241034789d9af938bd7f5bbffd3d37)) +* Remove exception inheritance from `UnresolvableType` ([eaa128](https://github.com/CuyZ/Valinor/commit/eaa1283ae15e00b64552abcd28c0236033577992)) +* Remove previous exception from `UnresolvableType` ([5c89c6](https://github.com/CuyZ/Valinor/commit/5c89c66f0bdd87b4b50c401d1de22b72f4fde513)) -### Other +## Other -* Avoid using `unserialize` when caching `NULL` default values ([5e9b4c](https://github.com/romm/Valinor/commit/5e9b4ce217cf43cd400127a76be73fd4fadd54c1)) -* Catch `json_encode` exception to help identifying parsing errors ([861c3b](https://github.com/romm/Valinor/commit/861c3b9da7f5c762db11da2ba9bbfc1cbdeaace8)) -* Update dependencies ([c31e5c](https://github.com/romm/Valinor/commit/c31e5c9eef02076d665b2d26c10d868a0414934e), [5fa107](https://github.com/romm/Valinor/commit/5fa1076e11d86e9f057ed58bd1d8c4a7d38580c3)) +* Avoid using `unserialize` when caching `NULL` default values ([5e9b4c](https://github.com/CuyZ/Valinor/commit/5e9b4ce217cf43cd400127a76be73fd4fadd54c1)) +* Catch `json_encode` exception to help identifying parsing errors ([861c3b](https://github.com/CuyZ/Valinor/commit/861c3b9da7f5c762db11da2ba9bbfc1cbdeaace8)) +* Update dependencies ([c31e5c](https://github.com/CuyZ/Valinor/commit/c31e5c9eef02076d665b2d26c10d868a0414934e), [5fa107](https://github.com/CuyZ/Valinor/commit/5fa1076e11d86e9f057ed58bd1d8c4a7d38580c3)) diff --git a/docs/pages/project/changelog/version-1.6.0.md b/docs/pages/project/changelog/version-1.6.0.md new file mode 100644 index 00000000..c4ec620c --- /dev/null +++ b/docs/pages/project/changelog/version-1.6.0.md @@ -0,0 +1,101 @@ +# Changelog 1.6.0 — 25th of August 2023 + +!!! info inline end "[See release on GitHub]" + [See release on GitHub]: https://github.com/CuyZ/Valinor/releases/tag/1.6.0 + +## Notable changes + +**Symfony Bundle** + +A bundle is now available for Symfony applications, it will ease the integration +and usage of the Valinor library in the framework. The documentation can be +found in the [CuyZ/Valinor-Bundle] repository. + +Note that [the documentation has been updated] to add information about the bundle +as well as tips on how to integrate the library in other frameworks. + +[the documentation has been updated]: https://valinor.cuyz.io/1.6/other/app-and-framework-integration/ +[CuyZ/Valinor-Bundle]: https://github.com/CuyZ/Valinor-Bundle/#readme + +**PHP 8.3 support** + +Thanks to [@TimWolla], the library now supports PHP 8.3, which entered its beta +phase. Do not hesitate to test the library with this new version, and [report any +encountered issue on the repository]. + +**Better type parsing** + +The first layer of the type parser has been completely rewritten. The previous +one would use regex to split a raw type in tokens, but that led to limitations — +mostly concerning quoted strings — that are now fixed. + +Although this change should not impact the end user, it is a major change in the +library, and it is possible that some edge cases were not covered by tests. If +that happens, please [report any encountered issue on the repository]. + +Example of previous limitations, now solved: + +```php +// Union of strings containing space chars +(new MapperBuilder()) + ->mapper() + ->map( + "'foo bar'|'baz fiz'", + 'baz fiz' + ); + +// Shaped array with special chars in the key +(new MapperBuilder()) + ->mapper() + ->map( + "array{'some & key': string}", + ['some & key' => 'value'] + ); +``` + +**More advanced array-key handling** + +It is now possible to use any string or integer as an array key. The following +types are now accepted and will work properly with the mapper: + +```php +$mapper->map("array<'foo'|'bar', string>", ['foo' => 'foo']); + +$mapper->map('array<42|1337, string>', [42 => 'foo']); + +$mapper->map('array', [42 => 'foo']); + +$mapper->map('array', [-42 => 'foo']); + +$mapper->map('array, string>', [42 => 'foo']); + +$mapper->map('array', ['foo' => 'foo']); + +$mapper->map('array', ['SomeClass' => 'foo']); +``` + +## Features + +* Add support for PHP 8.3 ([5c44f8](https://github.com/CuyZ/Valinor/commit/5c44f83d61def60d13ad7b582d76b2febc63e432)) +* Allow any string or integer in array key ([12af3e](https://github.com/CuyZ/Valinor/commit/12af3ed1d396b1dbf81b11a7ad5a0e205b47e74a)) +* Support microseconds in the Atom / RFC 3339 / ISO 8601 format ([c25721](https://github.com/CuyZ/Valinor/commit/c25721f838de1e9bf97e5d2c0b301ed2e62429a4)) + +## Bug Fixes + +* Correctly handle type inferring for method coming from interface ([2657f8](https://github.com/CuyZ/Valinor/commit/2657f8bd8836c658753a29737f08b91e145b67b8)) +* Detect missing closing bracket after comma in shaped array type ([2aa4b6](https://github.com/CuyZ/Valinor/commit/2aa4b6f0147e31b99b64c59d5d529d4b2230779b)) +* Handle class name collision while parsing types inside a class ([044072](https://github.com/CuyZ/Valinor/commit/044072e2cbdd6b12a2b820f3805963a9f8f22860)) +* Handle invalid Intl formats with `intl.use_exceptions=1` ([29da9a](https://github.com/CuyZ/Valinor/commit/29da9acd97db6f43bfc7db79b83755cca16734bd)) +* Improve cache warmup by creating required directories ([a3341a](https://github.com/CuyZ/Valinor/commit/a3341ab3d7b8b231059037558dbd7f87f420160c)) +* Load attributes lazily during runtime and cache access ([3e7c63](https://github.com/CuyZ/Valinor/commit/3e7c632b78bbf031e49b1ba03a8af24856611a82)) +* Properly handle class/enum name in shaped array key ([1964d4](https://github.com/CuyZ/Valinor/commit/1964d4158e1a196a33e1c430728ffd27c1a2d728)) + +## Other + +* Improve attributes arguments compilation ([c4acb1](https://github.com/CuyZ/Valinor/commit/c4acb17b4a21744bdc4260715efec56528d5ca83)) +* Replace regex-based type parser with character-based one ([ae8303](https://github.com/CuyZ/Valinor/commit/ae830327b2eca87bc171ac4d44c62fde49daa477)) +* Simplify symbol parsing algorithm ([f260cf](https://github.com/CuyZ/Valinor/commit/f260cfb0b1b6e84542a250a8f2f10533afdc021e)) +* Update Rector dependency ([669ff9](https://github.com/CuyZ/Valinor/commit/669ff992bd5544bb036646248643325d70e87a1d)) + +[report any encountered issue on the repository]: https://github.com/CuyZ/Valinor/issues/ +[@TimWolla]: https://github.com/TimWolla