A component with something to announce keeps its own What’s new page on its dev documentation line: it lists what landed after that component’s last release, and each entry links to the section that documents it — the section carrying the NEW badge. This page is the entry point to those lists. It names the components that have something today, and says what it is, so you can go straight to the one you work with.

Components with something new

Across the bricks — proven without Vauban, on Weld and Open Liberty

Each brick below now has an <brick>-it-other-containers module that runs its jars, unchanged, under Weld SE on a plain class path and, for the MicroProfile bricks and Champollion, as a WAR on Open Liberty, with the server’s own implementation of that specification turned off. Cassini and Foy, which an application server replaces with its own Jakarta REST and Servlet, are proven on Weld SE only. The modules are part of every build and never published.

  • What the tests found, and what is fixed — normal-scoped beans could not load outside Vauban, because the build weaves a constructor taking a vauban-api type that was provided (Knock, Heisenberg, Cervantes, Humboldt); Heisenberg keyed metric names and configuration overrides by Weld’s subclass; Humboldt’s span finalizer turned every exception, a 404 included, into a 500 and failed outright on RESTEasy; Dirac and Grimm kept what their extension discovered in static fields, so two containers in one JVM mixed their metrics or their OpenAPI documents, and Dirac failed a deployment on Open Liberty over server classes it could not load; Foy never activated the CDI request context, under any container.

  • A brick depends on APIs, its Vidocq extension picks the implementations — Jakarta platform APIs are now provided in the bricks, and each Vidocq runtime extension brings what its brick leaves out: the Rest Client extension brings Champollion’s JSON-B, so a Rest Client application without a REST server reads JSON again, and the Telemetry, Rest Client and OpenAPI extensions bring the Jakarta REST API their bricks now leave to the runtime.

  • Cassini and Foy on any CDI container — cassini-cdi, a new container-neutral module, resolves resources and providers as beans of the running container and activates the request context around each request; Foy does the same for servlets, filters and listeners when given any container’s BeanManager. The session scope stays Vauban-only in Foy for now.

  • Deploying on an application server — the page of each brick proven on Open Liberty says which server features to keep off and to enable, in a WARNING block its Open Liberty module tests.

Vidocq Runtime — MicroProfile 7.2 line, Rest Client, packaging, startup identity

  • The MicroProfile 7.2 specifications in the assembled runtime — JWT Authentication 2.2, OpenAPI 4.2 and Telemetry 2.2 — with their TCKs green on the release candidates; the 7.2 finals are still under ballot, and the runtime is re-run against them once they are on Maven Central.

  • @Inject @RestClient works, through a new Rest Client codegen bundle that checkpom now requires, and a Rest Client application links with jlink; a new example shows it end to end.

  • Packaging that says what is wrong — vidocq:docker refuses to build a Linux image around a macOS or Windows jlink image, the legacy package layout launches through the main class’s module, and an application left in the boot layer gets a message naming the exports to add.

  • Booting says what it is — version, commit, launch mode and debugger address — with readable console logs by default, and vidocq:run / vidocq:idea to run from Maven and IntelliJ.

Vauban — client proxies without opens, interception that covers inherited methods

  • A client proxy for a third-party produced type, without opening its package, through the Java SE launcher and the Vauban layer; boot-time opening stays opt-in.

  • Interception follows the specification more closely — @AroundInvoke no longer runs around lifecycle callbacks, inherited and interface default methods are intercepted and forwarded, and members Java source cannot override are generated as bytecode.

  • The build is reproducible and complete — vauban:generate pre-generates every subclass the container would wrap, in a stable order.

  • Module lookups for trusted extensions, so an extension such as Heisenberg reaches a managed class’s private members with no opens.

Cassini — unreadable request entities answer 400

  • A client’s malformed request entity is the client’s fault. Malformed JSON, an empty body or a value of the wrong type now answers 400 Bad Request instead of 500, after the application’s own exception mappers, and no longer writes a stack trace at ERROR for every such request.

  • NoContentException becomes a BadRequestException, whatever reader throws it, as Jakarta REST §4.2.4 requires.

Cervantes — MicroProfile JWT Authentication 2.2

  • RS256 and ES256 both accepted when no algorithm is configured, PEM keys of either family, and a configured algorithm checked by family.

  • A bad configuration fails the start with a DeploymentException instead of failing every token at request time.

Grimm — MicroProfile OpenAPI 4.2, a more faithful document

  • OpenAPI 4.2 features — unknown Schema properties as extensions, @Header examples, method-level @ExternalDocumentation, @Digits constraints.

  • The model sources combine in the order the specification sets, and every @Schema / @SchemaProperty attribute reaches the document; Grimm ships named Java modules.

Full list: What’s new in Grimm.

Humboldt — MicroProfile Telemetry 2.2, OpenTelemetry 1.66

  • OpenTelemetry 1.66, code.function.name on @WithSpan spans, and @WithSpan(inheritContext = false).

  • Nothing lost on export — exceptions, event names, structured values and double metric points — and the OTLP exporters work on the module path.

  • RestClientBuilder works on the module path and in a jlink image, listeners from other modules are found, and Reactive Streams is no longer forced on every client.

  • CompletionStage responses never run on the caller’s thread, and builder listeners run once per builder.

Heisenberg — fallback methods with no opens

  • @Fallback(fallbackMethod = …​) works on a strict module path with nothing opened, through Vauban’s module lookup.

Mansart — @Enumerated honoured

  • @Enumerated(ORDINAL) stores the index, STRING the name; an enum with no annotation keeps storing its name. The tooling API (EntityModels.of, JdqlExecutor) is public, and Mansart JPA has restarted.

Ravel, Knock, Champollion, Chappe, Dirac and Foy

  • Ravel — @Inject @ConfigProperty works under the Vauban annotation processor. What’s new in Ravel.

  • Champollion — proven on Weld and Open Liberty, where the server’s JSON-B must stay off; the Annotation API is no longer shipped. What’s new in Champollion.

  • Knock — the registry remembers the last result of each check, with a public CheckResult. What’s new in Knock.

  • Chappe — writeTimeout is actually applied (a behaviour change: a client that stalls while reading is cut after 30 s by default), and connections close gracefully so the last response survives. What’s new in Chappe.

  • Dirac — proven on Weld and Open Liberty; two containers in one JVM keep their metrics apart, and vauban-api is now a runtime dependency. What’s new in Dirac.

  • Foy — the CDI request context is active for each request, under any CDI 4 container, proven on Weld SE. What’s new in Foy.

Components with nothing new

Erasmus has nothing to announce on the current development line: it carries no NEW badge and no What’s new page. It is named here so that its absence from the list above reads as a fact rather than as a gap. Where it stands is on the Consolidated roadmap.

How these lists are maintained

This page is versionless, so a link from here to a component resolves against that component’s latest released documentation unless it says otherwise. The links above are therefore pinned with dev@. Today that pin is what makes them resolve at all — no released line carries a What’s new page, the practice being younger than the 0.3.0 cut. From the next release train on, each released line will carry the page frozen with it, and an unpinned link would quietly land on that frozen list instead of the one this index is about.

When the next release train ships, each component’s page is frozen with its released documentation and restarts empty on dev, and the NEW badges are stripped from the pages they were flagging. The release cut does not touch this page: it has to be updated by hand when a component starts or stops having something to announce.