github micronaut-projects/micronaut-core v5.2.0
Micronaut Core 5.2.0

4 hours ago

What's Changed

New Features 🎉

Bug Fixes 🐞

Improvements ⭐

Docs 📖

Dependency updates 🚀

  • Update bytebuddy to v1.18.11 by @renovate[bot] in #12785
  • Update dependency ch.qos.logback:logback-classic to v1.5.38 by @renovate[bot] in #12811
  • Update dependency com.github.javaparser:javaparser-symbol-solver-core to v3.28.2 by @renovate[bot] in #12819
  • Update dependency com.uber.nullaway:nullaway to v0.13.8 by @renovate[bot] in #12824
  • Update Micronaut dependencies by @renovate[bot] in #12736
  • Update dependency com.squareup.okio:okio to v3.18.0 by @renovate[bot] in #11549
  • Update actions/setup-java digest to 03ad4de by @renovate[bot] in #12754
  • Update dependency com.blazebit:blaze-persistence-core-impl to v1.6.20 by @renovate[bot] in #12845
  • Update dependency com.squareup.okio:okio to v3.18.1 by @renovate[bot] in #12852
  • Update jackson monorepo by @renovate[bot] in #12833
  • Update graalvm/setup-graalvm digest to 5298d94 by @renovate[bot] in #12872
  • Update actions/checkout digest to d23441a by @renovate[bot] in #12839
  • Update netty monorepo to v4.2.17.Final by @renovate[bot] in #12876
  • Update dependency io.netty:netty-tcnative-boringssl-static to v2.0.81.Final by @renovate[bot] in #12889
  • Update bytebuddy to v1.18.12 by @renovate[bot] in #12898
  • Update dependency io.github.classgraph:classgraph to v4.8.192 by @renovate[bot] in #12901
  • Upgrade GraalPy for Python modules by @graemerocher in #12903
  • Update dependency jakarta.data:jakarta.data-api to v1.1.0-M3 by @renovate[bot] in #12905
  • Update graalvm/setup-graalvm digest to 0426e2e by @renovate[bot] in #12979
  • Update graalvm/setup-graalvm digest to 0426e2e by @renovate[bot] in #12991
  • upgrade graalpy version to 25.3.4.1 by @graemerocher in #13029
  • Update dependency com.squareup.okio:okio to v3.18.2 by @renovate[bot] in #13071
  • Update dependency com.google.testing.compile:compile-testing to v0.23.0 by @renovate[bot] in #12295
  • Update mikepenz/action-junit-report digest to a9170d5 by @renovate[bot] in #13013
  • Update graalvm/setup-graalvm digest to 0426e2e by @renovate[bot] in #13012
  • Update kotlin monorepo to v2.4.10 by @renovate[bot] in #12815

