This release modernizes the entire codebase for PHP 8.4+ and raises the quality bar to PHPStan level 10 — the strictest static analysis setting.
Recognizer::match() API changed — returns ?string (matched value or null) instead of using a by-reference output parameter. Update any custom Recognizer implementations accordingly.Token::getType() return type narrowed from mixed to string. Custom Token implementations must update their signature.CommonToken, Rule, Item, State, AnalysisResult, exception classes, and more)SplQueue<State>, ArrayIterator<int, Token>, [@template](https://github.com/template) T of string constraints — making the library fully transparent to static analysis toolsStatefulLexer internal refactor — decomposed a complex nested array into three flat, separately-typed arrays (stateRecognizers, stateActions, stateSkipTokens) for clarity and correctnessRegexLexer — cached regex compiled as a class property instead of a static local variable; added explicit guard for preg_split failureUtil::substring() now uses byte-based substr() consistent with strlen() position tracking in AbstractLexer, fixing incorrect slicing on multibyte inputCommonNode consolidated from two split backing arrays ($nodes / $children) into one, so nodes passed to the constructor are now visible through all accessorsAnalyzer::buildParseTable() when resolving reduce/reduce conflictsFull Changelog: https://github.com/goaop/dissect/commits/3.0.0
How can I help you explore Laravel packages today?