Quarkus 3.36 - Quarkus Signals, embedded SBOMs, OIDC SPIFFE authentication, and more

Wait 5 sec.

We’re pleased to announce the release of Quarkus 3.36.This release brings several notable features:#53788 - Quarkus Signals experimental extension#53552 - Embedded dependency SBOMs and SBOM endpoint#53923 - Embed SBOM in native images#53773 - OIDC SPIFFE client authentication#53491 - Arbitrary keystore/truststore types#53415 - Dynamic JSON field additions for logging#53856 - GraphQL client TLS reloadUpdateTo update to Quarkus 3.36, we recommend updating to the latest version of the Quarkus CLI and run:quarkus updateNote that quarkus update can update your applications from any version of Quarkus (including 2.x) to Quarkus 3.36.For more information about the adjustments you need to make to your applications, please refer to the Quarkus 3.36 migration guide.What’s new?Quarkus SignalsQuarkus Signals is a new experimental extension that enables application components to interact in a loosely coupled fashion through emitting and receiving signals.What it offers:Type-safe resolution inspired by CDI events - signals are matched to receivers based on type and qualifiers.Three emission modes inspired by the Vert.x EventBus: publish (multicast to all receivers), send (unicast with round-robin selection), and request-reply (unicast with a typed response). A convenient blocking API is provided for each mode, with an optional reactive API returning Uni.Flexible execution model - receivers run asynchronously and support blocking, non-blocking, and virtual thread execution, following standard Quarkus conventions (@Blocking, @NonBlocking, @RunOnVirtualThread, etc.).Programmatic receivers - register and unregister receivers at runtime via a fluent builder API.Signal metadata - attach arbitrary key-value pairs to emissions, accessible by receivers through SignalContext.SPI for integrators - extend behavior with SignalMetadataEnricher and ReceiverInterceptor.As mentioned, the extension is experimental, and feedback is highly welcome!Embedded dependency SBOMsQuarkus now supports embedding dependency SBOMs (Software Bill of Materials) into built applications and exposing them via an endpoint (/.well-known/sbom by default).For native images, SBOMs can also be embedded directly into the native binary, following the GraalVM SBOM specification.The CycloneDX guide has been updated to document the new options and includes an example of how to use SBOMs for vulnerability scanning.OIDC SPIFFE client authenticationQuarkus now supports using SPIFFE JWT tokens for client authentication between Quarkus OIDC and providers such as Keycloak.This enables workload identity-based authentication following the SPIFFE standard, making it particularly useful for zero-trust environments and service-to-service communication.Arbitrary keystore/truststore typesThe TLS registry now supports arbitrary keystore and truststore types (e.g. BCFKS) via a new other configuration group.You can configure them using quarkus.tls.key-store.other.type= without writing code.For types that need custom loading logic, you can provide a KeyStoreFactory or TrustStoreFactory CDI bean annotated with @Identifier matching the type value.Dynamic JSON field additions for loggingA new JsonProvider SPI allows per-record dynamic JSON field additions to the JSON logging output.This enables you to enrich log records with custom fields dynamically at runtime.GraphQL client TLS reloadThe GraphQL client now supports dynamic TLS configuration reloading.Previously, TLS configuration was only picked up when obtaining a new client instance, requiring a shorter CDI scope.With this change, TLS reloads happen immediately and also work for application-scoped clients.Platform updatesVarious Platform components were upgraded including:Camel Quarkus to 3.36.0Debezium to 3.5.1.FinalQuarkus Amazon Services to 3.19.0Quarkus LangChain4j to 1.10.0Quarkus MCP Server to 1.12.1Quarkus Operator SDK to 7.7.5Full changelogYou can get the full changelog of 3.36.0.CR1 and 3.36.0 on GitHub.ContributorsThe Quarkus community is growing and has now 1197 contributors.Many many thanks to each and everyone of them.In particular for the 3.36 release, thanks to Ales Justin, Alex Martel, Alexey Loubyansky, Arthur Navarro, Ashish Thakur, Aurea Munoz, Bruno Baptista, Chris Laprun, Christian Navolskyi, Clement Escoffier, Cristiano Nicolai, Daan Hoogenboezem, DerFrZocker, Foivos Zakkak, Foobartender, Fouad Almalki, Francesco Nigro, George Gastaldi, Georgios Andrianakis, Guillaume Smet, Holly Cummins, Inaki Villar, Jakub Jedlicka, Jamal Dabari, Jan Martiska, Julien Ponge, kyooosukedn, Ladislav Thon, lu1tr0n, Luca Molteni, Marco Sappe Griot, mariofusco, Martin Kouba, Matej Novotny, Matej Vašek, Matheus Cruz, MdTanwer, Michael Edgar, Michal Maléř, Michal Vavřík, Ozan Gunalp, pandareen, Paramvir Jindal, Paulo Casaes, Phillip Krüger, PreetiYadav, Roberto Cortez, Rolfe Dlugy-Hegwer, Roman Huber, Sanne Grinovero, SAY-5, Sergey Beryozkin, Severin Gehwolf, Shivam Srivastav, Steve Hawkins, Stéphane Épardaud, tanw9004167, Teymur Babayev, Thomas Segismont, tom, Victor Queiroz, Vishal Kumar Singh, xstefank, Yoann Rodière, and Yoshikazu Nojima.Come Join UsWe value your feedback a lot so please report bugs, ask for improvements…​ Let’s build something great together!If you are a Quarkus user or just curious, don’t be shy and join our welcoming community:provide feedback on GitHub;craft some code and push a PR;discuss with us on Zulip and on the mailing list;ask your questions on Stack Overflow.