Changes for version 0.01 - 2026-07-19
- Added an XS-backed GraphQL parser, schema compiler, validation engine, and query/mutation runtime.
- Added synchronous and Promise::XS execution, DataLoader batching, mutation serialization, direct JSON responses, and a PSGI adapter.
- Added SDL schema construction, printing, type-system extensions, modern introspection, OneOf input objects, and custom directives.
- Implemented the September 2025 executable-document validation rules and the query/mutation type-system validation profile.
- Added native program and persisted-bundle caches, weighted query cost, depth, node, token, and request-body limits.
- Added fail-closed subscription handling across dynamic and persisted execution paths; subscription streaming remains unsupported in 0.01.
- Added Apollo Federation 2 subgraph schema construction, service SDL, bounded entity resolution, and key validation.
- Omitted the `errors` response entry when execution completed without errors, as required by the GraphQL response specification.
- Made the default field resolver invoke hash coderefs and blessed source methods with the graphql-perl-compatible argument contract.
- Added an `allow_introspection` runtime and PSGI policy for public endpoints while retaining `__typename` support.
- Replaced the obsolete execution implementation selector with the explicit `strict_sync` request option; execution is always native.
- Named the failing variable in variable coercion request errors, with a bounded rendering of the invalid value, and rejected missing Non-Null variables at variable preparation with the declared type.
- Added ASan, Valgrind, fuzz, soak, compiler-warning, XS ownership, POD, metadata, and Perl 5.24 through 5.44 CI coverage.
- Added production-oriented examples, benchmark tooling, architecture documentation, and XS memory-ownership guidance.
Documentation
Modules
XS-backed GraphQL parser and execution toolkit for Perl
batching loader for GraphQL::Houtou resolvers
Directive definitions for GraphQL::Houtou
lightweight GraphQL error object
build an Apollo Federation 2 subgraph schema
Houtou-owned introspection types
GraphQL over HTTP endpoint as a plain PSGI app
request-time execution API on the XS VM
schema container for GraphQL::Houtou
Houtou-owned GraphQL type base class
GraphQL enum type
GraphQL input object type
GraphQL interface type
GraphQL list wrapper type
GraphQL non-null wrapper type
GraphQL object type
built-in and custom GraphQL scalars
GraphQL union type
GraphQL document validation facade
query depth limit validator
query field-count limit validator
Provides
in lib/GraphQL/Houtou/DataLoader.pm
in lib/GraphQL/Houtou/Internal/TypeSupport.pm
in lib/GraphQL/Houtou/XS/Parser.pm
in lib/GraphQL/Houtou/XS/Parser.pm
in lib/GraphQL/Houtou/XS/Parser.pm
in lib/GraphQL/Houtou/XS/Parser.pm
in lib/GraphQL/Houtou/XS/Parser.pm
in lib/GraphQL/Houtou/XS/Parser.pm
in lib/GraphQL/Houtou/Promise/PromiseXS.pm
in lib/GraphQL/Houtou/Role/Abstract.pm
in lib/GraphQL/Houtou/Role/Composite.pm
in lib/GraphQL/Houtou/Role/FieldDeprecation.pm
in lib/GraphQL/Houtou/Role/FieldsEither.pm
in lib/GraphQL/Houtou/Role/FieldsInput.pm
in lib/GraphQL/Houtou/Role/FieldsOutput.pm
in lib/GraphQL/Houtou/Role/HashMappable.pm
in lib/GraphQL/Houtou/Role/Input.pm
in lib/GraphQL/Houtou/Role/Leaf.pm
in lib/GraphQL/Houtou/Role/Named.pm
in lib/GraphQL/Houtou/Role/Output.pm
in lib/GraphQL/Houtou/Runtime/DirectiveRuntime.pm
in lib/GraphQL/Houtou/Runtime/ExecState.pm
in lib/GraphQL/Houtou/Runtime/InputCoercion.pm
in lib/GraphQL/Houtou/Runtime/LazyInfo.pm
in lib/GraphQL/Houtou/Runtime/OperationCompiler.pm
in lib/GraphQL/Houtou/Runtime/SchemaBlock.pm
in lib/GraphQL/Houtou/Runtime/SchemaGraph.pm
in lib/GraphQL/Houtou/Runtime/Slot.pm
in lib/GraphQL/Houtou/Runtime/VMBlock.pm
in lib/GraphQL/Houtou/Runtime/VMCompiler.pm
in lib/GraphQL/Houtou/Runtime/VMOp.pm
in lib/GraphQL/Houtou/Runtime/VMProgram.pm
in lib/GraphQL/Houtou/Runtime/VMProgram.pm
in lib/GraphQL/Houtou/XS/Parser.pm
Examples
- examples/cpanfile
- examples/cpanfile.snapshot
- examples/custom-directives.pl
- examples/persisted-queries.pl
- examples/sqlite-blog/README.md
- examples/sqlite-blog/app.psgi
- examples/sqlite-blog/cpanfile
- examples/sqlite-blog/cpanfile.snapshot
- examples/sqlite-blog/operations.graphql
- examples/sqlite-blog/public/index.html
- examples/sqlite-blog/schema.graphql
- examples/sqlite-blog/script/seed.pl
- examples/sqlite-blog/script/smoke.pl
- examples/sqlite-dataloader.psgi