NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Maven Central · #927 by repository stars
configuration library for JVM languages using HOCON files
Last release 4 months ago
03 Jun 2026
Release timing varies
gaps range from 5 weeks to 1.7 years
Nearly every release is documented
notes for 28 of 28 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
32 releases · first in 2012
docs: release notes 1.4.8 by @johanandren in #847
Full Changelog: v1.4.8...v1.4.9
One column per quarter.
fix: BugOrBroken - partially-shadowed object has nested delayed merge by @johanandren in #846
Full Changelog: v1.4.7...v1.4.8
docs: adjust description of release process by @sebastian-alfers in #834
Full Changelog: v1.4.6...v1.4.7
Render list elements as non-root always by @valepakh in #832
Full Changelog: v1.4.5...v1.4.6
docs: add alternative Rust HOCON implementation by @mikai233 in #825
Full Changelog: v1.4.4...v1.4.5
build: bump actions to get sbt ( #818 ) thanks to @johanandren
Release 1.4.2 by @raboof in #759
Full Changelog: v1.4.2...v1.4.3
Avoid instantiating arbitrary classes (#758) thanks to @vlsi for the report and @raboof for the patch
introduce docs for arrays on env vars (#706), (#710) and (#711) thanks to @ignasi35 and @andreaTP
application.conf variables can now override variables in reference.conf #619
Nothing published for this version
it is now possible to override any configuration setting from environment variables (#620) thanks to @andreaTP
Int (#568) thanks to @michalmelaMissing exception now has a reference to the origin Config (#585) thanks to @vagolaresolve() (#578) thanks to @sam-tokenInputStream (#573) thanks to @ntviet18@Optional on keys that are reserved words (#570) thanks to @radist-ntValidationProblem is now serializable (#437) thanks to @iantaboltAll of the merged PRs can be found in the release milestone.
artifact now includes Automatic-Module-Name which makes it consumable as Java 9 module.
Automatic-Module-Name which makes it consumable as Java 9 module.environment variables are now able to be resolved to lists in the same fashion as system properties.
getPeriod() which returns time units as
java.time.Period. Currently supported periods are days, weeks,
months and years. More information here.ConfigResolveOptions now has appendResolver(...) which allows
having custom behavior when unresolved substitutions are encountered
during resolution.Set collection.added include required("foo") syntax to specify includes that fail if not present
include required("foo") syntax to specify includes that
fail if not presentthis is an ABI-guaranteed stable release.
this is an ABI-not-guaranteed beta release in advance of 1.3.0. Please see the notes for 1.3.0-M1 below for warnings, caveats, and the bulk of what's
API changes (since 1.3.0-M2):
Fixes:
Thank you to contributors with commits since v1.3.0-M2 tag:
not in fact an April Fool's joke. Unless it's broken. Then it was.
New API (since 1.3.0-M1):
Fixes:
Thank you to contributors with commits since v1.3.0-M1 tag:
this is an ABI-not-guaranteed beta release in advance of 1.3.0. The public, documented ABI should not be broken vs. 1.2.0; however, there are enough c
Changes that are most likely to break something:
Config and ConfigObject${foo} syntax). These should only matter in weird corner
cases, but some people did encounter the problems such as in
#177.${?foo}${?bar}) now become undefined instead of throwing an
exceptionNew API:
ConfigBeanFactory will auto-fill a JavaBean from
a ConfigConfigOrigin using
ConfigOriginFactory and to modify origins on values
using ConfigValue.withOriginConfig.getMemorySize returns a ConfigMemorySizeConfig.getDuration returns a java.time.DurationConfigValueFactory.fromAnyRef and related
methods now pass through a ConfigValue instead of throwing
an exceptionConfigFactory.defaultApplication() returns the default
Config used by ConfigFactory.load() in between
defaultReference() and defaultOverrides(), leaving
ConfigFactory.load() as a trivial convenience API
that uses no internal magic.Improvements:
${foo} references are being resolved${foo} ${bar}
and ${foo}${bar} are now the same if foo and bar are objects
or lists.Bug fixes:
-Dsun.io.serialization.extendedDebugInfo=true no longer
explodes due to calling toString on an internal object,
#176Thank you to contributors with commits since v1.2.1 tag:
bugfix release, no API additions or changes
new stable ABI release (binary compatible with 1.0.x; a few new APIs)
this is a snapshot/preview with API/ABI additions. *New* API since 1.0.x is NOT guaranteed to remain compatible for now since the purpose of this rele
long instead of Long even
though it's been in git for a while? weigh in at
https://github.com/lightbend/config/issues/119 )remove junk in POM caused by broken local configuration
ignore byte-order mark (BOM), treating it as whitespace
when an array is requested and an object found, try to convert the object to an array if the object has numeric keys in it. This is intended to suppor
-Dfoo.0=bar, -Dfoo.1=baz which
would create foo : { "0" : "bar", "1" : "baz" }; which in
turn could now be treated as if it were foo : ["bar","baz"]. This is useful for creating array values on the
command line using Java system properties.no changes from 0.6.0. ABI now guaranteed for 1.0.x series.
add ConfigRenderOptions.setJson which can be used to enable or disable the use of HOCON extensions (other than comments, which remain separately-contr
add versions of ConfigFactory.load() which let you specify ConfigParseOptions and ConfigResolveOptions.
obscure backward incompatibilities:
"""" previously parsed as two empty strings concatenated
into a single empty string, now it parses as an unterminated
triple-quoted string."""\n""" previously parsed as
an empty string, a string with one newline character, and
another empty string, all concatenated into a single
string. Now it parses as a string with two characters
(backslash and lowercase "n").- publish as OSGi bundle
this is rolling toward 1.0 and should be pretty much feature-complete.
path=${path}":/bin", by "looking backward" to the previous
value of pathpath=${path} [ "/bin" ] for
example. See README and spec for more details.+= where path+="/bin" expands to
path=${?path} [ "/bin" ]include url("http://example.com/"), include file("/my/file.conf"),
and include classpath("whatever"). This syntax forces
treatment as URL, file, or classpath resource.include "http://example.com/whatever.conf" (if an include is a valid
URL, it's loaded as such). This is incompatible with prior
versions, if you have a filename that is also a valid URL, it
would have loaded previously but now it will not. Use the
include file("") syntax to force treatment as a file.0.3.1 is a backport of the "-Dconfig.resource=name can start with a /" fix to 0.3.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →