Skip to content

Pure-julia OpenAPI internals rewrite - #103

Open
quinnj wants to merge 2 commits into
JuliaComputing:mainfrom
quinnj:codex/production-rewrite
Open

Pure-julia OpenAPI internals rewrite#103
quinnj wants to merge 2 commits into
JuliaComputing:mainfrom
quinnj:codex/production-rewrite

Conversation

@quinnj

@quinnj quinnj commented Aug 6, 2026

Copy link
Copy Markdown

Replace the legacy generated-client and server implementation with the normalized OpenAPI 3.0, 3.1, and 3.2 pipeline.

Keep the provisional JSON Schema engine isolated inside OpenAPI. Generate clients against that engine until its API is ready to move upstream.

Keep HTTP optional through an extension. Leave server framework integration to downstream packages such as Servo.

Add adversarial, conformance, external-corpus, runtime HTTP, and JuliaC trim-compilation coverage.

BREAKING CHANGE: The legacy OpenAPI 0.2 API is replaced by the namespaced document and client-generation API.

quinnj and others added 2 commits August 5, 2026 21:55
Replace the legacy generated-client and server implementation with the normalized OpenAPI 3.0, 3.1, and 3.2 pipeline.

Keep the provisional JSON Schema engine isolated inside OpenAPI. Generate clients against that engine until its API is ready to move upstream.

Keep HTTP optional through an extension. Leave server framework integration to downstream packages such as Servo.

Add adversarial, conformance, external-corpus, runtime HTTP, and JuliaC trim-compilation coverage.

BREAKING CHANGE: The legacy OpenAPI 0.2 API is replaced by the namespaced document and client-generation API.
Add OpenAPI.serverplan and OpenAPI.server(source; framework, name, path),
mirroring the plan/client pipeline. Split the generated runtime into a
direction-agnostic common segment plus client and server segments; the server
segment adds the inverse codecs (path/query/cookie style decoders,
form-urlencoded and multipart/form-data request readers, and a
descriptor-driven response encoder) with request-direction schema validation
and structured 400/415 error responses.

Framework glue is dispatched through the new OpenAPI.server_source extension
seam: OpenAPIHTTPExt emits HTTP.Router modules whose register!(router, impl;
path_prefix, middleware) entry point and handler contract match the shape
OpenAPI.jl 0.2.x julia-server users implement stubs against (register alias
included). Server planning rejects what cannot be decoded faithfully:
non-form-data multipart request bodies and operations with more than one
exploded object query or cookie parameter.

Parameter descriptors gain a shape field and media descriptors a fields
element so single-valued exploded arrays decode as arrays; header scalar
error messages are direction-neutral now that both directions share them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant