Changelog.computeDifferences() called
ConfigurationMetadataRepository.getAllProperties() from inside its main
loop. The default repository implementation builds a new map each time
that method is called, so the new version's properties were rebuilt once
per property of the old version. The ids that had already been seen were
also tracked in an ArrayList, turning each membership check into a linear
scan.
Read the properties of each repository once and use the old properties
map itself to detect the properties that have been added.
Computing the changelog between Spring Boot 3.4.0 and 3.5.0 (2,498 and
2,555 properties) drops from 203ms to 0.5ms and the generator's peak
memory from 302MB to 91MB. The generated asciidoc is byte for byte
identical.
See gh-51655
Signed-off-by: Junggi Kim <kimjg2477@gmail.com>
This commit updates the annotation processor to fail the build if a
given configuration property defines the same property name on two
different elements.
Closes gh-49565
Previously, the list of modules for a particular version of Boot was
hard-coded. When this list got of a sync with a version's actual
modules, the changelog would become inaccurate as the generator would
not have a complete view of all of the version's metadata.
This commit addresses this by resolving the list of modules for a
particular version from its dependency management declared in
spring-boot-dependencies.
Closes gh-49336
This commit fixes the changelog generator to not flag two identical
arrays as changed. Previously, any candidate property with an array
of default values were flagged incorrectly.
Closes gh-49272
This commit adds a new section in the Configuration Changelog to
indicate properties whose default values have changed.
See gh-48962
Signed-off-by: junpak <junpak.park@gmail.com>
Rather than listing common modules and tweak things for various
milestones, this commit flatten the list of modules as of Spring Boot
4.0.0-RC1.
Closes gh-47852
This commit handles a corner case where we have to add properties in
a release that represents something we mean to remove but that's not
ready to go away just yet.
Those properties are now considered in the changelog, but marked as
deprecated.
Closes gh-47759