Ad
 
Learn More
Favicon of PHPStan Releases

PHPStan Releases

Great

PHPStan • Last updated 5 days ago

Recent Updates

2.2.9

2.2.8

2.2.7

1.12.34

2.2.6

2.2.5

2.2.4

2.2.3

2.2.2

2.2.1

Uniform Changelog API

Access PHPStan changelog updates through our uniform API. Same JSON structure across all sources — no adapter-specific parsing needed.

API Endpoint
GET https://watchchangelog.com/api/v1/entries?source=phpstan.releases
Response Sample
{
  "source": "phpstan.releases",
  "vendor": "PHPStan",
  "id": "tag:github.com,2008:Repository/49014795/2.2.9",
  "published_at": "2026-08-22T07:39:37.000Z",
  "title": "2.2.9",
  "url": "https://github.com/phpstan/phpstan/releases/tag/2.2.9",
  "summary": "Improvements 🔧 Store result cache paths relative to the install location ( #6190 ), #8599 Bugfixes 🐛 Do not treat conditional-expression entries about a property fetch as proof it is initialized ( #6183 ), #15046 , thanks @staabm and @VincentLanglet ! Run bootstrap-registered autoloaders inside the file-read trap ( #6185 ), #14988 , thanks @SanderMuller ! Consult bootstrap-registered custom autoloaders only after the static source locators ( #6069 ), #14976 , thanks @staabm ! Do not remember constructor property initialization for classes with custom serialization ( #6188 ), #15056 , thanks @staabm ! Avoid warning about non-nullable class-property in traits. ( #6100 ), #14416 , thanks @peter17 ! An optional non-list key makes isList Maybe, not No ( #6025 ), #14938 , thanks @zonuexe ! Normalize double and single quotes in offset keys, to remember them with the same node-key ( #6196 ), #15060 , thanks @staabm and @SanderMuller ! Preserve constant array shape when spreading a union of constant arrays in array literals ( #5774 ), #14708 , thanks @staabm ! Enter closure and arrow function scopes without re-walking the body ( #6211 ), #14914 Key the closure type cache by the closure's actual inputs ( #6211 ), #14914 Do not remember conditional expressions about precisely resolved class constants ( #6212 ), #14478 , thanks @SanderMuller ! Collapse ObjectShapeType against HasPropertyType regardless of member order ( #6184 ), #15047 , thanks @SanderMuller ! Pin the iteratee's entry types in the by-ref foreach intertwined expression ( #6217 ), #13789 , #13802 Compute integer range bounds for bitwise AND, OR, XOR, and NOT on IntegerRangeType ( #5771 ), #14654 , thanks @staabm and @SanderMuller ! Require array_search()'s haystack argument before reading it ( #6239 ), thanks @SanderMuller ! Do not restrict @internal usages of anonymous class members ( #6235 ), #13042 , thanks @peter17 ! Performance 🏎️ TypeCombinator: remove unnecessary iteration over types ( #6194 ), thanks @staabm ! Faster HasOffsetType , HasOffsetValueType intersection ( #6195 ), #15061 , thanks @staabm ! DynamicReturnTypeExtensionRegistry: Cache extension-class-names ( #6203 ), thanks @staabm ! Rules\\LazyRegistry , Collectors\\Registry : Cache extension-class-names ( #6205 ), thanks @staabm ! src/Rules/Api/*Rule : cheap checks first ( #6206 ), thanks @staabm ! Faster UnionType->getFiniteTypes() ( #6210 ), thanks @staabm ! Skip loop verification passes whose entry scope did not change ( #6215 ) Release each file's resolved closure types when its analysis ends ( #6216 ) Skip fiber machinery for noop node callbacks ( #6218 ) Faster FiniteTypeSet->key() ( #6228 ), thanks @staabm ! Faster UnionType->isNull() ( #6232 ), thanks @staabm ! Faster UnionType->isCallable() ( #6233 ), thanks @staabm ! Memoize file contents by path in CachedParser to skip redundant reads ( #5928 ), thanks @SanderMuller ! Function signature fixes 🤖 uniqid: Tighten return type to non-falsy-string ( #6242 ), thanks @tkw1536 ! Internals 🔍 Accept the shared data provider's third argument in testOverridingFinalMethod ( #6193 ), thanks @SanderMuller ! Fix incomplete version requirements in tests ( #6198 ), thanks @staabm ! Removed duplicate code ( #6200 ), thanks @staabm ! Carry the closure body walk's gathered statements on ProcessClosureResult ( #6169 ) Restructure ClosureTypeResolver around single-walk closure type builders ( #6169 ) Seed the closure type cache from the handler's single body walk ( #6169 ) Seed the arrow function type cache from the handler's single body walk ( #6169 ) Seed the closure type cache from the call-argument body walks ( #6169 ) Walk closure by-ref convergence passes in deep statement context ( #6208 ) Extract the statement-list loop into doProcessStmtNodes() ( #6215 ) Replace TypeSpecifyingFunctionsDynamicReturnTypeExtension with direct code in FuncCallHandler ( #6221 ) Refuse to commit a torn turbo binary set to the dist repository ( #6225 ) Move repeated @internal logic into RestrictedInternalUsageHelper ( #6230 ), thanks @staabm ! Simplify FiniteTypeSet ( #6229 ), thanks @staabm ! Extract the shared parameter-out type comparison into ParameterOutTypeCheck ( #6238 ), thanks @SanderMuller !",
  "tags": [
    "PHPStan",
    "phpstan.releases",
    "static-analysis",
    "php",
    "type-checker"
  ]
}

Get Your Free API Key

Sign up to access the full changelog API. All public sources are free — no credit card required.

Sign Up Free →

Tags:

static-analysisphptype-checker

Related Sources

Favicon

 

  
  
Favicon

 

  
  
Favicon

 

  
  

Share: