What's Changed
- Added support for coercing
stdClasstoarray<TKey, TValue>by @Ocramius in #437 - chore(ga): bump actions/cache from 3 to 4 by @dependabot in #438
- Fix psalm 5.20 issues by @veewee in #439
json_encodenever returns an empty string by @gsteel in #441- feat(option):
applyclosure should be able to returnmixedby @devnix in #442 - Avoid iterating over non-nullable sends by @veewee in #444
- feat(locale): introduce 'Locale' component by @azjezz in #445
- chore(locale): add
Locale::default()function to retrieve default locale by @azjezz in #447 - feat(default): introduce
Defaultcomponent by @azjezz in #449 - chore: rename all enum cases to PascalCase instead of SHOUT_CASE by @azjezz in #450
- feat(io): introduce
ReadHandle::reachedEndOfDataSourceby @azjezz in #452 - chore: drop support for PHP 8.1 by @azjezz in #454
- feat(async): introduce optional incremental timeout to the public API by @azjezz in #455
- feat(types): Traceless types by @veewee in #453
- chore: miscellaneous changes by @azjezz in #458
- fix(type): Positive int has a broken exception path by @veewee in #459
- feat(types): Memoize simple types without arguments by @veewee in #457
- Fix PHP84 nullable types by @veewee in #460
- feat(type): Introduce type constructor purity by @veewee in #461
- feat(type): Mark type classes as readonly by @veewee in #463
- feat: narrow return type for
min(),max(),median()andmean()by @simPod in #464 - feat(type): Notnull type optimizations by @veewee in #465
- docs(type): Provides an initial documentation document for the Type component by @veewee in #462
- feat: narrow ResultInterface to concrete implementation after calling
isSucceeded()andisFailed()by @simPod in #466 - Revert "feat: narrow ResultInterface to concrete implementation after calling
isSucceeded()andisFailed()(#466) by @simPod in #469 - Change
Iter\apply(Closure(T): void)$functionto(Closure(T): mixed)by @devnix in #471 - Add
Vecversions of theuniquefunctions by @BackEndTea in #472 - feat(Result): introduce
Result::unwrapOr()by @simPod in #470 - feat: introduce
first_opt(),first_key_opt(),last_opt(),last_key_opt()andsearch_opt()by @simPod in #467 - feat(datetime): Introduce
DateTimecomponent by @azjezz in #446 - chore: fix static analysis by @azjezz in #474
- Adds
param-immediately-invoked-callableinOptionby @klifoth in #475 - Add missing Option::orElse method by @veewee in #476
- feat(DateTime) Provide a human-like months substract and add system by @veewee in #477
- Move nonnull type to public namespace by @veewee in #478
- Use MONTHS_PER_YEAR by @veewee in #479
- Update README.md by @mattsches in #481
- feat(collections): introduce
Set,SetInterface,MutableSet, andMutableSetInterfaceby @azjezz in #482 - Fix mutation coverage by @veewee in #485
- Add value-of type by @gsteel in #483
- feat(collections): add fromItems and containsKey by @pfmmfp in #484
New Contributors
- @klifoth made their first contribution in #475
- @mattsches made their first contribution in #481
- @pfmmfp made their first contribution in #484
Full Changelog: 2.9.0...3.0.0