v14.0.0
This release brings several breaking changes. Please refer to UPGRADE document for details.
- BREAKING/BUGFIX: Strict coercion of scalar types (#278)
- BREAKING/BUGFIX: Spec-compliance: Fixed ambiguity with null variable values and default values (#274)
- BREAKING: Removed deprecated directive introspection fields (onOperation, onFragment, onField)
- BREAKING:
GraphQL\Deferred
now extendsGraphQL\Executor\Promise\Adapter\SyncPromise
- BREAKING: renamed several types of dangerous/breaking changes (returned by
BreakingChangesFinder
) - BREAKING: Renamed
GraphQL\Error\Debug
toGraphQL\Error\DebugFlag
. - BREAKING: Debug flags in
GraphQL\Executor\ExecutionResult
,GraphQL\Error\FormattedError
andGraphQL\Server\ServerConfig
do not acceptboolean
value anymore butint
only. - BREAKING:
$positions
inGraphQL\Error\Error
constructor are not nullable anymore. Same can be expressed by passing an empty array.
Notable features and improvements:
- Compliant with the GraphQL specification June 2018 Edition
- Support repeatable directives (#643)
- Perf: support lazy type definitions (#557)
- Simplified Deferred implementation (now allows chaining like promises, #581)
- Support SDL Validation and other schema validation improvements (e.g. #492)
- Added promise adapter for Amp (#551)
- Query plan utility improvements (#513, #632)
Other noteworthy changes:
- Allow retrieving query complexity once query has been completed (#316)
- Allow input types to be passed in from variables using \stdClass instead of associative arrays (#535)
- Support UTF-16 surrogate pairs within string literals (#554, #556)
- Having an empty string in
deprecationReason
will now print the@deprecated
directive (only anull
deprecationReason
won't print the@deprecated
directive). - Deprecated Experimental executor (#397)
Also some bugs fixed, heavily investe in PHPStan for static analysis.
Special thanks to @simPod, @spawnia and @shmax for their major contributions!