Other Changes 💡

  • Honor configuration loading strategy during bootstrap by @fatekingsama in #12788
  • fix: clear resolver caches after catalog rebuild by @graemerocher in #12864
  • fix(ksp): include Kotlin internal types in bean $EXPOSED_TYPES by @arimu1 in #12857
  • fix(http-client): preserve PropagatedContext for client filters with micrometer context-propagation by @arimu1 in #12858
  • fix: improve incremental Python compiler sessions by @graemerocher in #12870
  • test: cover implicit Python controller validation by @graemerocher in #12878
  • Fix Python module test nested-function traversal by @graemerocher in #12883
  • Add unique metadata and names for generated Python module stubs by @graemerocher in #12892
  • Fix quadratic response body assembly in NettyReadBufferFactory.compose by @graemerocher in #12891
  • Fix Python bridge casts for response subtypes by @n0tl3ss in #12895
  • Exclude BC dependencies by @graemerocher in #12904
  • fix(aop): preserve toString behavior for lazy proxies by @Boulea7 in #12875
  • Initialize parameterized Python config beans before builder injection by @n0tl3ss in #12907
  • Invoke @PreDestroy methods on beans with PRE_DESTROY advice by @dstepanov in #12920
  • Fix an interceptor not matching a bean that leaves a binding member at its default by @dstepanov in #12925
  • Compare the members of a qualifier built from an annotation instance by @dstepanov in #12928
  • Allow a primitive type to be named among a bean's exposed types by @dstepanov in #12927
  • Property cache issue by @msupic in #12926
  • Leave @primary out of composite qualifiers by @dstepanov in #12945
  • Fix @InjectScope destruction for constructor parameters and prototype beans by @dstepanov in #12934
  • Allow a runtime bean definition's factory to receive the resolution context by @dstepanov in #12937
  • Honour the argument of RuntimeBeanDefinition.Builder.singleton(boolean) by @dstepanov in #12946
  • Remove a bean from the scope map when a custom scope destroys it by @dstepanov in #12947
  • Fire destruction listeners when closing a context-created bean registration by @dstepanov in #12943
  • Fix client proxy tests for updated Micronaut website by @graemerocher in #12954
  • fix(ksp): detect @JvmRepeatable when resolving repeatable containers by @dstepanov in #12912
  • fix(processor): stop generating an imported type's introspection twice by @dstepanov in #12916
  • Extend @aliasfor to support OverridesAttribute-style member overrides by @dstepanov in #12911
  • Throw IllegalStateException when resolving beans from a context that is not running by @dstepanov in #12948
  • Reuse one interceptor instance across a bean's lifecycle by @dstepanov in #12922
  • Process a class annotated only @ClassImport by @dstepanov in #12952
  • Resolve a null proxy target through the bean resolution customizer by @dstepanov in #12951
  • fix(validation): only advise methods that declare @RequiresValidation by @dstepanov in #12919
  • A bean introspection describes only the constructor it instantiates beans with by @dstepanov in #12909
  • Two startup optimisations: -5% wall, -12% CPU on cold start by @dstepanov in #12955
  • Support static methods meta-annotated as @eXecutable by @dstepanov in #12957
  • Close a bean registration idempotently by @dstepanov in #12956
  • Let a custom scope registered at runtime reach beans resolved before it by @dstepanov in #12961
  • Let a runtime bean definition carry its own disposer by @dstepanov in #12964
  • Describe the enclosing instance of an inner class constructor by @dstepanov in #12966
  • Find a bean definition by its compiled class by @dstepanov in #12974
  • Update introduction.adoc for clarity and accuracy by @graemerocher in #12988
  • Intercept each @PostConstruct and @PreDestroy callback separately by @dstepanov in #12962
  • Clear the quality gate of 5.2.x by @dstepanov in #12990
  • Make the declared only annotation metadata usable by @dstepanov in #12917
  • Do not assert an exact reply count in the Python websocket specs by @dstepanov in #12996
  • Read a member held in a collection value by value, as one held in an array by @dstepanov in #12994
  • Do not discard Fetch Metadata that is only partly recognised by @dstepanov in #12999
  • Expose the members a bean property is composed of by @dstepanov in #12918
  • Do not leave the bean context stuck as terminating by @dstepanov in #13009
  • Fail fast when adding a method definition after inheriting the super ones by @dstepanov in #13000
  • Do not break a destruction cycle at a bean the cycle requires by @dstepanov in #13005
  • Destroy singletons created during context shutdown by @dstepanov in #13007
  • Do not lose a bean created while a per-bean-locked scope shuts down by @dstepanov in #13008
  • Inherit the active environment in GraalPy contexts by @n0tl3ss in #13011
  • Enumerate beans by their @indexed types even when not implemented by @dstepanov in #12960
  • Do not derive an interceptor binding for a kind that is already declared by @dstepanov in #13001
  • Register binder constructors for native images by @n0tl3ss in #12986
  • Three unrelated cleanups in inject, inject-python and inject-kotlin by @dstepanov in #13003
  • Four fixes from a deep analysis pass: interceptor member binding, PowerPoint media type, unsafe publication, header name validation by @dstepanov in #13004
  • Reject header values holding a character above U+00FF by @dstepanov in #13002
  • Invoke the pre-destroy method of a proxied factory-produced bean by @dstepanov in #13015
  • Register the proxy synthesize() actually creates for DYNAMIC_PROXY annotations by @dstepanov in #13014
  • Track @parallel bean startup as part of the context lifecycle by @dstepanov in #13010
  • Report a mime type table that could not be loaded by @dstepanov in #13006
  • Keep the singleton creation lock across a failed creation by @dstepanov in #13024
  • Validate constrained @value fields and setter placeholders at inject time by @dstepanov in #13021
  • Answer the enclosing method for the outer injection point of a method argument segment by @dstepanov in #13022
  • Intercept a lifecycle event once, keeping the callbacks it exposes by @dstepanov in #13019
  • Normalize Python resource paths on Windows by @ezzarghili in #13028
  • Close every bean of a per-bean-locked scope before taking any out by @dstepanov in #13025
  • Rework the Python (GraalPy) support: correctness, lifecycle, asyncio over Netty, compile time by @dstepanov in #13026
  • Make the Python compile tasks cacheable and relocatable by @dstepanov in #13036
  • Preserve map key spelling for indexed keys in the RAW property catalog by @dstepanov in #13039
  • Recompute the closure of an annotation a visitor added to an annotation type by @dstepanov in #13042
  • Address the Copilot review of the lifecycle interception PR (#13019) by @dstepanov in #13031
  • Retain the interceptor registrations on every AOP proxy by @dstepanov in #13047
  • Document the jakarta.annotation.Priority to @order mapping and its sign by @dstepanov in #13051
  • Describe the members of a property by the type declaring them by @dstepanov in #13040
  • test: add regression tests for DefaultBeanContext by @dstepanov in #13056
  • Make error body buffering for streaming clients configurable by @dstepanov in #13055
  • fix: match @EachProperty record properties by name by @dstepanov in #13058
  • A lifecycle event whose bean declares no callback has no target method by @dstepanov in #13061
  • Decide between bean candidates that are all @secondary by @dstepanov in #13064
  • Let construct advice enforce constraints on a container-invoked constructor by @dstepanov in #13068
  • Fix Python bridge conversions and processor isolation by @n0tl3ss in #13072
  • Let a runtime bean definition look beans up as it creates and disposes by @dstepanov in #13069
  • Keep the name a type variable was declared with when its bounds are written by @dstepanov in #13076
  • Keep reusable GraalPy context alive across app shutdown by @n0tl3ss in #13077
  • Answer the static analysis on the raw type argument by @dstepanov in #13088
  • Preserve IPv6 hosts in UriBuilder by @yawkat in #13087
  • Let a consumer read which super types a bean records type arguments for by @dstepanov in #13091

New Contributors

Full Changelog: v5.1.14...v5.2.0

Don't miss a new micronaut-core release

NewReleases is sending notifications on new releases.