What's Changed
Features
json_encode()
returns a non-empty-string withJSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE
by @fluffycondor in #9479- WIP: Performance/Feature Improvements to the Language Server by @tm1000 in #8960
- Support int separators in docblocks by @weirdan in #9491
- @Property annotations: allow not implying @psalm-seal-properties by @danielbeardsley in #9568
- Improve PHP8 str_* function signatures by @fluffycondor in #9534
- Contextual inference for first-class-callable by @klimick in #9570
Fixes
- Compare list generic params by @weirdan in #9487
- Add
truthy-string
to reserved word list. by @ZebulanStanphill in #9486 - Fix #9433 by @ptomulik in #9439
- Add missing array, float, int and bool types to callmaps by @othercorey in #9474
- Fix asserted property mangling by @weirdan in #9507
- Fix return type of str_split() by @othercorey in #9504
- Fix integer overflow in array keys by @weirdan in #9499
- Set inside_call for eval expressions by @edsrzf in #9519
- Improve json_encode/json_decode functions signatures by @fluffycondor in #9525
- Fix MissingThrowsDocblock when documented interface is extended by thrown exception interface by @paoloconi96 in #9528
- Fixed #9496 by @ptomulik in #9497
- Prevent assertion leaks from
else
by @weirdan in #9538 - Fixed coercion of mixed into non-empty-mixed by @weirdan in #9541
- always combine the result of expansions by @orklah in #9562
- Clean up unreflectable callmap methods by @othercorey in #9526
- Add better return type to mysqli fetch_field* by @MoonE in #9555
- [mysql] Add stubs for
mysqli
,mysqli_result
andmysqli_stmt
classes by @phansys in #9547 - Fix array_unique callmap by @othercorey in #9323
- Improve types for range() by @kamil-tekiela in #9577
- Fixed #9506 by @ptomulik in #9509
- Handle different line endings from baseline. by @DnwK98 in #9566
Docs
- Doc/psalm api on methods by @ygottschalk in #9544
Internal changes
- Optimize composer caching by @weirdan in #9493
- Update phar-build to large resource class in config.yml by @weirdan in #9494
- Refuse to use PHP versions we did not request by @weirdan in #9492
- Make Atomic subclasses consistently call their parent constructors by @edsrzf in #9406
- Remove always-empty ClassAnalyzer leftover_stmts array by @edsrzf in #9522
- Skip gnupg extension in callmap tests by @othercorey in #9576
New Contributors
- @ZebulanStanphill made their first contribution in #9486
- @paoloconi96 made their first contribution in #9528
- @MoonE made their first contribution in #9555
- @danielbeardsley made their first contribution in #9568
- @DnwK98 made their first contribution in #9566
Full Changelog: 5.8.0...5.9.0