Spec Pipeline
This version introduces the spec pipeline - a new set of attributes that will replace the current (classic) annotations/attributes.
It is using a radically different approach in how the code is organized which makes it a lot easier to maintain.
Right now, the new code is disabled and nothing changes. Key is that in order to try the new code the new OpenApi\Builder needs to be used. Again - using the Builder will, by default, change nothing and the current classic code is used.
The new Builder::setMode() method allows to run the new spec pipeline in two modes:
HYBRID: Enablesspecsupport where found and also routes allclassicannotations/attributes through the newspecpipeline.
Under the hood the classicGeneratoris used to load/instantiateclassicannotations/attributes. Then a custom bridge translates all of those into new thinOpenApi\Specattributes and adds them to thespecpipeline.SPEC: Only newspecattributes are processed.
HYBRID is a good way to see how compatible things are and also a migration path, as a codebase could be upgrade file by file.
All spec pipeline related commits have been omitted from the change list for clarity and brevity. Going forward these will be marked as feat(Spec): and listed as all other changes.
Testing and Feedback
All current tests pass in HYBRID mode. However, there hasn't been any testing on actual projects yet. Testing the new code in hybrid mode on existing projects and feedback would be greatly appreciated.
What's Changed
- fix: correct TokenScanner::scanFile() @return phpdoc type by @DerManoMann in #2053
- refactor: modernize tools code (strict comparisons, str_* functions, type hints) by @DerManoMann in #2052
- chore: add CLAUDE.md with project tooling and test conventions by @DerManoMann in #2055
- refactor: extract shared TypeResolver core from TypeInfoTypeResolver by @DerManoMann in #2059
- Bump actions/setup-node from 4 to 6 by @dependabot[bot] in #2060
- Remove workflow to semi-automate backporting PRs to the 5.x branch by @DerManoMann in #2062
- feat: add Pipeline grouping and PipeInterface by @DerManoMann in #2056
- fix: replace
CustomName/BlinkwithCustomName-Blinkin examples and annotations by @DerManoMann in #2069 - Exclude empty tags array from serialization by @DerManoMann in #2086
Full Changelog: 6.4.0...6.5.0