vimeo/psalm (vimeo/psalm)
### [`v5.13.1`](https://togithub.com/vimeo/psalm/releases/tag/5.13.1)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.13.0...5.13.1)
#### What's Changed
##### Fixes
- Fix glob CallMap and stub to prevent crash on alpine by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9942](https://togithub.com/vimeo/psalm/pull/9942)
##### Docs
- Fix the link reference in the doc by [@stof](https://togithub.com/stof) in [https://github.com/vimeo/psalm/pull/9967](https://togithub.com/vimeo/psalm/pull/9967)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.13.0...5.13.1
### [`v5.13.0`](https://togithub.com/vimeo/psalm/releases/tag/5.13.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.12.0...5.13.0)
#### What's Changed
##### Features
- Add a support for multilevel glob wildcards by [@2e3s](https://togithub.com/2e3s) in [https://github.com/vimeo/psalm/pull/9813](https://togithub.com/vimeo/psalm/pull/9813)
- Mapping closed inheritance to union during assertion by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9829](https://togithub.com/vimeo/psalm/pull/9829)
- Use PHPStorm output format by default on JetBrains terminals by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9848](https://togithub.com/vimeo/psalm/pull/9848)
- sprintf basic non-empty-string return type provider by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9841](https://togithub.com/vimeo/psalm/pull/9841)
- Extend Shepherd payload by information about package versions by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9856](https://togithub.com/vimeo/psalm/pull/9856)
- Allow if/false assert for same variable to allow array/list distinction by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9853](https://togithub.com/vimeo/psalm/pull/9853)
- readonly does not have write access, therefore is safe as long as the… by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9887](https://togithub.com/vimeo/psalm/pull/9887)
- Sprintf improve return param type validation by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9877](https://togithub.com/vimeo/psalm/pull/9877)
- feat: cache.gz by [@dkarlovi](https://togithub.com/dkarlovi) in [https://github.com/vimeo/psalm/pull/9889](https://togithub.com/vimeo/psalm/pull/9889)
- make compressor configurable v2 by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9924](https://togithub.com/vimeo/psalm/pull/9924)
- Invalidate cached methods when referenced files are deleted by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/9931](https://togithub.com/vimeo/psalm/pull/9931)
- Invalidate cached methods when referenced class property types change by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/9955](https://togithub.com/vimeo/psalm/pull/9955)
##### Fixes
- glob: allow empty string for pattern by [@Hanmac](https://togithub.com/Hanmac) in [https://github.com/vimeo/psalm/pull/9814](https://togithub.com/vimeo/psalm/pull/9814)
- [GH-9825](https://togithub.com/vimeo/psalm/issues/9825) by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/9828](https://togithub.com/vimeo/psalm/pull/9828)
- Fix [#9824](https://togithub.com/vimeo/psalm/issues/9824) const enum self reference by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9833](https://togithub.com/vimeo/psalm/pull/9833)
- base64\_decode returns false only in strict mode by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/9832](https://togithub.com/vimeo/psalm/pull/9832)
- Dirname return type non empty string by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9837](https://togithub.com/vimeo/psalm/pull/9837)
- uniqid return type non-empty-string inconsistent by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9842](https://togithub.com/vimeo/psalm/pull/9842)
- PropertyNotSetInConstructor should not report for abstract constructors by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9844](https://togithub.com/vimeo/psalm/pull/9844)
- Intersect template types during inheritance check by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9865](https://togithub.com/vimeo/psalm/pull/9865)
- Fix generic type params mapping by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9866](https://togithub.com/vimeo/psalm/pull/9866)
- Better intersection of template types during inheritance check by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9883](https://togithub.com/vimeo/psalm/pull/9883)
- Update the signature of debug_backtrace by [@stof](https://togithub.com/stof) in [https://github.com/vimeo/psalm/pull/9868](https://togithub.com/vimeo/psalm/pull/9868)
- Glob return type stub by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9878](https://togithub.com/vimeo/psalm/pull/9878)
- Improve the return types for getimagesize and getimagesizefromstring by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9875](https://togithub.com/vimeo/psalm/pull/9875)
- Unmark DateInterval::$invert as read-only by [@morozov](https://togithub.com/morozov) in [https://github.com/vimeo/psalm/pull/9895](https://togithub.com/vimeo/psalm/pull/9895)
- Sprintf additional validations and bugfix by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9904](https://togithub.com/vimeo/psalm/pull/9904)
- Fixes [#9827](https://togithub.com/vimeo/psalm/issues/9827) by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9903](https://togithub.com/vimeo/psalm/pull/9903)
- set type of **LINE** to positive int by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9921](https://togithub.com/vimeo/psalm/pull/9921)
- Add a stub file for Attributes defined by PHP by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9920](https://togithub.com/vimeo/psalm/pull/9920)
- Don't update types of the outer scope when in an elseif conditional by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9922](https://togithub.com/vimeo/psalm/pull/9922)
- Update callmap for ext-mongodb 1.16 by [@alcaeus](https://togithub.com/alcaeus) in [https://github.com/vimeo/psalm/pull/9933](https://togithub.com/vimeo/psalm/pull/9933)
- Add call map entries for MongoDB functions by [@alcaeus](https://togithub.com/alcaeus) in [https://github.com/vimeo/psalm/pull/9934](https://togithub.com/vimeo/psalm/pull/9934)
- fix reconciliation between a list and iterable by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9950](https://togithub.com/vimeo/psalm/pull/9950)
- `non-empty-list` assertion for iterable by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9953](https://togithub.com/vimeo/psalm/pull/9953)
- fix PHP 7 sprintf too many arguments false positive by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9943](https://togithub.com/vimeo/psalm/pull/9943)
##### Docs
- Document classAndDescendants configuration tag by [@janopae](https://togithub.com/janopae) in [https://github.com/vimeo/psalm/pull/9867](https://togithub.com/vimeo/psalm/pull/9867)
##### Internal changes
- Introduce and use `IssueData` constants for severity levels by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9846](https://togithub.com/vimeo/psalm/pull/9846)
- Shepherd: send a list of issues (instead of array with int keys) by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9845](https://togithub.com/vimeo/psalm/pull/9845)
- fix failing mock tests by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9880](https://togithub.com/vimeo/psalm/pull/9880)
- Bump mheap/github-action-required-labels from 4 to 5 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/9898](https://togithub.com/vimeo/psalm/pull/9898)
- fix CI warnings for findUnusedCode in psalm 6 by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9915](https://togithub.com/vimeo/psalm/pull/9915)
- docblock parser minor performance gain by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9916](https://togithub.com/vimeo/psalm/pull/9916)
- improve perfs for switch by not creating reverse assertions against constants by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9929](https://togithub.com/vimeo/psalm/pull/9929)
- remove StementsVolatileCache for perf reasons by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9930](https://togithub.com/vimeo/psalm/pull/9930)
- put config to true to prevent deprecations for new config files by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9857](https://togithub.com/vimeo/psalm/pull/9857)
- Make config warn about missing cache related functions by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9935](https://togithub.com/vimeo/psalm/pull/9935)
- Fix/cache fail silent by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9932](https://togithub.com/vimeo/psalm/pull/9932)
##### Typos
- Fixed typo in ConstantTest by [@staabm](https://togithub.com/staabm) in [https://github.com/vimeo/psalm/pull/9835](https://togithub.com/vimeo/psalm/pull/9835)
#### New Contributors
- [@Hanmac](https://togithub.com/Hanmac) made their first contribution in [https://github.com/vimeo/psalm/pull/9814](https://togithub.com/vimeo/psalm/pull/9814)
- [@stof](https://togithub.com/stof) made their first contribution in [https://github.com/vimeo/psalm/pull/9868](https://togithub.com/vimeo/psalm/pull/9868)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.12.0...5.13.0
### [`v5.12.0`](https://togithub.com/vimeo/psalm/releases/tag/5.12.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.11.0...5.12.0)
#### What's Changed
##### Features
- WIP - Limit inheritance to a subset of classes [#1450](https://togithub.com/vimeo/psalm/issues/1450) by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9687](https://togithub.com/vimeo/psalm/pull/9687)
- UnsupportedPropertyReferenceUsage by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/9769](https://togithub.com/vimeo/psalm/pull/9769)
- Improve return types of pow() by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9795](https://togithub.com/vimeo/psalm/pull/9795)
- Narrow the type of $haystack when strpos(...) !== false by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9788](https://togithub.com/vimeo/psalm/pull/9788)
- allow using more than 8G of memory in psalter by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9805](https://togithub.com/vimeo/psalm/pull/9805)
##### Fixes
- Fix missing global class type when scanning cached files by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/9735](https://togithub.com/vimeo/psalm/pull/9735)
- Fix union argument type check against templated param by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9750](https://togithub.com/vimeo/psalm/pull/9750)
- Allow dynamic properties from PHPDoc by [@fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/9742](https://togithub.com/vimeo/psalm/pull/9742)
- improve glob stubs by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9752](https://togithub.com/vimeo/psalm/pull/9752)
- Removed return type false from date and gmdate by [@Alkisum](https://togithub.com/Alkisum) in [https://github.com/vimeo/psalm/pull/9761](https://togithub.com/vimeo/psalm/pull/9761)
- methods and vars cannot be falsy by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9796](https://togithub.com/vimeo/psalm/pull/9796)
- fix offset for type param changes by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9803](https://togithub.com/vimeo/psalm/pull/9803)
##### Docs
- Documented suggestions for HTML user input by [@mmcev106](https://togithub.com/mmcev106) in [https://github.com/vimeo/psalm/pull/9780](https://togithub.com/vimeo/psalm/pull/9780)
- Document array shape unsealing syntax by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9784](https://togithub.com/vimeo/psalm/pull/9784)
##### Internal changes
- Enable opcache if it is installed by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9779](https://togithub.com/vimeo/psalm/pull/9779)
#### New Contributors
- [@tscni](https://togithub.com/tscni) made their first contribution in [https://github.com/vimeo/psalm/pull/9735](https://togithub.com/vimeo/psalm/pull/9735)
- [@Alkisum](https://togithub.com/Alkisum) made their first contribution in [https://github.com/vimeo/psalm/pull/9761](https://togithub.com/vimeo/psalm/pull/9761)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.11.0...5.12.0
### [`v5.11.0`](https://togithub.com/vimeo/psalm/releases/tag/5.11.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.10.0...5.11.0)
#### What's Changed
##### Fixes
- SplDoublyLinkedList's index is always int by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/9736](https://togithub.com/vimeo/psalm/pull/9736)
- Fix string negation to never by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9743](https://togithub.com/vimeo/psalm/pull/9743)
- Fix ParadoxicalCondition with complex match expression by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9739](https://togithub.com/vimeo/psalm/pull/9739)
- Fix invalid cast for templated class-string by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9738](https://togithub.com/vimeo/psalm/pull/9738)
- Fix OverriddenPropertyAccess error message by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9740](https://togithub.com/vimeo/psalm/pull/9740)
- Ignore nullable return form SimpleXMLElement::addChild() by [@greg0ire](https://togithub.com/greg0ire) in [https://github.com/vimeo/psalm/pull/9745](https://togithub.com/vimeo/psalm/pull/9745)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.10.0...5.11.0
### [`v5.10.0`](https://togithub.com/vimeo/psalm/releases/tag/5.10.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.9.0...5.10.0)
#### What's Changed
##### Features
- Introduce `value-of` with backed enum cases in assertions by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9586](https://togithub.com/vimeo/psalm/pull/9586)
- Introduce callable object intersection by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9599](https://togithub.com/vimeo/psalm/pull/9599)
- Contextual inference for const callable by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9623](https://togithub.com/vimeo/psalm/pull/9623)
- Allow to intersect type alias with non-type-aliases by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9638](https://togithub.com/vimeo/psalm/pull/9638)
- Provide support for templated `value-of` enum values by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9655](https://togithub.com/vimeo/psalm/pull/9655)
- (re-)implement object-shape assertions by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9656](https://togithub.com/vimeo/psalm/pull/9656)
- Support anonymous object template replacement by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9664](https://togithub.com/vimeo/psalm/pull/9664)
- Implement unsealed array generic syntax by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9694](https://togithub.com/vimeo/psalm/pull/9694)
- Introduce BeforeExpressionAnalysisEvent by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/9725](https://togithub.com/vimeo/psalm/pull/9725)
- Add support for [@psalm-no-seal-properties](https://togithub.com/psalm-no-seal-properties) and [@psalm-no-seal-methods](https://togithub.com/psalm-no-seal-methods) by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9681](https://togithub.com/vimeo/psalm/pull/9681)
##### Fixes
- Fix remaining intl, reflection. xml and zip callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9595](https://togithub.com/vimeo/psalm/pull/9595)
- fix [#9049](https://togithub.com/vimeo/psalm/issues/9049) by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9598](https://togithub.com/vimeo/psalm/pull/9598)
- fix coercion detection between two keyed arrays by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9606](https://togithub.com/vimeo/psalm/pull/9606)
- fix: treat includes starting with '.' and '..' correct by [@jjjb03](https://togithub.com/jjjb03) in [https://github.com/vimeo/psalm/pull/9608](https://togithub.com/vimeo/psalm/pull/9608)
- Allow enabling mixed issues reporting for error levels > 2. by [@ADmad](https://togithub.com/ADmad) in [https://github.com/vimeo/psalm/pull/9626](https://togithub.com/vimeo/psalm/pull/9626)
- Preserve `non-empty-string` type when combining literal and numeric strings by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9630](https://togithub.com/vimeo/psalm/pull/9630)
- Do not report required closure arguments as unused by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9629](https://togithub.com/vimeo/psalm/pull/9629)
- Fix various db callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9632](https://togithub.com/vimeo/psalm/pull/9632)
- fix: add missing constructor parameter to IteratorIterator by [@SenseException](https://togithub.com/SenseException) in [https://github.com/vimeo/psalm/pull/9646](https://togithub.com/vimeo/psalm/pull/9646)
- Flatten `match` arm conditions to check conditions independently by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/9647](https://togithub.com/vimeo/psalm/pull/9647)
- Fixed non empty arg issue in array_splice function by [@whizsid](https://togithub.com/whizsid) in [https://github.com/vimeo/psalm/pull/9643](https://togithub.com/vimeo/psalm/pull/9643)
- Fix `array_flip` to preserve non-empty array type by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/9651](https://togithub.com/vimeo/psalm/pull/9651)
- Fix list template replacement by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9658](https://togithub.com/vimeo/psalm/pull/9658)
- Fix iterable template replacement by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9660](https://togithub.com/vimeo/psalm/pull/9660)
- Fix/9373 using enum property as const array key by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9393](https://togithub.com/vimeo/psalm/pull/9393)
- Specify array share for `stream_context_get_params` return value by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9663](https://togithub.com/vimeo/psalm/pull/9663)
- Fixed crash issue when using multiple literals for array_splice by [@whizsid](https://togithub.com/whizsid) in [https://github.com/vimeo/psalm/pull/9673](https://togithub.com/vimeo/psalm/pull/9673)
- Fix comparison of unions of multiple callables by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9676](https://togithub.com/vimeo/psalm/pull/9676)
- Add stub for DateInterval by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9682](https://togithub.com/vimeo/psalm/pull/9682)
- Return a non-empty-(lowercase-)string from mb_strtolower by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9678](https://togithub.com/vimeo/psalm/pull/9678)
- Don't throw UnnecesseryVarAnnotation when hinting a mixed template var by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9679](https://togithub.com/vimeo/psalm/pull/9679)
- Fix is_object assertions on final classes by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9686](https://togithub.com/vimeo/psalm/pull/9686)
- Add return type provider for date/gmdate by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9691](https://togithub.com/vimeo/psalm/pull/9691)
- Avoid wrong assertions when working with objects returned by methods by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9685](https://togithub.com/vimeo/psalm/pull/9685)
- Handle included directory paths without crashing by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9701](https://togithub.com/vimeo/psalm/pull/9701)
- Contextual closure arg inference for class methods by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9700](https://togithub.com/vimeo/psalm/pull/9700)
- Fix [#9692](https://togithub.com/vimeo/psalm/issues/9692) by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9693](https://togithub.com/vimeo/psalm/pull/9693)
- Allow running new on template objects by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9704](https://togithub.com/vimeo/psalm/pull/9704)
- Fix date return type provider by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9711](https://togithub.com/vimeo/psalm/pull/9711)
- Fix UnevaluatedCode false positive at declare(strict_types=1) by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9719](https://togithub.com/vimeo/psalm/pull/9719)
- Fix ambiguous constant inheritance false positive by [@Jean85](https://togithub.com/Jean85) in [https://github.com/vimeo/psalm/pull/9720](https://togithub.com/vimeo/psalm/pull/9720)
##### Docs
- Add CLI help for the error-level option by [@dantleech](https://togithub.com/dantleech) in [https://github.com/vimeo/psalm/pull/9590](https://togithub.com/vimeo/psalm/pull/9590)
- Replace `@template T as X` with `@template T of X` in documentation by [@janopae](https://togithub.com/janopae) in [https://github.com/vimeo/psalm/pull/9690](https://togithub.com/vimeo/psalm/pull/9690)
- Make it easier to find how to promote Trace by [@greg0ire](https://togithub.com/greg0ire) in [https://github.com/vimeo/psalm/pull/9717](https://togithub.com/vimeo/psalm/pull/9717)
- Document [@mixin](https://togithub.com/mixin) by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9706](https://togithub.com/vimeo/psalm/pull/9706)
##### Internal changes
- Bump mheap/github-action-required-labels from 3 to 4 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/9601](https://togithub.com/vimeo/psalm/pull/9601)
- Avoid verbose opcache logging by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9670](https://togithub.com/vimeo/psalm/pull/9670)
- Valid array access on a non-empty-string yields a non-empty-string by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9675](https://togithub.com/vimeo/psalm/pull/9675)
- Remove clone leftovers from immutable refactoring by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9709](https://togithub.com/vimeo/psalm/pull/9709)
#### New Contributors
- [@dantleech](https://togithub.com/dantleech) made their first contribution in [https://github.com/vimeo/psalm/pull/9590](https://togithub.com/vimeo/psalm/pull/9590)
- [@jjjb03](https://togithub.com/jjjb03) made their first contribution in [https://github.com/vimeo/psalm/pull/9608](https://togithub.com/vimeo/psalm/pull/9608)
- [@SenseException](https://togithub.com/SenseException) made their first contribution in [https://github.com/vimeo/psalm/pull/9646](https://togithub.com/vimeo/psalm/pull/9646)
- [@tuqqu](https://togithub.com/tuqqu) made their first contribution in [https://github.com/vimeo/psalm/pull/9647](https://togithub.com/vimeo/psalm/pull/9647)
- [@whizsid](https://togithub.com/whizsid) made their first contribution in [https://github.com/vimeo/psalm/pull/9643](https://togithub.com/vimeo/psalm/pull/9643)
- [@janopae](https://togithub.com/janopae) made their first contribution in [https://github.com/vimeo/psalm/pull/9690](https://togithub.com/vimeo/psalm/pull/9690)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.9.0...5.10.0
### [`v5.9.0`](https://togithub.com/vimeo/psalm/releases/tag/5.9.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.8.0...5.9.0)
#### What's Changed
##### Features
- `json_encode()` returns a non-empty-string with `JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE` by [@fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/9479](https://togithub.com/vimeo/psalm/pull/9479)
- WIP: Performance/Feature Improvements to the Language Server by [@tm1000](https://togithub.com/tm1000) in [https://github.com/vimeo/psalm/pull/8960](https://togithub.com/vimeo/psalm/pull/8960)
- Support int separators in docblocks by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9491](https://togithub.com/vimeo/psalm/pull/9491)
- [@property](https://togithub.com/property) annotations: allow *not* implying [@psalm-seal-properties](https://togithub.com/psalm-seal-properties) by [@danielbeardsley](https://togithub.com/danielbeardsley) in [https://github.com/vimeo/psalm/pull/9568](https://togithub.com/vimeo/psalm/pull/9568)
- Improve PHP8 str_\* function signatures by [@fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/9534](https://togithub.com/vimeo/psalm/pull/9534)
- Contextual inference for first-class-callable by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9570](https://togithub.com/vimeo/psalm/pull/9570)
##### Fixes
- Compare list generic params by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9487](https://togithub.com/vimeo/psalm/pull/9487)
- Add `truthy-string` to reserved word list. by [@ZebulanStanphill](https://togithub.com/ZebulanStanphill) in [https://github.com/vimeo/psalm/pull/9486](https://togithub.com/vimeo/psalm/pull/9486)
- Fix [#9433](https://togithub.com/vimeo/psalm/issues/9433) by [@ptomulik](https://togithub.com/ptomulik) in [https://github.com/vimeo/psalm/pull/9439](https://togithub.com/vimeo/psalm/pull/9439)
- Add missing array, float, int and bool types to callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9474](https://togithub.com/vimeo/psalm/pull/9474)
- Fix asserted property mangling by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9507](https://togithub.com/vimeo/psalm/pull/9507)
- Fix return type of str_split() by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9504](https://togithub.com/vimeo/psalm/pull/9504)
- Fix integer overflow in array keys by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9499](https://togithub.com/vimeo/psalm/pull/9499)
- Set inside_call for eval expressions by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9519](https://togithub.com/vimeo/psalm/pull/9519)
- Improve json_encode/json_decode functions signatures by [@fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/9525](https://togithub.com/vimeo/psalm/pull/9525)
- Fix MissingThrowsDocblock when documented interface is extended by thrown exception interface by [@paoloconi96](https://togithub.com/paoloconi96) in [https://github.com/vimeo/psalm/pull/9528](https://togithub.com/vimeo/psalm/pull/9528)
- Fixed [#9496](https://togithub.com/vimeo/psalm/issues/9496) by [@ptomulik](https://togithub.com/ptomulik) in [https://github.com/vimeo/psalm/pull/9497](https://togithub.com/vimeo/psalm/pull/9497)
- Prevent assertion leaks from `else` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9538](https://togithub.com/vimeo/psalm/pull/9538)
- Fixed coercion of mixed into non-empty-mixed by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9541](https://togithub.com/vimeo/psalm/pull/9541)
- always combine the result of expansions by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9562](https://togithub.com/vimeo/psalm/pull/9562)
- Clean up unreflectable callmap methods by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9526](https://togithub.com/vimeo/psalm/pull/9526)
- Add better return type to mysqli fetch_field\* by [@MoonE](https://togithub.com/MoonE) in [https://github.com/vimeo/psalm/pull/9555](https://togithub.com/vimeo/psalm/pull/9555)
- \[mysql] Add stubs for `mysqli`, `mysqli_result` and `mysqli_stmt` classes by [@phansys](https://togithub.com/phansys) in [https://github.com/vimeo/psalm/pull/9547](https://togithub.com/vimeo/psalm/pull/9547)
- Fix array_unique callmap by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9323](https://togithub.com/vimeo/psalm/pull/9323)
- Improve types for range() by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/9577](https://togithub.com/vimeo/psalm/pull/9577)
- Fixed [#9506](https://togithub.com/vimeo/psalm/issues/9506) by [@ptomulik](https://togithub.com/ptomulik) in [https://github.com/vimeo/psalm/pull/9509](https://togithub.com/vimeo/psalm/pull/9509)
- Handle different line endings from baseline. by [@DnwK98](https://togithub.com/DnwK98) in [https://github.com/vimeo/psalm/pull/9566](https://togithub.com/vimeo/psalm/pull/9566)
##### Docs
- Doc/psalm api on methods by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9544](https://togithub.com/vimeo/psalm/pull/9544)
##### Internal changes
- Optimize composer caching by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9493](https://togithub.com/vimeo/psalm/pull/9493)
- Update phar-build to large resource class in config.yml by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9494](https://togithub.com/vimeo/psalm/pull/9494)
- Refuse to use PHP versions we did not request by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9492](https://togithub.com/vimeo/psalm/pull/9492)
- Make Atomic subclasses consistently call their parent constructors by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9406](https://togithub.com/vimeo/psalm/pull/9406)
- Remove always-empty ClassAnalyzer leftover_stmts array by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9522](https://togithub.com/vimeo/psalm/pull/9522)
- Skip gnupg extension in callmap tests by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9576](https://togithub.com/vimeo/psalm/pull/9576)
#### New Contributors
- [@ZebulanStanphill](https://togithub.com/ZebulanStanphill) made their first contribution in [https://github.com/vimeo/psalm/pull/9486](https://togithub.com/vimeo/psalm/pull/9486)
- [@paoloconi96](https://togithub.com/paoloconi96) made their first contribution in [https://github.com/vimeo/psalm/pull/9528](https://togithub.com/vimeo/psalm/pull/9528)
- [@MoonE](https://togithub.com/MoonE) made their first contribution in [https://github.com/vimeo/psalm/pull/9555](https://togithub.com/vimeo/psalm/pull/9555)
- [@danielbeardsley](https://togithub.com/danielbeardsley) made their first contribution in [https://github.com/vimeo/psalm/pull/9568](https://togithub.com/vimeo/psalm/pull/9568)
- [@DnwK98](https://togithub.com/DnwK98) made their first contribution in [https://github.com/vimeo/psalm/pull/9566](https://togithub.com/vimeo/psalm/pull/9566)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.8.0...5.9.0
### [`v5.8.0`](https://togithub.com/vimeo/psalm/releases/tag/5.8.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.7...5.8.0)
#### What's Changed
##### Features
- FFI stubs improvement by [@UlrichEckhardt](https://togithub.com/UlrichEckhardt) in [https://github.com/vimeo/psalm/pull/9368](https://togithub.com/vimeo/psalm/pull/9368)
- Support sizeof alias of count by [@jsanahuja](https://togithub.com/jsanahuja) in [https://github.com/vimeo/psalm/pull/9375](https://togithub.com/vimeo/psalm/pull/9375)
- Iterated array in `foreach` body is never empty by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9380](https://togithub.com/vimeo/psalm/pull/9380)
- Process `@psalm-api` tags on methods by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9383](https://togithub.com/vimeo/psalm/pull/9383)
- Enforce literal string length limit by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9381](https://togithub.com/vimeo/psalm/pull/9381)
- \[ibm_db2] Improve return type inference for `db2_autocommit()` by [@phansys](https://togithub.com/phansys) in [https://github.com/vimeo/psalm/pull/9310](https://togithub.com/vimeo/psalm/pull/9310)
- Only disable grpc extension if it is not properly configured by [@gndk](https://togithub.com/gndk) in [https://github.com/vimeo/psalm/pull/9398](https://togithub.com/vimeo/psalm/pull/9398)
- PHP 8.3 dictionary by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9366](https://togithub.com/vimeo/psalm/pull/9366)
- concat should never remove non empty non falsy from string [#9411](https://togithub.com/vimeo/psalm/issues/9411) by [@EgorBakulin](https://togithub.com/EgorBakulin) in [https://github.com/vimeo/psalm/pull/9422](https://togithub.com/vimeo/psalm/pull/9422)
- Forbid private final methods by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9442](https://togithub.com/vimeo/psalm/pull/9442)
- Support for `readonly` classes by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9444](https://togithub.com/vimeo/psalm/pull/9444)
- Consider new HTML entity en/decode function defaults since PHP 8.1 by [@pereorga](https://togithub.com/pereorga) in [https://github.com/vimeo/psalm/pull/9471](https://togithub.com/vimeo/psalm/pull/9471)
##### Fixes
- Instances of `object` returned by `db2_*()` functions are always instances of `stdClass` by [@phansys](https://togithub.com/phansys) in [https://github.com/vimeo/psalm/pull/9369](https://togithub.com/vimeo/psalm/pull/9369)
- Simplify and fix Shepherd to support custom endpoints for reporting by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9296](https://togithub.com/vimeo/psalm/pull/9296)
- Fixes [#9384](https://togithub.com/vimeo/psalm/issues/9384) (Wrong type for variable checked with is_long) by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9385](https://togithub.com/vimeo/psalm/pull/9385)
- Update Phar callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9389](https://togithub.com/vimeo/psalm/pull/9389)
- Correctly process use aliases in `@psalm-scope-this` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9390](https://togithub.com/vimeo/psalm/pull/9390)
- Allow `array` as magic method name by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9391](https://togithub.com/vimeo/psalm/pull/9391)
- Consistently report docblock issues on all classlikes by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9392](https://togithub.com/vimeo/psalm/pull/9392)
- \[ibm_db2] Update some return types in callmaps by [@phansys](https://togithub.com/phansys) in [https://github.com/vimeo/psalm/pull/9387](https://togithub.com/vimeo/psalm/pull/9387)
- Preserve PossiblyUndefinedVariable when fixing UnusedVariable by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9400](https://togithub.com/vimeo/psalm/pull/9400)
- \[ibm_db2] Update callmaps by [@phansys](https://togithub.com/phansys) in [https://github.com/vimeo/psalm/pull/9404](https://togithub.com/vimeo/psalm/pull/9404)
- Fix [#9401](https://togithub.com/vimeo/psalm/issues/9401) by [@ptomulik](https://togithub.com/ptomulik) in [https://github.com/vimeo/psalm/pull/9418](https://togithub.com/vimeo/psalm/pull/9418)
- Fix remaining spl and iterator callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9420](https://togithub.com/vimeo/psalm/pull/9420)
- An attempt to fix [#4460](https://togithub.com/vimeo/psalm/issues/4460) by [@ptomulik](https://togithub.com/ptomulik) in [https://github.com/vimeo/psalm/pull/9415](https://togithub.com/vimeo/psalm/pull/9415)
- `array_pop` is impure by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9434](https://togithub.com/vimeo/psalm/pull/9434)
- Revert "`array_pop` is impure" by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9435](https://togithub.com/vimeo/psalm/pull/9435)
- Update pack() stub by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9438](https://togithub.com/vimeo/psalm/pull/9438)
- Merge param descriptions when adding or updating types by [@aboyton](https://togithub.com/aboyton) in [https://github.com/vimeo/psalm/pull/9441](https://togithub.com/vimeo/psalm/pull/9441)
- PHP 8.2 attributes moved to 8.2 stub by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9445](https://togithub.com/vimeo/psalm/pull/9445)
- Improce enum case reconciliation by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9457](https://togithub.com/vimeo/psalm/pull/9457)
- Do not strip the last `)` bracket when parsing phpdoc type aliases. by [@pvandommelen](https://togithub.com/pvandommelen) in [https://github.com/vimeo/psalm/pull/9458](https://togithub.com/vimeo/psalm/pull/9458)
- Replace package-versions with Composer 2 APIs by [@Jean85](https://togithub.com/Jean85) in [https://github.com/vimeo/psalm/pull/9459](https://togithub.com/vimeo/psalm/pull/9459)
- Fix DOM callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9460](https://togithub.com/vimeo/psalm/pull/9460)
- Don't crash on unary minus overflow by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9466](https://togithub.com/vimeo/psalm/pull/9466)
- Fix remaining intl callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9473](https://togithub.com/vimeo/psalm/pull/9473)
##### Internal changes
- Convert callmap associative-array types into proper array types by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9362](https://togithub.com/vimeo/psalm/pull/9362)
- Callmap is always non-empty by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9405](https://togithub.com/vimeo/psalm/pull/9405)
- Reorganize pushes to `psalm/phar` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9399](https://togithub.com/vimeo/psalm/pull/9399)
- Do not display ext deprecation note when `disableExtensions` used by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9291](https://togithub.com/vimeo/psalm/pull/9291)
- Require `
#### What's Changed
##### Fixes
- Don't crash on empty `jit_buffer_size` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9397](https://togithub.com/vimeo/psalm/pull/9397)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.6...5.7.7
### [`v5.7.6`](https://togithub.com/vimeo/psalm/releases/tag/5.7.6)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.5...5.7.6)
#### What's Changed
##### Fixes
- Disable `opcache.preload` if it's enabled by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9388](https://togithub.com/vimeo/psalm/pull/9388)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.5...5.7.6
### [`v5.7.5`](https://togithub.com/vimeo/psalm/releases/tag/5.7.5)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.4...5.7.5)
#### What's Changed
##### Fixes
- Workaround opcache issue (fixes [#9363](https://togithub.com/vimeo/psalm/issues/9363)) by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9364](https://togithub.com/vimeo/psalm/pull/9364)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.4...5.7.5
### [`v5.7.4`](https://togithub.com/vimeo/psalm/releases/tag/5.7.4)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.3...5.7.4)
#### What's Changed
##### Fixes
- Include setrawcookie as an impure function by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9356](https://togithub.com/vimeo/psalm/pull/9356)
- Fix several spl callmap methods by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9360](https://togithub.com/vimeo/psalm/pull/9360)
- Revert "[#7387](https://togithub.com/vimeo/psalm/issues/7387) Add asserting non-empty-string by strlen" by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9358](https://togithub.com/vimeo/psalm/pull/9358)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.3...5.7.4
### [`v5.7.3`](https://togithub.com/vimeo/psalm/releases/tag/5.7.3)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.2...5.7.3)
#### What's Changed
##### Fixes
- Replace use of DOMParentNode::append() with appendChild() by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9354](https://togithub.com/vimeo/psalm/pull/9354)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.2...5.7.3
### [`v5.7.2`](https://togithub.com/vimeo/psalm/releases/tag/5.7.2)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.1...5.7.2)
#### What's Changed
##### Fixes
- fix (DateTime|DateTimeImmutable)::modify() return types by [@DaDeather](https://togithub.com/DaDeather) in [https://github.com/vimeo/psalm/pull/9172](https://togithub.com/vimeo/psalm/pull/9172)
- Workaround arm64 opcache bug (fixes [#9350](https://togithub.com/vimeo/psalm/issues/9350)) by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9351](https://togithub.com/vimeo/psalm/pull/9351)
#### New Contributors
- [@DaDeather](https://togithub.com/DaDeather) made their first contribution in [https://github.com/vimeo/psalm/pull/9172](https://togithub.com/vimeo/psalm/pull/9172)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.1...5.7.2
### [`v5.7.1`](https://togithub.com/vimeo/psalm/releases/tag/5.7.1)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.0...5.7.1)
#### What's Changed
##### Fixes
- Always use 0x7FFEBFFF opcache optimization level (fixes [#9340](https://togithub.com/vimeo/psalm/issues/9340)) by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9342](https://togithub.com/vimeo/psalm/pull/9342)
- Fix `PsalmRestarter::restart()` signature by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9347](https://togithub.com/vimeo/psalm/pull/9347)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.7.0...5.7.1
### [`v5.7.0`](https://togithub.com/vimeo/psalm/releases/tag/5.7.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.6.0...5.7.0)
#### What's Changed
##### Deprecations
- Deprecate `FunctionLikeStorage::$unused_docblock_params` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9312](https://togithub.com/vimeo/psalm/pull/9312)
##### Features
- [#7387](https://togithub.com/vimeo/psalm/issues/7387) Add asserting non-empty-string by strlen by [@LeoVie](https://togithub.com/LeoVie) in [https://github.com/vimeo/psalm/pull/8761](https://togithub.com/vimeo/psalm/pull/8761)
- Forbid implementing some interfaces by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9272](https://togithub.com/vimeo/psalm/pull/9272)
- Added issue type and psalm.dev link to Emacs report by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9299](https://togithub.com/vimeo/psalm/pull/9299)
- Allow `@var` annotations on global vars by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9301](https://togithub.com/vimeo/psalm/pull/9301)
- Allow suppressing `MissingThrowsDocblock` for individual exceptions by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9303](https://togithub.com/vimeo/psalm/pull/9303)
- Flag direct constructor calls by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9311](https://togithub.com/vimeo/psalm/pull/9311)
- Flag docblock parameters that have no counterparts in function signature by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9314](https://togithub.com/vimeo/psalm/pull/9314)
- Forbid non-null defaults for callable parameters by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9316](https://togithub.com/vimeo/psalm/pull/9316)
##### Fixes
- cdata in baseline by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/9184](https://togithub.com/vimeo/psalm/pull/9184)
- Resolve class constants within PhpStorm metadata by [@shvlv](https://togithub.com/shvlv) in [https://github.com/vimeo/psalm/pull/9173](https://togithub.com/vimeo/psalm/pull/9173)
- Detect duplicate keys in array shapes by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9177](https://togithub.com/vimeo/psalm/pull/9177)
- Fix xmlrpc callmap functions that were dropped in PHP 8.0 by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9212](https://togithub.com/vimeo/psalm/pull/9212)
- fix `didChange` event in LSP by [@ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/9207](https://togithub.com/vimeo/psalm/pull/9207)
- Added [@psalm-pure](https://togithub.com/psalm-pure) to filter_var() by [@mmcev106](https://togithub.com/mmcev106) in [https://github.com/vimeo/psalm/pull/9170](https://togithub.com/vimeo/psalm/pull/9170)
- Add DatePeriod::INCLUDE_END_DATE option by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9220](https://togithub.com/vimeo/psalm/pull/9220)
- Add more specific return for class-implements by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9228](https://togithub.com/vimeo/psalm/pull/9228)
- Convert callmaps resource types by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9227](https://togithub.com/vimeo/psalm/pull/9227)
- Use "numeric-string" type for some MySQLi properties by [@phansys](https://togithub.com/phansys) in [https://github.com/vimeo/psalm/pull/9226](https://togithub.com/vimeo/psalm/pull/9226)
- find_unused_code CLI arg should not be overwritten by config file by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9235](https://togithub.com/vimeo/psalm/pull/9235)
- Fix divide by a floating point zero by [@aboyton](https://togithub.com/aboyton) in [https://github.com/vimeo/psalm/pull/9247](https://togithub.com/vimeo/psalm/pull/9247)
- Don't crash on unknown exceptions in `@throws` docblock by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9250](https://togithub.com/vimeo/psalm/pull/9250)
- Fix Spoofchecker callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9256](https://togithub.com/vimeo/psalm/pull/9256)
- Fix crashes with invalid `@psalm-check-type` syntax by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9257](https://togithub.com/vimeo/psalm/pull/9257)
- Fix crash when int range boundary is overflown by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9260](https://togithub.com/vimeo/psalm/pull/9260)
- Drop abandoned mcve m\_ functions by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9266](https://togithub.com/vimeo/psalm/pull/9266)
- Fix several callmap fuction signatures by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9264](https://togithub.com/vimeo/psalm/pull/9264)
- fix lstat bug cache directory race condition by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9253](https://togithub.com/vimeo/psalm/pull/9253)
- Drop removed xsl callmap functions by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9269](https://togithub.com/vimeo/psalm/pull/9269)
- Drop abandoned maxdb callmap functions by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9270](https://togithub.com/vimeo/psalm/pull/9270)
- Drop abandoned newt callmap functions by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9271](https://togithub.com/vimeo/psalm/pull/9271)
- Update callmap types for php 8.2 by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9273](https://togithub.com/vimeo/psalm/pull/9273)
- Fix opcache being loaded twice by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9265](https://togithub.com/vimeo/psalm/pull/9265)
- Forbid overriding built-in enum methods by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9280](https://togithub.com/vimeo/psalm/pull/9280)
- Fix remaining callmap functions by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9278](https://togithub.com/vimeo/psalm/pull/9278)
- Add curl stubs to prevent crashes by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/9283](https://togithub.com/vimeo/psalm/pull/9283)
- Compare enum cases thoroughly by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9286](https://togithub.com/vimeo/psalm/pull/9286)
- Drop abandoned ncurses extension by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9293](https://togithub.com/vimeo/psalm/pull/9293)
- Drop abandoned cairo extension by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9292](https://togithub.com/vimeo/psalm/pull/9292)
- Emit issues for calls to `is_a(string, class-string, false)` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9287](https://togithub.com/vimeo/psalm/pull/9287)
- Made `WeakReference` mutable by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9297](https://togithub.com/vimeo/psalm/pull/9297)
- Flag class constant references where LHS is ordinary string by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9302](https://togithub.com/vimeo/psalm/pull/9302)
- Fixed issue message for missing `@psalm-external-mutation-free` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9304](https://togithub.com/vimeo/psalm/pull/9304)
- Fix memcached extension callmap by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9309](https://togithub.com/vimeo/psalm/pull/9309)
- Fix strpos stub return type by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9322](https://togithub.com/vimeo/psalm/pull/9322)
- Propagate phantom classes to closure context by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/9329](https://togithub.com/vimeo/psalm/pull/9329)
- Fix language server first-class callable crashes by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9336](https://togithub.com/vimeo/psalm/pull/9336)
- Forbid first-class callables in `new` by [@weirdan](https:/
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
^4.29
->^5.0
Release Notes
vimeo/psalm (vimeo/psalm)
### [`v5.13.1`](https://togithub.com/vimeo/psalm/releases/tag/5.13.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.13.0...5.13.1) #### What's Changed ##### Fixes - Fix glob CallMap and stub to prevent crash on alpine by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9942](https://togithub.com/vimeo/psalm/pull/9942) ##### Docs - Fix the link reference in the doc by [@stof](https://togithub.com/stof) in [https://github.com/vimeo/psalm/pull/9967](https://togithub.com/vimeo/psalm/pull/9967) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.13.0...5.13.1 ### [`v5.13.0`](https://togithub.com/vimeo/psalm/releases/tag/5.13.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.12.0...5.13.0) #### What's Changed ##### Features - Add a support for multilevel glob wildcards by [@2e3s](https://togithub.com/2e3s) in [https://github.com/vimeo/psalm/pull/9813](https://togithub.com/vimeo/psalm/pull/9813) - Mapping closed inheritance to union during assertion by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9829](https://togithub.com/vimeo/psalm/pull/9829) - Use PHPStorm output format by default on JetBrains terminals by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9848](https://togithub.com/vimeo/psalm/pull/9848) - sprintf basic non-empty-string return type provider by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9841](https://togithub.com/vimeo/psalm/pull/9841) - Extend Shepherd payload by information about package versions by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9856](https://togithub.com/vimeo/psalm/pull/9856) - Allow if/false assert for same variable to allow array/list distinction by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9853](https://togithub.com/vimeo/psalm/pull/9853) - readonly does not have write access, therefore is safe as long as the… by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9887](https://togithub.com/vimeo/psalm/pull/9887) - Sprintf improve return param type validation by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9877](https://togithub.com/vimeo/psalm/pull/9877) - feat: cache.gz by [@dkarlovi](https://togithub.com/dkarlovi) in [https://github.com/vimeo/psalm/pull/9889](https://togithub.com/vimeo/psalm/pull/9889) - make compressor configurable v2 by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9924](https://togithub.com/vimeo/psalm/pull/9924) - Invalidate cached methods when referenced files are deleted by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/9931](https://togithub.com/vimeo/psalm/pull/9931) - Invalidate cached methods when referenced class property types change by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/9955](https://togithub.com/vimeo/psalm/pull/9955) ##### Fixes - glob: allow empty string for pattern by [@Hanmac](https://togithub.com/Hanmac) in [https://github.com/vimeo/psalm/pull/9814](https://togithub.com/vimeo/psalm/pull/9814) - [GH-9825](https://togithub.com/vimeo/psalm/issues/9825) by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/9828](https://togithub.com/vimeo/psalm/pull/9828) - Fix [#9824](https://togithub.com/vimeo/psalm/issues/9824) const enum self reference by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9833](https://togithub.com/vimeo/psalm/pull/9833) - base64\_decode returns false only in strict mode by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/9832](https://togithub.com/vimeo/psalm/pull/9832) - Dirname return type non empty string by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9837](https://togithub.com/vimeo/psalm/pull/9837) - uniqid return type non-empty-string inconsistent by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9842](https://togithub.com/vimeo/psalm/pull/9842) - PropertyNotSetInConstructor should not report for abstract constructors by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9844](https://togithub.com/vimeo/psalm/pull/9844) - Intersect template types during inheritance check by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9865](https://togithub.com/vimeo/psalm/pull/9865) - Fix generic type params mapping by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9866](https://togithub.com/vimeo/psalm/pull/9866) - Better intersection of template types during inheritance check by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9883](https://togithub.com/vimeo/psalm/pull/9883) - Update the signature of debug_backtrace by [@stof](https://togithub.com/stof) in [https://github.com/vimeo/psalm/pull/9868](https://togithub.com/vimeo/psalm/pull/9868) - Glob return type stub by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9878](https://togithub.com/vimeo/psalm/pull/9878) - Improve the return types for getimagesize and getimagesizefromstring by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9875](https://togithub.com/vimeo/psalm/pull/9875) - Unmark DateInterval::$invert as read-only by [@morozov](https://togithub.com/morozov) in [https://github.com/vimeo/psalm/pull/9895](https://togithub.com/vimeo/psalm/pull/9895) - Sprintf additional validations and bugfix by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9904](https://togithub.com/vimeo/psalm/pull/9904) - Fixes [#9827](https://togithub.com/vimeo/psalm/issues/9827) by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9903](https://togithub.com/vimeo/psalm/pull/9903) - set type of **LINE** to positive int by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9921](https://togithub.com/vimeo/psalm/pull/9921) - Add a stub file for Attributes defined by PHP by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9920](https://togithub.com/vimeo/psalm/pull/9920) - Don't update types of the outer scope when in an elseif conditional by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9922](https://togithub.com/vimeo/psalm/pull/9922) - Update callmap for ext-mongodb 1.16 by [@alcaeus](https://togithub.com/alcaeus) in [https://github.com/vimeo/psalm/pull/9933](https://togithub.com/vimeo/psalm/pull/9933) - Add call map entries for MongoDB functions by [@alcaeus](https://togithub.com/alcaeus) in [https://github.com/vimeo/psalm/pull/9934](https://togithub.com/vimeo/psalm/pull/9934) - fix reconciliation between a list and iterable by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9950](https://togithub.com/vimeo/psalm/pull/9950) - `non-empty-list` assertion for iterable by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9953](https://togithub.com/vimeo/psalm/pull/9953) - fix PHP 7 sprintf too many arguments false positive by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9943](https://togithub.com/vimeo/psalm/pull/9943) ##### Docs - Document classAndDescendants configuration tag by [@janopae](https://togithub.com/janopae) in [https://github.com/vimeo/psalm/pull/9867](https://togithub.com/vimeo/psalm/pull/9867) ##### Internal changes - Introduce and use `IssueData` constants for severity levels by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9846](https://togithub.com/vimeo/psalm/pull/9846) - Shepherd: send a list of issues (instead of array with int keys) by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/9845](https://togithub.com/vimeo/psalm/pull/9845) - fix failing mock tests by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9880](https://togithub.com/vimeo/psalm/pull/9880) - Bump mheap/github-action-required-labels from 4 to 5 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/9898](https://togithub.com/vimeo/psalm/pull/9898) - fix CI warnings for findUnusedCode in psalm 6 by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9915](https://togithub.com/vimeo/psalm/pull/9915) - docblock parser minor performance gain by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9916](https://togithub.com/vimeo/psalm/pull/9916) - improve perfs for switch by not creating reverse assertions against constants by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9929](https://togithub.com/vimeo/psalm/pull/9929) - remove StementsVolatileCache for perf reasons by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9930](https://togithub.com/vimeo/psalm/pull/9930) - put config to true to prevent deprecations for new config files by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9857](https://togithub.com/vimeo/psalm/pull/9857) - Make config warn about missing cache related functions by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9935](https://togithub.com/vimeo/psalm/pull/9935) - Fix/cache fail silent by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/9932](https://togithub.com/vimeo/psalm/pull/9932) ##### Typos - Fixed typo in ConstantTest by [@staabm](https://togithub.com/staabm) in [https://github.com/vimeo/psalm/pull/9835](https://togithub.com/vimeo/psalm/pull/9835) #### New Contributors - [@Hanmac](https://togithub.com/Hanmac) made their first contribution in [https://github.com/vimeo/psalm/pull/9814](https://togithub.com/vimeo/psalm/pull/9814) - [@stof](https://togithub.com/stof) made their first contribution in [https://github.com/vimeo/psalm/pull/9868](https://togithub.com/vimeo/psalm/pull/9868) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.12.0...5.13.0 ### [`v5.12.0`](https://togithub.com/vimeo/psalm/releases/tag/5.12.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.11.0...5.12.0) #### What's Changed ##### Features - WIP - Limit inheritance to a subset of classes [#1450](https://togithub.com/vimeo/psalm/issues/1450) by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9687](https://togithub.com/vimeo/psalm/pull/9687) - UnsupportedPropertyReferenceUsage by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/9769](https://togithub.com/vimeo/psalm/pull/9769) - Improve return types of pow() by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9795](https://togithub.com/vimeo/psalm/pull/9795) - Narrow the type of $haystack when strpos(...) !== false by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9788](https://togithub.com/vimeo/psalm/pull/9788) - allow using more than 8G of memory in psalter by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9805](https://togithub.com/vimeo/psalm/pull/9805) ##### Fixes - Fix missing global class type when scanning cached files by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/9735](https://togithub.com/vimeo/psalm/pull/9735) - Fix union argument type check against templated param by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9750](https://togithub.com/vimeo/psalm/pull/9750) - Allow dynamic properties from PHPDoc by [@fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/9742](https://togithub.com/vimeo/psalm/pull/9742) - improve glob stubs by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9752](https://togithub.com/vimeo/psalm/pull/9752) - Removed return type false from date and gmdate by [@Alkisum](https://togithub.com/Alkisum) in [https://github.com/vimeo/psalm/pull/9761](https://togithub.com/vimeo/psalm/pull/9761) - methods and vars cannot be falsy by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/9796](https://togithub.com/vimeo/psalm/pull/9796) - fix offset for type param changes by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9803](https://togithub.com/vimeo/psalm/pull/9803) ##### Docs - Documented suggestions for HTML user input by [@mmcev106](https://togithub.com/mmcev106) in [https://github.com/vimeo/psalm/pull/9780](https://togithub.com/vimeo/psalm/pull/9780) - Document array shape unsealing syntax by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9784](https://togithub.com/vimeo/psalm/pull/9784) ##### Internal changes - Enable opcache if it is installed by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9779](https://togithub.com/vimeo/psalm/pull/9779) #### New Contributors - [@tscni](https://togithub.com/tscni) made their first contribution in [https://github.com/vimeo/psalm/pull/9735](https://togithub.com/vimeo/psalm/pull/9735) - [@Alkisum](https://togithub.com/Alkisum) made their first contribution in [https://github.com/vimeo/psalm/pull/9761](https://togithub.com/vimeo/psalm/pull/9761) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.11.0...5.12.0 ### [`v5.11.0`](https://togithub.com/vimeo/psalm/releases/tag/5.11.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.10.0...5.11.0) #### What's Changed ##### Fixes - SplDoublyLinkedList's index is always int by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/9736](https://togithub.com/vimeo/psalm/pull/9736) - Fix string negation to never by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9743](https://togithub.com/vimeo/psalm/pull/9743) - Fix ParadoxicalCondition with complex match expression by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9739](https://togithub.com/vimeo/psalm/pull/9739) - Fix invalid cast for templated class-string by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9738](https://togithub.com/vimeo/psalm/pull/9738) - Fix OverriddenPropertyAccess error message by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/9740](https://togithub.com/vimeo/psalm/pull/9740) - Ignore nullable return form SimpleXMLElement::addChild() by [@greg0ire](https://togithub.com/greg0ire) in [https://github.com/vimeo/psalm/pull/9745](https://togithub.com/vimeo/psalm/pull/9745) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.10.0...5.11.0 ### [`v5.10.0`](https://togithub.com/vimeo/psalm/releases/tag/5.10.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.9.0...5.10.0) #### What's Changed ##### Features - Introduce `value-of` with backed enum cases in assertions by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9586](https://togithub.com/vimeo/psalm/pull/9586) - Introduce callable object intersection by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9599](https://togithub.com/vimeo/psalm/pull/9599) - Contextual inference for const callable by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9623](https://togithub.com/vimeo/psalm/pull/9623) - Allow to intersect type alias with non-type-aliases by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9638](https://togithub.com/vimeo/psalm/pull/9638) - Provide support for templated `value-of` enum values by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9655](https://togithub.com/vimeo/psalm/pull/9655) - (re-)implement object-shape assertions by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9656](https://togithub.com/vimeo/psalm/pull/9656) - Support anonymous object template replacement by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/9664](https://togithub.com/vimeo/psalm/pull/9664) - Implement unsealed array generic syntax by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/9694](https://togithub.com/vimeo/psalm/pull/9694) - Introduce BeforeExpressionAnalysisEvent by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/9725](https://togithub.com/vimeo/psalm/pull/9725) - Add support for [@psalm-no-seal-properties](https://togithub.com/psalm-no-seal-properties) and [@psalm-no-seal-methods](https://togithub.com/psalm-no-seal-methods) by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/9681](https://togithub.com/vimeo/psalm/pull/9681) ##### Fixes - Fix remaining intl, reflection. xml and zip callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9595](https://togithub.com/vimeo/psalm/pull/9595) - fix [#9049](https://togithub.com/vimeo/psalm/issues/9049) by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9598](https://togithub.com/vimeo/psalm/pull/9598) - fix coercion detection between two keyed arrays by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/9606](https://togithub.com/vimeo/psalm/pull/9606) - fix: treat includes starting with '.' and '..' correct by [@jjjb03](https://togithub.com/jjjb03) in [https://github.com/vimeo/psalm/pull/9608](https://togithub.com/vimeo/psalm/pull/9608) - Allow enabling mixed issues reporting for error levels > 2. by [@ADmad](https://togithub.com/ADmad) in [https://github.com/vimeo/psalm/pull/9626](https://togithub.com/vimeo/psalm/pull/9626) - Preserve `non-empty-string` type when combining literal and numeric strings by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9630](https://togithub.com/vimeo/psalm/pull/9630) - Do not report required closure arguments as unused by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/9629](https://togithub.com/vimeo/psalm/pull/9629) - Fix various db callmaps by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/9632](https://togithub.com/vimeo/psalm/pull/9632) - fix: add missing constructor parameter to IteratorIterator by [@SenseException](https://togithub.com/SenseException) in [https://github.com/vimeo/psalm/pull/9646](https://togithub.com/vimeo/psalm/pull/9646) - Flatten `match` arm conditions to check conditions independently by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/9647](https://togithub.com/vimeo/psalm/pull/9647) - Fixed non empty arg issue in array_splice function by [@whizsid](https://togithub.com/whizsid) in [https://github.com/vimeo/psalm/pull/9643](https://togithub.com/vimeo/psalm/pull/9643) - Fix `array_flip` to preserve non-empty array type by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/9651](https://togithub.com/vimeo/psalm/pull/9651) - Fix listConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
Read more information about the use of Renovate Bot within Laminas.