A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation

Overview

Configurate

GitHub Workflow Status (branch) MIT License Maven Central Sonatype Nexus (Snapshots)

Configurate is a simple configuration library for Java applications that provides a node-based representation of data, able to handle a wide variety of configuration formats.

Want to talk to us about Configurate? Join us in the #dev channel on our Discord or start a thread on our (new!) Discussions page.

The current supported formats are:

Project Structure

The project is split into different modules.

Configurate core

configurate-core is the base of the library, containing the main APIs used to manipulate configurations. It is generic, and does not depend on any specific format of configuration.

Configurate loaders

Each distinct configuration format is implemented as a "configuration loader", in a separate module.

A number of loader implementations are provided as standard in this project, however it is possible to implement a custom loader for a new format separately.

The current supported loaders provided by the project are:

  • configurate-gson - Implementation for the JSON format, using the Gson library for parsing and generation
  • configurate-hocon - Implementation for the HOCON format, using the lightbend config library for parsing and generation
  • configurate-jackson - Implementation for the JSON format, using the Jackson library for parsing and generation
  • configurate-xml - Implementation for the XML format, using the JAXP library for parsing and generation
  • configurate-yaml - Implementation for the YAML format, using the SnakeYAML library for parsing and generation

extras

Some features that don't need tight integration with Configurate itself are provided as separate modules. These are:

  • configurate-extra-dfu[2-4] - Integration between Mojang's DataFixerUpper and Configurate's systems.
  • configurate-extra-kotlin - Extensions to allow Configurate types to use Kotlin features, and support for Kotlin data classes in the object mapper.
  • configurate-extra-guice - Allows using a Guice Injector to create new object instances in the object mapper.

Usage

  • To use Configurate, your project must be configured to use Java 8 or higher.
  • Releases are on Maven Central and snapshot artifacts are hosted on Sonatype OSS. Builds are also included on SpongePowered's Maven Repository , available at https://repo.spongepowered.org/maven/.

If your project uses Maven or Gradle, just add the following to your build scripts.

Gradle

repositories {
    mavenCentral()
}

dependencies {
    // Modify this line to target the loader you wish to use.
    compile 'org.spongepowered:configurate-hocon:4.0.0'
}

Maven

<dependencies>
    <dependency>
        <groupId>org.spongepowered</groupId>
        <!-- Modify this line to target the loader you wish to use. -->
        <artifactId>configurate-hocon</artifactId>
        <version>4.0.0</version>
    </dependency>
</dependencies>

More detailed usage instructions can be found in the Configurate wiki.

Contributing

Clone

The following steps will ensure your project is cloned properly.

  1. git clone https://github.com/SpongePowered/Configurate.git
  2. cd Configurate

Building

Note: If you do not have Gradle 6.6+ installed then use ./gradlew for Unix systems or Git Bash and gradlew.bat for Windows systems in place of any 'gradle' command.

In order to build Configurate you simply need to run the gradle build command. You can find the compiled JAR files in ./build/libs (found in each subproject) labeled similarly to '-x.x.x-SNAPSHOT.jar'.

While the entire project can run on Java 8, the project requires Java 11 to build, and some tests require at least Java 14 to run. Our CI will run these for you if you don't have the latest JDK set up locally.

Pull Requests

We love PRs! However, when contributing, here are some things to keep in mind:

  • Take a look at open issues first before you get too far in -- someone might already be working on what you were planning on doing
  • In general, we follow the Sponge style guidelines for code style -- see the Contributing Guidelines for details.
  • Please, please, please test PRs. It makes the process a lot easier for everybody :)
Comments
  • Call to disable alphabetical order.

    Call to disable alphabetical order.

    If I want my config to look like this: version="0.3" node1 = "banana" aForApple="yes" I can't because nodes are locked in alphabetical order. If I could disable that, I could get that outcome.

    wontfix 
    opened by codeHusky 24
  • Deserializing maps with Objects that have a custom serializer

    Deserializing maps with Objects that have a custom serializer

    In SpongeVanilla 59 I was able to use following code to load a map of objects:

    @ConfigSerializable
    public class PermissionConfig {
        @Setting
        public Map<String, PermissionStruct> keys = new HashMap<>();
    }
    

    where PermissionStruct had a custom serializer that i registered at startup.

    Deserializing in SpongeVanilla 59 and lower works, but in SpongeVanilla 75 this throws an error telling me that PermissionStruct needs an empty constructor (to me it sounds like it's ignoring the custom serializer).

    PermissionStruct doesn't have an empty constructor, but it never needed one, since the custom serializer uses a constructor with arguments.

    Adding an empty constructor causes the generated PermissionStruct objects to be empty.

    opened by Valandur 15
  • Configuration does not accept objects of type class java.lang.Short

    Configuration does not accept objects of type class java.lang.Short

    I am trying to add an itemstack to the config, and it works just fine, until I try adding an item that is enchanted. I am using this: node.setValue(TypeToken.of(ItemStack.class), stack);

    And it throws an error (the title of the issue). Asked in the discord and they pointed me here.

    :)

    opened by Elrol 10
  • Add a value processor for Settings

    Add a value processor for Settings

    The loading right now doesn't necessarily let you control what to do when Configurate loads a value. As someone who strictly tries to idiot-proof anything the end-user can screw up, this makes having to verify values read from the configuration pretty tedious. Perhaps allowing to specify a Function to process the value beforehand can be added to the @Setting annotation? This will allow the developer to manipulate the value given by the mapper and perform actions warning the user should the returned value be invalid upon loading.

    @Setting(value = "path.to.int", processor = new IntegerCheckProcessor(defaultValue))

    feature request 
    opened by Xemiru 10
  • added method ifExists for ease of use

    added method ifExists for ease of use

    Method takes in a consumer so users can easily check if a node is not virtual and work with it without having to separate things into if statements.

    All tests created passed on my end but can be tested again if wanted

    opened by ghost 9
  • Implement NodeWalker utility for traversing configuration structures

    Implement NodeWalker utility for traversing configuration structures

    Provides a way to easily iterate over an entire configuration structure, or visit the child nodes in a specific sub section.

    Use cases:

    • most obvious I can think of is "printing" a configuration to a user
    • searching for a specific value (less useful for configurations, but configurate can be used for reading and processing data too

    I also intend to use this in SpongeCommon & GriefPrevention to exclude entries from being saved if they're already present & set to the same value in a "parent" config. Some sort of DFS post order traversal is needed to implement this behaviour, and I figured it made sense for that code to be in configurate itself, as opposed to being implemented in sub-projects.

    Would appreciate any feedback :)

    opened by lucko 9
  • Custom (de)serialization for a specific field

    Custom (de)serialization for a specific field

    Sometimes we would like to (de)serialize field value to another data structure than the type of a field/"type" in the hocon file, this is currently not possible via configurate.

    For example assume we have following simplified case.

    class Parent {
         Long id;
         List<Child> childs
    }
    
    class Child {
         Long id;
         Parent parent
    }
    

    Each Parent and Child i want to serialize in its own file, and in the child files i want to serialize parent only as a foreign key/id, during the loading the child file to pojo i want to lookup some eg.: internal cache with parents and assign its reference to the field "parent". Currently this is not possible, If i want to use keep using objectmapper.

    If we look at the gson for example theres the annotation @JsonAdapter https://google.github.io/gson/apidocs/com/google/gson/annotations/JsonAdapter.html which can be used to defined custom logic for a (de)serialization of one or more specific fields withing a class. Having an equavalent in Configururate could be a simple sollution for such cases.

    opened by NeumimTo 8
  • TypeSerializerCollection registration manual ordering

    TypeSerializerCollection registration manual ordering

    collection.get(TypeToken<?>) returns first matching, not best matching. If i add collection serializer and then set serializer and try to serialize any set - collection serializer will be used.

    UPD: Order sensitivity is documented. With this behavior it's impossible to manage search order, if i add Collection serializer, i should re-implement Set and List serializer, because Collection serializer will take advantage.

    bug 
    opened by XakepSDK 8
  • configurate creating a ton of tmp files that aren't deleted properly

    configurate creating a ton of tmp files that aren't deleted properly

    http://pastebin.com/WYmWWt6G

    Server reported this to me which shows configurate attempting to save to file but gets stuck in a loop since tmp files still exist.

    bug 
    opened by bloodmc 8
  • Annotation based serialization is broken

    Annotation based serialization is broken

    SpongeForge version: spongeforge-1.12.2-2705-7.1.0-BETA-3328.jar UltimateChat and magibridge don't work with that SF version. At least magibrdige uses annotation based serialization only. https://github.com/Eufranio/MagiBridge/blob/api-7/src/main/java/com/magitechserver/magibridge/config/ConfigManager.java exceptions https://gist.github.com/XakepSDK/5adf1a60257b84225c106694e4237213

    opened by XakepSDK 7
  • Comment on fields in kotlin data class constructor do not get saved to file

    Comment on fields in kotlin data class constructor do not get saved to file

    This comment works fine (gets saved properly to the hocon config file):

    @ConfigSerializable
    class Config {
      @Comment("Test comment")
      val foo: String = "bar"
    }
    

    Whereas this comment gets completely ignored (The value still gets saved properly):

    @ConfigSerializable
    data class Config(
      @Comment("Test comment")
      val foo: String = "bar",
    )
    
    component/extra/kotlin invalid 
    opened by alexstaeding 6
  • chore(deps): Update dependency com.pinterest:ktlint to v0.48.0

    chore(deps): Update dependency com.pinterest:ktlint to v0.48.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | com.pinterest:ktlint | 0.47.1 -> 0.48.0 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    pinterest/ktlint

    v0.48.0

    Compare Source

    Indent rule

    The indent rule has been rewritten from scratch. Solving problems in the old algorithm was very difficult. With the new algorithm this becomes a lot easier. Although the new implementation of the rule has been compared against several open source projects containing over 400,000 lines of code, it is still likely that new issues will be discovered. Please report your indentation issues so that these can be fixed as well.

    .editorconfig property to disable rules

    In the previous release (0.47.x), the .editorconfig property disabled_rules was deprecated and replaced with ktlint_disabled_rules. This latter property has now been deprecated as well in favour of a more flexible and better maintainable solution. Rule and rule sets can now be enabled/disabled with a separate property per rule (set). Please read deprecation of (ktlint_)disable_rules property for more information.

    The KtLint CLI has not been changed. Although you can still use parameter --experimental to enable KtLint's Experimental rule set, you might want to set .editorconfig property ktlint_experimental = enabled instead.

    API Changes & RuleSet providers

    If you are not an API consumer or Rule Set provider then you can skip this section.

    Class relocations

    Classes below have been relocated:

    • Class com.pinterest.ktlint.core.api.UsesEditorConfigProperties.EditorConfigProperty has been replaced with com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty.
    • Class com.pinterest.ktlint.core.KtLintParseException has been replaced with com.pinterest.ktlint.core.api.KtLintParseException.
    • Class com.pinterest.ktlint.core.RuleExecutionException has been replaced with com.pinterest.ktlint.core.api.KtLintRuleException.
    • Class com.pinterest.ktlint.reporter.format.internal.Color has been moved to com.pinterest.ktlint.reporter.format.Color.
    • Class com.pinterest.ktlint.reporter.plain.internal.Color has been moved to com.pinterest.ktlint.reporter.plain.Color.
    Invoking lint and format

    This is the last release that supports the ExperimentalParams to invoke the lint and format functions of KtLint. The ExperimentalParams contains a mix of configuration settings which are not dependent on the file/code which is to be processed. Other parameters in that class describe the code/file to be processed but can be configured inconsistently (for example a file with name "foo.kt" could be marked as a Kotlin Script file).

    The static object KtLint is deprecated and replaced by class KtLintRuleEngine which is configured with KtLintRuleEngineConfiguration. The instance of the KtLintRuleEngine is intended to be reused for scanning all files in a project and should not be recreated per file.

    Both lint and format are simplified and can now be called for a code block or for an entire file.

    import java.io.File
    
    // Define a reusable instance of the KtLint Rule Engine
    val ktLintRuleEngine = KtLintRuleEngine(
      // Define configuration
    )
    
    // Process a collection of files
    val files: Set<File> // Collect files in a convenient way
    files.forEach(file in files) {
        ktLintRuleEngine.lint(file) {
            // Handle lint violations
        }
    }
    
    // or process a code sample for a given filepath
    ktLintRuleEngine.lint(
      code = "code to be linted",
      filePath = Path("/path/to/source/file")
    ) {
      // Handle lint violations
    }
    
    Retrieve .editorconfigs

    The list of .editorconfig files which will be accessed by KtLint when linting or formatting a given path can now be retrieved with the new API KtLint.editorConfigFilePaths(path: Path): List<Path>.

    This API can be called with either a file or a directory. It's intended usage is that it is called once with the root directory of a project before actually linting or formatting files of that project. When called with a directory path, all .editorconfig files in the directory or any of its subdirectories (except hidden directories) are returned. In case the given directory does not contain an .editorconfig file or if it does not contain the root=true setting, the parent directories are scanned as well until a root .editorconfig file is found.

    Calling this API with a file path results in the .editorconfig files that will be accessed when processing that specific file. In case the directory in which the file resides does not contain an .editorconfig file or if it does not contain the root=true setting, the parent directories are scanned until a root .editorconfig file is found.

    Psi filename replaces FILE_PATH_USER_DATA_KEY

    Constant KtLint.FILE_PATH_USER_DATA_KEY is deprecated and will be removed in KtLint version 0.49.0. The file name will be passed correctly to the node with element type FILE and can be retrieved as follows:

    if (node.isRoot()) {
        val fileName = (node.psi as? KtFile)?.name
        ...
    }
    
    Added
    • Wrap blocks in case the max line length is exceeded or in case the block contains a new line wrapping (#​1643)
    • patterns can be read in from stdin with the --patterns-from-stdin command line options/flags (#​1606)
    • Add basic formatting for context receiver in indent rule and new experimental rule context-receiver-wrapping (#​1672)
    • Add naming rules for classes and objects (class-naming), functions (function-naming) and properties (property-naming) (#​44)
    • Add new built-in reporter plain-summary which prints a summary the number of violation which have been autocorrected or could not be autocorrected, both split by rule.
    Fixed
    • Let a rule process all nodes even in case the rule is suppressed for a node so that the rule can update the internal state (#​1644)
    • Read .editorconfig when running CLI with options --stdin and --editorconfig (#​1651)
    • Do not add a trailing comma in case a multiline function call argument is found but no newline between the arguments trailing-comma-on-call-site (#​1642)
    • Add missing ktlint_disabled_rules to exposed editorConfigProperties (#​1671)
    • Do not add a second trailing comma, if the original trailing comma is followed by a KDOC trailing-comma-on-declaration-site and trailing-comma-on-call-site (#​1676)
    • A function signature preceded by an annotation array should be handled similar as function preceded by a singular annotation function-signature (#​1690)
    • Fix offset of annotation violations
    • Fix line offset when blank line found between class and primary constructor
    • Remove needless blank line between class followed by EOL, and primary constructor
    • Fix offset of unexpected linebreak before assignment
    • Remove whitespace before redundant semicolon if the semicolon is followed by whitespace
    Changed
    • Update Kotlin development version to 1.8.0-RC and Kotlin version to 1.7.21.
    • The default value for trailing comma's on call site is changed to true unless the android codestyle is enabled. Note that KtLint from a consistency viewpoint enforces the trailing comma on call site while default IntelliJ IDEA formatting only allows the trailing comma but leaves it up to the developer's discretion. (#​1670)
    • The default value for trailing comma's on declaration site is changed to true unless the android codestyle is enabled. Note that KtLint from a consistency viewpoint enforces the trailing comma on declaration site while default IntelliJ IDEA formatting only allows the trailing comma but leaves it up to the developer's discretion. (#​1669)
    • CLI options --debug, --trace, --verbose and -v are replaced with --log-level=<level> or the short version `-l=, see CLI log-level. (#​1632)
    • In CLI, disable logging entirely by setting --log-level=none or -l=none (#​1652)
    • Rewrite indent rule. Solving problems in the old algorithm was very difficult. With the new algorithm this becomes a lot easier. Although the new implementation of the rule has been compared against several open source projects containing over 400,000 lines of code, it is still likely that new issues will be discovered. Please report your indentation issues so that these can be fixed as well. (#​1682, #​1321, #​1200, #​1562, #​1563, #​1639)
    • Add methods "ASTNode.upsertWhitespaceBeforeMe" and "ASTNode.upsertWhitespaceAfterMe" as replacements for "LeafElement.upsertWhitespaceBeforeMe" and "LeafElement.upsertWhitespaceAfterMe". The new methods are more versatile and allow code to be written more readable in most places. (#​1687)
    • Rewrite indent rule. Solving problems in the old algorithm was very difficult. With the new algorithm this becomes a lot easier. Although the new implementation of the rule has been compared against several open source projects containing over 400,000 lines of code, it is still likely that new issues will be discovered. Please report your indentation issues so that these can be fixed as well. (#​1682, #​1321, #​1200, #​1562, #​1563, #​1639, #​1688)
    • Add support for running tests on java 19, remove support for running tests on java 18.
    • Update io.github.detekt.sarif4k:sarif4k version to 0.2.0 (#​1701).

    Configuration

    📅 Schedule: Branch creation - "after 5pm on the 2nd day of the month" (UTC), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 0
  • chore(deps): Update build deps and github actions

    chore(deps): Update build deps and github actions

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | org.jetbrains.kotlin.jvm (source) | 1.7.22 -> 1.8.0 | age | adoption | passing | confidence | | io.freefair.aggregate-javadoc-jar | 6.6 -> 6.6.1 | age | adoption | passing | confidence | | org.gradle.toolchains.foojay-resolver-convention | 0.2 -> 0.4.0 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    JetBrains/kotlin

    v1.8.0

    Analysis API
    • KT-50255 Analysis API: Implement standalone mode for the Analysis API
    Analysis API. FIR
    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias
    Android
    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder
    Backend. Native. Debug
    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"
    Compiler
    New Features
    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage
    Performance Improvements
    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering
    Fixes
    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend
    • KT-53270 K1: implement synthetic Enum.entries property
    • KT-52823 Cannot access class Thread.State after upgrading to 1.7 from 1.6.1 using -Xjdk-release=1.8
    • KT-55108 IR interpreter: Error occurred while optimizing an expression: VARARG
    • KT-53547 Missing fun IrBuilderWithScope.irFunctionReference
    • KT-54884 "StackOverflowError: null" caused by Enum constant name in constructor of the same Enum constant
    • KT-47475 "IncompatibleClassChangeError: disagree on InnerClasses attribute": cross-module inlined WhenMappings has mismatched InnerClasses
    • KT-55013 State checker use-after-free with XCode 14.1
    • KT-54802 "VerifyError: Bad type on operand stack" for inline functions on arrays
    • KT-54707 "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value
    • KT-48678 Coroutine debugger: disable "was optimised out" compiler feature
    • KT-54745 Restore KtToken constructors without tokenId parameter to preserve back compatibility
    • KT-54650 Binary incompatible ABI change in Kotlin 1.7.20
    • KT-52786 Frontend / K2: IndexOutOfBoundsException when opting in to K2
    • KT-54004 Builder type inference does not work correctly with variable assignment and breaks run-time
    • KT-54581 JVM: "VerifyError: Bad type on operand stack" with generic inline function and when inside try-catch block
    • KT-53794 IAE "Unknown visibility: protected/protected and package/" on callable reference to protected member of Java superclass
    • KT-54600 NPE on passing nullable Kotlin lambda as Java's generic SAM interface with super type bound
    • KT-54463 Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate
    • KT-54509 Ir Interpreter: unable to evaluate string concatenation with "this" as argument
    • KT-54615 JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression
    • KT-53146 JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime
    • KT-53712 Add mode to prevent generating JVM 1.8+ annotation targets (TYPE_USE, TYPE_PARAMETER)
    • KT-54366 K2: no JVM BE specific diagnostics (in particular CONFLICTING_JVM_DECLARATIONS) in 1.8
    • KT-35187 NullPointerException on compiling suspend inline fun with typealias to suspend function type
    • KT-54275 K2: "IllegalArgumentException: KtParameter is not a subtype of class KtAnnotationEntry for factory REPEATED_ANNOTATION"
    • KT-53656 "IllegalStateException: typeParameters == null for SimpleFunctionDescriptorImpl" with recursive generic type parameters
    • KT-46727 Report warning on contravariant usages of star projected argument from Java
    • KT-53197 K2: 'init' hides member of supertype 'UIComponent' and needs 'override' modifier
    • KT-53867 K2: @JvmRecord does not compile to a java record
    • KT-53964 K2 is unable to work with Java records
    • KT-53349 K2: TYPE_MISMATCH caused by non-local return
    • KT-54100 "Type variable TypeVariable(P) should not be fixed" crash in code with errors
    • KT-54212 K2: cannot calculate implicit property type
    • KT-53699 K2: Exception during IR lowering in code with coroutines
    • KT-54192 Warn about unsupported feature on generic inline class parameters
    • KT-53723 Friend modules aren't getting passed to cache build during box tests
    • KT-53873 K2: Duplicated diagnostics reported from user type ref checkers
    • KT-50909 "VerifyError: Bad type on operand stack" caused by smartcasting for nullable inline class property in class
    • KT-54115 Restore Psi2IrTranslator constructor from 1.7.20
    • KT-53908 K2: Self-referencing generics in Java class causes New Inference Error (IE: class Foo<T extends Foo>)
    • KT-53193 K2: compile error on project that compiles fine with normal 1.7.10
    • KT-54062 K2 Invalid serialization for type-aliased suspend function type with extension receiver
    • KT-53953 Forbid usages of super or super if in fact it accesses an abstract member
    • KT-47473 NI: Missed UPPER_BOUND_VIOLATED diagnostics if use type aliases with type parameters
    • KT-54049 K2: false positive MANY_IMPL_MEMBER_NOT_IMPLEMENTED
    • KT-30054 Wrong approximation if nullable anonymous object with implemented interface is used
    • KT-53751 Postpone IgnoreNullabilityForErasedValueParameters feature
    • KT-53324 Implement Enum.entries lowering on K/N
    • KT-44441 K2: report redeclaration error if there is a Java class with the same name as the Kotlin class
    • KT-53807 No warning about declaringClass on an enum value
    • KT-53493 K2: val on function parameter counts as just warning
    • KT-53435 K2: "IllegalArgumentException: class KtValueArgument is not a subtype of class KtExpression for factory ANNOTATION_ARGUMENT_MUST_BE_CONST" if string in nested annotation is concatenated
    • KT-52927 AssertionError: LambdaKotlinCallArgumentImpl
    • KT-53922 Make Enum.entries unstable feature to poison binaries
    • KT-53783 Exception during psi2ir when declaring expect data object
    • KT-53622 [OVERLOAD_RESOLUTION_AMBIGUITY] when enum entry called 'entries' is present in K2
    • KT-41670 JVM IR: AbstractMethodError when using inheritance for fun interfaces
    • KT-53178 K2: implement diagnostics for serialization plugin
    • KT-53804 Restore old and incorrect logic of generating InnerClasses attributes for kotlin-stdlib
    • KT-52970 Default value constant in companion object works on JVM and JS, but fails on native
    • KT-51114 FIR: Support DNN checks
    • KT-27936 Write InnerClasses attribute for all class names used in a class file
    • KT-53719 Parsing regression on function call with type arguments and labeled lambda
    • KT-53261 Evaluate effect from inline for primitive types
    • KT-53706 K2: Context receivers are not resolved on properties during type resolution stage
    • KT-39492 Kotlin.Metadata's packageName field cannot be an empty string
    • KT-53664 Ir Interpreter: unable to evaluate name of function reference marked with JvmStatic from another module
    • KT-52478 [Native] Partial linkage: Building native binary from cached KLIBs fails if one library depends on removed nested callable member from another one
    • KT-48822 CompilationException: Back-end (JVM) Internal error: Failed to generate expression: KtProperty - ConcurrentModificationException
    • KT-50281 IllegalStateException: unsupported call of reified inlined function
    • KT-50083 Different error messages in android and JVM (Intrinsics.checkNotNullParameter).
    • KT-53236 Support Enum.entries codegen on JVM/IR BE
    • KT-41017 FIR: should we support smartcast after null check
    • KT-53202 "ISE: Descriptor can be left only if it is last" after direct invoke optimization on a capturing lambda
    • KT-46969 @BuilderInference with nested DSL scopes cause false-positive scope violation in Kotlin 1.5
    • KT-53257 FIR: Improper context receiver argument is chosen when there are two extension receiver candidates
    • KT-53090 Anonymous function and extension function literals are generated as classes even with -Xlambdas=indy
    • KT-53208 K2: Cannot get annotation for default interface method parameter when compiled with -Xuse-k2
    • KT-53184 K2: NoSuchMethodError on KProperty1.get() referenced via nullable typealias
    • KT-53198 K2: Return type mismatch: expected kotlin/Unit, actual kotlin/Unit?
    • KT-53100 Optimization needed: (CONSTANT_PRIMITIVE(x: T?)) => x
    • KT-49875 [FIR] Support infering PRIVATE_TO_THIS visibility
    • KT-53024 Refactor FIR renderer to composable architecture
    • KT-50995 [FIR] Support SAM with receiver plugin
    • KT-53148 K1: introduce warning for inline virtual member in enum
    • KT-49847 Devirtualization fails to eliminate boxing in function reference context
    • KT-52875 Extension function literal creation with -Xlambdas=indy fails with incorrect arguments
    • KT-53072 INVALID_IF_AS_EXPRESSION error isn't shown in the IDE (LV 1.8)
    • KT-52985 Native: a function with type T? returned a kotlin.Unit instead of null
    • KT-52020 FIR warning message includes internal rendering
    • KT-48778 -Xtype-enhancement-improvements-strict-mode not respecting @NonNull annotation for property accesses?
    IDE
    Fixes
    • KTIJ-22357 CCE “class org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl cannot be cast to class org.jetbrains.kotlin.fir.types.FirResolvedTypeRef” in K2
    • KT-55150 Argument for @NotNull parameter 'scope' of org/jetbrains/kotlin/resolve/AnnotationResolverImpl.resolveAnnotationType must not be null
    • KTIJ-22165 IDE notification to promote users to migrate to the new Kotlin/JS toolchain
    • KTIJ-22166 IDE notification (or something else) about JPS and Maven support for Kotlin/JS is deprecated
    • KT-53543 Rework light classes for file facade
    • KT-48773 Investigate the possibility of removing dependency on old JVM backend in light classes
    • KTIJ-19699 IDE: False positive type mismatch in Java code for Kotlin nested class non-direct inheritor from external library
    • KT-51101 FIR IDE: Exception on "Show Type Info" action
    • KTIJ-22295 MPP, IDE: False positive UPPER_BOUND_VIOLATED when JVM module implements the generic interface from MPP module and the type parameter is not equal to itself.
    • KT-51656 FIR IDE: ProgressCancelled exception is masked in the compiler during resolve
    • KT-51315 FIR IDE: move out base modules from fe10 plugin to reuse in k2 plugin
    • KTIJ-22323 K2: ISE during resolve of stdlib calls from the stdlib
    • KTIJ-21391 Generate -> Override methods : don't delegate to abstract methods
    • KT-53097 Extract common part of light classes to another module
    • KTIJ-22354 FIR LC: annotation owner is always null
    • KTIJ-22157 Kotlin call resolver leaks user code when reporting exception
    IDE. Completion
    • KTIJ-22552 Kotlin: 'for loop' postfix completion doesn't work - "Fe10SuggestVariableNameMacro must be not requested from main classloader"
    • KTIJ-22503 Support code completion for data objects
    IDE. Debugger
    • KT-51755 Compilation exception with scripting compilation during debug session
    • KTIJ-21963 Debugger / IR: Expression evaluation of the debugger doesn't work
    IDE. Decompiler, Indexing, Stubs
    • KTIJ-22750 Initialize Kotlin stub element types lazily
    • KTIJ-18094 IDE: "AssertionError: Stub count doesn't match stubbed node length" with minified Android AAR library
    • KTIJ-17632 IndexOutOfBoundsException: Cannot decompile a class located in minified AAR
    IDE. Gradle Integration
    • KT-48135 In the IDE import, reuse dependency granular source set KLIBs across multi-project build to avoid duplicate external libraries
    • KTIJ-22345 False positive unresolved reference for members of subclasses of expect classes.
    • KT-53514 HMPP: False positive for None of the following functions can be called with the arguments supplied. with Enum in common module
    • KT-51583 Gradle 7.4+ | SamplesVariantRule interference: Could not resolve all files for configuration ':kotlinKlibCommonizerClasspath'
    • KTIJ-21077 Dependency matrix does not work with Jetpack compose / multiplatform projects
    IDE. Inspections and Intentions
    • KTIJ-19531 Adapt changes about new rules for method implementation requirements
    • KTIJ-22087 Support IDE inspections for upcoming data objects
    • KTIJ-20510 Quick fix to implement and call correct super method in case of inheritance with defaults
    • KTIJ-20170 Provide quickfix for deprecated resolution to private constructor of sealed class
    • KTIJ-22630 FIR IDE: Lazy resolve exception after invocation of Override members action on value class
    • KT-49643 Intentions: "Implement members" fails when base type function declaration uses unresolved generic types
    IDE. JS
    • KTIJ-22167 Make JS IR default in projects created by wizard
    • KTIJ-22332 Wizard: Kotlin/JS projects: cssSupport DSL should be updated
    IDE. KDoc
    • KTIJ-22324 K2 IDE: implement reference resolve inside KDocs
    IDE. Multiplatform
    • KTIJ-19566 New Project Wizard: Update HMPP-related flags in multiplatform wizards
    IDE. Navigation
    • KT-51314 FIR IDE: show Kotlin declarations in search symbol
    • KTIJ-22755 Find usage for constructor from kotlin library doesn't work for secondary constructor usages
    IDE. Script
    • KTIJ-22598 Add warning for standalone scripts in source roots
    • KT-54325 .settings.gradle.kts and .init.gradle.kts are reported as standalone scripts
    IDE. Structural Search
    • KTIJ-21986 KSSR: "CodeFragment with non-kotlin context should have fakeContextForJavaFile set: originalContext = null" warning shows up when replacing
    IDE. Tests Support
    • KT-50269 FIR IDE: Allow running tests via gutter
    IDE. Wizards
    • KTIJ-23537 Wizard: projects with Android modules require higher sdkCompileVersion
    • KTIJ-23525 Wizard: Compose multiplatform: project won't build and require higher compileSdkVersion
    • KTIJ-22763 New Project Wizard: remove deprecated Android extensions plugin from Android target in the project constructor
    • KTIJ-22481 Wizard: Kotlin -> Browser application (gradle groove). Build error
    JavaScript
    Fixes
    • KT-55097 KJS / IR + IC: Using an internal function from a friend module throws an unbound symbol exception
    • KT-54406 Kotlin/JS: build with dependencies fails with "Could not find "kotlin" in [~/.local/share/kotlin/daemon]"
    • KT-53074 Make JS IR BE default in toolchain (gradle & CLI)
    • KT-50589 UTF-8 Instability in kotlin.js.map
    • KT-54934 KJS / IR + IC: Suspend abstract function stubs are generated with unstable lowered ic signatures
    • KT-54895 KJS / IR + IC: broken cross module references for function default param wrappers
    • KT-54520 KJS / IR Allow IdSignature clashes
    • KT-54120 JS IR + IC: pointless invalidation of dependent code after modifying companions
    • KT-53986 KJS / IR + IC: compiler produces different JS file names with IC and without IC
    • KT-54010 JS IR + IC: Force IC cache invalidation after updating language version or features
    • KT-53931 KJS / Gradle: Regression with 1.7.20-RC: ReferenceError: println is not defined
    • KT-53968 Kotlin/JS: no UninitializedPropertyAccessException on access to non-initialized lateinit property defined in dependencies
    • KT-54686 KJS / IR: Incorrect generation of signatures when one of argument is nested class
    • KT-54479 KJS / IR + IC: Adding or removing companion fields leads java.lang.IllegalStateException in the compiler IC infrastructure
    • KT-54382 KJS / IR: Wrong type check for inheritors of suspend functions
    • KT-54323 KJS / IR + IC: Intrinsics from stdlib may lose their dependencies in incremental rebuild
    • KT-53361 KJS / IR: No debug info is generated for in-line js code
    • KT-53321 Implement Enum.entries lowering on JS/IR
    • KT-53112 KJS IR turn on IC infra by default
    • KT-50503 Kotlin/JS: IR + IC: compileTestDevelopmentExecutableKotlinJs fails with ISE: "Could not find library" after removing module dependency
    • KT-54011 JS IR + IC: EnumEntries don't work well when IC is enabled
    • KT-53672 KJS / IR: "IndexOutOfBoundsException: Index 0 out of bounds for length 0" caused by function reference to extension function of reified type variable
    • KT-43455 KJS: IR. Incremental compilation problem with unbound symbols
    • KT-53539 KJS: Exported class inherited non-exported class shows warning
    • KT-53443 KJS/IR: NullPointerException caused by anonymous objects inside lambdas
    • KT-52795 K/JS and K/Native IR-validation/compilation errors for a valid kotlin code
    • KT-52805 KJS/IR: Invalid call of inline function in also block
    • KT-51151 KJS / IR: Wrong overloaded generic method with receiver is called
    • KT-52830 KJS/IR: Sourcemap disabling doesn't work
    • KT-52968 KJS / IR: Buggy generation of overridden methods
    • KT-53063 KJS / IR + IC: undefined cross module reference for implemented interface functions
    • KT-51099 KJS / IR + IC: Cache invalidation doesn't check generic class variance annotations (in, out)
    • KT-51090 KJS / IR + IC: Cache invalidation doesn't check suspend qualifier
    • KT-51088 KJS / IR + IC: Cache invalidation doesn't check class qualifiers (data, inline)
    • KT-51083 KJS / IR + IC: Cache invalidation doesn't check inline function which was non inline initially
    • KT-51896 KJS / IR + IC: Cache invalidation doesn't trigger rebuild for fake overridden inline functions
    Language Design
    • KT-48385 Deprecate confusing grammar in when-with-subject
    • KT-48516 Forbid @Synchronized annotation on suspend functions
    • KT-41886 Ability to require opt-in for interface implementation, but not for usage
    • KT-34943 OVERLOAD_RESOLUTION_AMBIGUITY inconsistent with the equivalent Java code
    • KT-51334 Implement type-bound label this@Type
    Libraries
    New Features
    • KT-21007 Provide Kotlin OSGI Bundle with extensions for JRE8 (and JRE7)
    • KT-54082 Comparable and subtractible TimeMarks
    • KT-52928 Provide copyToRecursively and deleteRecursively extension functions for java.nio.file.Path
    • KT-49425 Update OptIn documentation to reflect latest design changes
    • KT-54005 Allow calling declaringJavaClass on Enum
    • KT-52933 rangeUntil members in built-in types
    Performance Improvements
    • KT-53508 Cache typeOf-related KType instances when kotlin-reflect is used
    Fixes
    • KT-51907 Switch JVM target of the standard libraries to 1.8
    • KT-54835 Document that Iterable.all(emptyCollection) returns TRUE.
    • KT-54168 Expand on natural order in comparator docs
    • KT-53277 Stabilize experimental API for 1.8
    • KT-53864 Review deprecations in stdlib for 1.8
    • KT-47707 Remove the system property and the brittle contains optimization code itself
    • KT-52336 Different behavior on JVM and Native in stringBuilder.append(charArray, 0, 1)
    • KT-53927 Remove deprecation from ConcurrentModificationException constructors
    • KT-53152 Introduce EnumEntries to stdlib as backing implementation of Enum.entries
    • KT-53134 stdlib > object Charsets > not thread safe lazy initialization
    • KT-51063 Gradle project with JPS runner: "JUnitException: Failed to parse version" JUnit runner internal error with JUnit
    • KT-52908 Native: setUnhandledExceptionHook swallows exceptions
    Native
    • KT-51043 Kotlin Native: ObjC-Interop: kotlin.ClassCastException: null cannot be cast to kotlin.Function2
    • KT-50786 Native: prohibit suspend calls inside autoreleasepool {}
    • KT-52834 Implement test infrastructure for K2/Native
    Native. C Export
    • KT-36878 Reverse C Interop: incorrect headers generation for primitive unassigned type arrays
    • KT-53599 [Reverse C Interop] Provide box/unbox API for unsigned primitive types
    • KT-41904 Kotlin/Native : error: duplicate member for interface and function with the same name
    • KT-42830 [Reverse C Interop] Add API to get value of boxed primitives
    • KT-39496 K/N C: optional unsigned types as function parameters crash the compiler
    • KT-39015 Cannot compile native library with nullable inline class
    Native. C and ObjC Import
    • KT-54738 Cocoapods cinterop: linking platform.CoreGraphics package
    • KT-54001 Kotlin/Native: support header exclusion in cinterop def files
    • KT-53151 Native: Custom declarations in .def don't work with modules, only headers
    Native. ObjC Export
    • KT-53680 Obj-C refinement annotations
    • KT-54119 Native: runtime assertion failed due to missing thread state switch
    • KT-42641 Don't export generated component* methods from Kotlin data classes to Obj-C header
    Native. Platform Libraries
    • KT-54225 Native: update to Xcode 14.1
    • KT-54164 Native: commonizer fails on CoreFoundation types
    • KT-39747 Why is there no WinHttp API in Kotlin/Native's Windows API?
    Native. Runtime
    • KT-49228 Kotlin/Native: Allow to unset unhandled exception hook
    • KT-27305 Fix FILE macro inside RuntimeCheck and RuntimeAssert
    Native. Runtime. Memory
    • KT-54498 Deprecation message of 'FreezingIsDeprecated' is not really helpful
    • KT-53182 New memory manager: Unexpected memory usage on IOS
    Native. Stdlib
    • KT-52429 Small Usability Improvements for Worker API
    Reflection
    • KT-54629 Incorrectly cached class classifier
    • KT-54611 KTypeImpl does not take into account class loader from the classifier property
    • KT-48136 Make Reflection.getOrCreateKotlinPackage use cache when kotlin-reflect is used
    • KT-50705 Use ClassValue to cache KClass objects in kotlin-reflect
    • KT-53454 Properly cache the same class's KClass when it's loaded by multiple classloaders in getOrCreateKotlinClass
    Specification
    • KT-54210 Update Kotlin specification to mention that since 1.8 generics in value classes are allowed
    Tools. CLI
    • KT-54116 Add JVM target bytecode version 19
    • KT-53278 Support values 6 and 8 for -Xjdk-release
    • KT-46312 CLI: Kotlin runner should use platform class loader to load JDK modules on Java 9+
    Tools. Commonizer
    • KT-54310 Commonizer fails on 1.8.0-dev K/N distributions
    • KT-48576 [Commonizer] platform.posix.pselect not commonized in Ktor
    Tools. Compiler Plugins
    • KT-46959 Kotlin Lombok: Support generated builders (@Builder)
    • KT-53683 Unresolved reference compilation error occurs if a file is annotated with @ Singular and has any guava collection type : ImmutableTable, ImmutableList or else
    • KT-53657 [K2] Unresolved reference compilation error occurs if a field is annotated with @ Singular and has type NavigableMap without explicit types specification
    • KT-53647 [K2] Unresolved reference compilation error occurs if a field is annotated with @ Singular and has type Iterable<>
    • KT-53724 Param of the @ Singular lombok annotation ignoreNullCollections=true is ignored by kotlin compiler
    • KT-53451 [K2] References to methods generated by @ With lombok annotation can't be resolved with enabled K2 compiler
    • KT-53721 [K2] There is no compilation error while trying to add null as a param of the field with non-null type
    • KT-53370 Kotlin Lombok compiler plugin can't resolve methods generated for java boolean fields annotated with @ With annotation
    Tools. Compiler plugins. Serialization
    • KT-54878 JVM/IR: java.lang.ClassCastException: class org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl cannot be cast to class org.jetbrains.kotlin.ir.types.IrTypeProjection on serializer<Box<*>>()
    • KT-55340 Argument for kotlinx.serialization.UseSerializers does not implement KSerializer or does not provide serializer for concrete type
    • KT-55296 Improve exceptions in serialization plugin
    • KT-55180 KJS: regression in serialization for Kotlin 1.8.0-beta
    • KT-53157 Recursion detected in a lazy value under LockBasedStorageManager in kotlinx.serialization
    • KT-54297 Regression in serializable classes with star projections
    • KT-49660 kotlinx.serialization: IndexOutOfBoundsException for parameterized sealed class
    • KT-43910 JS IR: Serialization with base class: "IndexOutOfBoundsException: Index 0 out of bounds for length 0"
    Tools. Daemon
    • KT-52622 Kotlin/JS, Kotlin/Common compilations start Kotlin daemon incompatible with Kotlin/JVM compilation on JDK 8
    Tools. Gradle
    New Features
    • KT-27301 Expose compiler flags via Gradle lazy properties
    • KT-53357 Change single build metrics property
    • KT-50673 Gradle: KotlinCompile task(s) should use @NormalizeLineEndings
    • KT-34464 Kotlin build report path not clickable in the IDE
    Performance Improvements
    • KT-51525 [Gradle] Optimize evaluating args for compile tasks
    • KT-52520 Remove usage of reflection from CompilerArgumentsGradleInput
    Fixes
    • KT-48843 Add ability to disable Kotlin daemon fallback strategy
    • KT-55334 kaptGenerateStubs passes wrong android variant module names to compiler
    • KT-55255 Gradle: stdlib version alignment fails build on dynamic stdlib version.
    • KT-55363 [K1.8.0-Beta] Command line parsing treats plugin parameters as source files
    • KT-54993 Raise kotlin.jvm.target.validation.mode check default level to error when build is running on Gradle 8+
    • KT-54136 Duplicated classes cause build failure if a dependency to kotlin-stdlib specified in an android project
    • KT-50115 Setting toolchain via Java extension does not configure 'kotlinOptions.jvmTarget' value when Kotlin compilation tasks are created eagerly
    • KT-55222 Migrate AndroidDependencyResolver to the new Gradle API
    • KT-55119 There is no validation for different jvmTarget and targetCompatibility values in multiplatform projects with jvm target and used java sources
    • KT-55102 Compile java task fails with different target version in pure kotlin project
    • KT-54995 [1.8.0-Beta] compileAppleMainKotlinMetadata fails on default parameters with No value passed for parameter 'mustExist'
    • KT-35003 Automatically set targetCompatibility for kotlin-jvm projects to work with gradle 6 metadata
    • KT-45335 kotlinOptions.jvmTarget conflicts with Gradle variants
    • KT-48798 Android: going from one to more than one productFlavor causes inputs of commonSourceSet$kotlin_gradle_plugin property of compileKotlin task to change
    • KT-55019 Gradle sync: UnknownConfigurationException when adding implementation dependencies to a Kotlin with Java compilation
    • KT-55004 jvmTarget value is ignored by depending modules if a task "UsesKotlinJavaToolchain" is configured for all project modules using allProjects {}
    • KT-54888 Add Gradle property to suppress kotlinOptions.freeCompilerArgs modification on execution phase
    • KT-54399 Undeprecate 'kotlinOptions' DSL
    • KT-54306 Change the naming of newly added Compiler*Options classes and interfaces
    • KT-54580 KotlinOptions in AbstractKotlinCompilation class are deprecated
    • KT-54653 java.lang.NoClassDefFoundError: kotlin/jdk7/AutoCloseableKt exception if a dependency to the kotlin-stdlib is added
    • KT-52624 Compatibility with Gradle 7.3 release
    • KT-54703 Stdlib substitution does not work with JPMS modules
    • KT-54602 Prevent leaking Gradle Compile DSL types into compiler cli runtime
    • KT-54439 Project failed to sync Native LaguageSettings to compiler options in afterEvaluate
    • KT-53885 Bump minimal supported Gradle version to 6.8.3
    • KT-53773 Protect and system properties can contain sensitive data
    • KT-53732 Add custom values limits for build scan reports
    • KT-52623 Compatibility with Gradle 7.2. release
    • KT-51831 Gradle: remove kotlin.compiler.execution.strategy system property
    • KT-51679 Change deprecation level to error for KotlinCompile setClasspath/getClasspath methods
    • KT-54335 Kotlin build report configuration. There is no validation for SINGLE_FILE output if the required kotlin.build.report.single_file property is empty or absent
    • KT-54356 Kotlin build report configuration. Wrong path is used for the property kotlin.internal.single.build.metrics.file
    • KT-53617 KotlinCompilerExecutionStrategy value is ignored by depending modules if configure once for all project modules using allProjects {}
    • KT-53823 Kotlin Gradle Plugin uses deprecated Gradle API: Provider.forUseAtConfigurationTime()
    • KT-54142 Increase Kotlin Gradle plugin Gradle target API to 7.5
    • KT-50161 Android variant filter breaks KotlinCompile cache compatibility
    • KT-54113 LanguageSettings to KotlinNativeLink.toolOptions sync are executed on the wrong context
    • KT-53830 Versions of kotlin-stdlib-jdk8 and kotlin-stdlib-jdk7 aren't overrided if added as transitive dependencies to kotlin-stdlib
    • KT-54112 Missing target input on KotlinNativeLink task
    • KT-45879 Documentation: Wrong kotlin languageVersion "1.6 (EXPERIMENTAL)"
    • KT-54103 Remove JvmTarget.JVM_1_6 from generated Gradle compiler type
    • KT-52959 KMP code is breaking Gradle project isolation
    • KT-50598 MULTIPLE_KOTLIN_PLUGINS_SPECIFIC_PROJECTS_WARNING is only shown on first build
    • KT-53246 Gradle: Special characters in paths of errors and warnings should be escaped
    • KT-47730 How to avoid stdlib coming from Kotlin gradle plugin
    • KT-52209 Corrupted cache and non-incremental build if produce caches "in process" and restore then compiling with kotlin daemon
    • KT-41642 "TaskDependencyResolveException: Could not determine the dependencies" when trying to apply stdlib
    • KT-53390 Drop usage of -Xjava-source-roots when passing java sources required for Kotlin compilation
    • KT-52984 Kotlin Gradle plugin is misbehaving by resolving DomainObjectCollection early
    • KT-38622 Non-incremental compilation because of R.jar with Android Gradle plugin 3.6
    • KT-38576 AnalysisResult.RetryWithAdditionalRoots crashes during incremental compilation with java classes in classpath
    Tools. Gradle. Cocoapods
    • KT-54314 Cocoapods: Signing pod dependency for Xcode 14
    • KT-54060 Xcode 14: disable bitcode embedding for Apple frameworks
    • KT-53340 Change default linking type for frameworks registered by cocoapods plugin
    • KT-53392 Deprecate and delete downloading pod dependencies by direct link
    • KT-53695 Build of macOS application fails if a framework is integrated via Cocoapods plugin
    Tools. Gradle. JS
    • KT-53367 KJS: Migrate cssSupport API
    • KT-45789 KJS / IR: Transitive NPM dependencies are not included in PublicPackageJsonTask output
    • KT-55099 K/JS: Second declaration of JS target without compiler type report warning incorrectly
    • KT-52951 [KGP/JS] Browser test target registration via properties
    • KT-52950 KJS: Report if yarn.lock was updated during built
    • KT-53374 KJS / Gradle: Implement IDEA sync detection logic via ValueSource to improve configuration cache support
    • KT-53381 Kotlin/JS: with erased kotlin-js-store/ and reportNewYarnLock = true the task kotlinUpgradeYarnLock always fails
    • KT-53788 KJS / Gradle: Disable Gradle build cache for KotlinJsDce when development mode is enabled
    • KT-53614 Kotlin/JS upgrade npm dependencies
    Tools. Gradle. Multiplatform
    New Features
    • KT-53396 Support 'implementation platform()' by gradle kotlin mpp plugin for JVM target
    • KT-40489 MPP / Gradle: support BOM (enforcedPlatform) artifacts in source set dependencies DSL
    Performance Improvements
    • KT-52726 [MPP] Optimize caching/performance/call-sites of 'compilationsBySourceSets'
    Fixes
    • KT-54634 MPP: Test Failure causes: KotlinJvmTest$Executor$execute$1 does not define failure
    • KT-35916 Gradle MPP plugin: Configurations for a main compilation and its default source set have different naming
    • KT-46960 Repeated kotlin/native external libraries in project
    • KT-27292 MPP: jvm { withJava() }: Gradle build: Java source under Kotlin root is resolved while building, but does not produce output class files
    • KT-34650 Naming clash in MPP+Android: androidTest vs androidAndroidTest
    • KT-54387 Remove MPP alpha stability warning
    • KT-31468 Targets disambiguation doesn't work if a depending multiplatform module uses withJava() mode
    • KT-54090 Take an Apple test device from the device list
    • KT-54301 KotlinToolingVersionOrNull: IllegalArgumentException
    • KT-53256 Implement K/N compiler downloading for KPM
    • KT-45412 KotlinCompilation: Make sure .kotlinSourceSets and .allKotlinSourceSets include the default source set
    • KT-49202 Tests on android target can't be executed in multiplatform project if dependency to kotlin-test framework is provided as a single dependency and tests configured to be executed via Junit5
    Tools. Gradle. Native
    New Features
    • KT-43293 Support Gradle configuration caching with Kotlin/Native
    • KT-53107 Add arm64 support for watchOS targets (Xcode 14)
    Fixes
    • KT-53704 Native cinterop: eager header path calculation
    • KT-54814 Kotlin/Native: Github Actions: Testing watchOSX64 with Xcode 14 — Invalid device: Apple Watch Series 5
    • KT-54627 Native: :commonizeNativeDistribution with configuration cache enabled fails even when set to warn on JDK 17
    • KT-54339 Link tasks fail if Gradle Configuration Cache is enabled
    • KT-53191 Native cinterop sync problem with gradle
    • KT-54583 watchosDeviceArm64 target shouldn't register test tasks
    • KT-52303 Gradle / Native: Build tasks ignore project.buildDir
    • KT-54442 Gradle iOS test tasks fail if a device is not selected explicitly
    • KT-54177 Gradle: Deprecate enableEndorsedLibs flag
    • KT-47355 Support macos target for FatFramework task
    • KT-53339 MPP / CocoaPods: The static framework fails to install on a real iOS device
    • KT-31573 Missing description for Native Gradle tasks
    • KT-53131 Gradle Sync: "NoSuchElementException: Array contains no element matching the predicate" with CocoaPods
    • KT-53686 Task assembleReleaseXCFramework fails with "error: the path does not point to a valid framework" if project name contains a dash
    Tools. Incremental Compile
    • KT-54144 New IC: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing an inline function with custom JvmName
    • KT-53871 New IC: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing an inline property accessor
    • KT-19804 Relocatable IC caches
    Tools. JPS
    • KT-45474 False positive NO_ELSE_IN_WHEN on sealed class with incremental compilation
    • KT-54228 Switching abstract to sealed classes causes incremental issue
    • KT-38483 JPS: Stopping compilation causes IDE CompilationCanceledException
    • KT-50310 False positive NO_ELSE_IN_WHEN on incremental build when adding sealed classes
    • KT-48813 Move cache version to compiler
    • KTIJ-921 JPS: FileNotFoundException on project build in mixed Kotlin/Scala project
    Tools. Kapt
    • KT-54187 JVM IR + kapt: incorrect modifier final is generated for n

    Configuration

    📅 Schedule: Branch creation - "after 5pm on the 2nd day of the month" (UTC), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 0
  • feat(core): Optionally use a user-provided Lookup when building object mappers

    feat(core): Optionally use a user-provided Lookup when building object mappers

    This allows Configurate to read fields in otherwise closed modules.

    Needs some more robust test cases (with actual modules?) to ensure this actually works -- maybe a testData subproject is in our future

    component/core 
    opened by zml2008 0
  • Localized error messages

    Localized error messages

    Configuration error messages are often visible to end users, whose primary language is not English.

    We should make every error message translatable - limited by underlying libraries

    This can work using the standard Java ResourceBundle system, and must work standalone.

    We can hopefully build on Sponge's existing use of crowdin by adding a project to help process user-submitted translations.

    It would be nice to provide some sort of hook so translations can be expressed in a native-friendly way-say, with Minecraft's chat components, to display localized error messages ingame in the client locale, rather than the server locale.

    feature request 
    opened by zml2008 0
  • Improving serialization error messages

    Improving serialization error messages

    In a bunch of places, I think exceptions should include 3 things. The input value (string for deserialization, object for serialization), the type (expected type for deserialization, initial type for deserialization), and the exact NodePath to that point.

    And this should be consistent everywhere. For example the BooleanSerializer has 2 of those, but doesn't give the exact input value, just that it couldn't convert a String into a boolean.

    I think there are some special cases like Maps where some more indepth stuff should be done. For example the message should say if it was a key for value that failed. I did some of this stuff for Paper making my own MapSerializer (see here)

    feature request component/core 
    opened by Machine-Maker 0
  • Remove reflective RecordFieldDiscoverer

    Remove reflective RecordFieldDiscoverer

    Currently, the record field discoverer has two implementations: one which accesses Class methods reflectively (from the J14/J15 era), and one in a multi-release folder which directly calls the same methods. As the J14/J15 record implementations were only preview features, they are mostly unused in production environments. Additionally, 14 is already out of support, and 15 is soon to be out of support (March 2023 for Azul's distribution), so there should not be many remaining users.

    What few users there are can delay upgrading Configurate until they've been able to update to at least Java 16.

    We can remove the reflection-based implementation in favor of the directly compiled implementation that we already have, to reduce required maintenance effort for the project.

    component/core 
    opened by zml2008 0
Releases(4.1.2)
  • 4.1.2(Aug 17, 2021)

    • core: Fix conversion of zero-value doubles to floats (#206)
    • core: Optimize TypeSerializerCollection.get based on end-user profiling
    • core: Fail fast when values of an incorrect type are set (#210)
    Source code(tar.gz)
    Source code(zip)
  • 3.7.3(Aug 17, 2021)

    • Add Automatic-Module-Name manifest attribute to all Configurate components. This allows the 3.x series to be used in a modular environment.

    Note: The module names were selected to align with the Configurate 4 artifact (and module) names. See the 4.0.0 release notes for information on the module renames that happened for that release.

    Source code(tar.gz)
    Source code(zip)
  • 4.1.1(May 9, 2021)

  • 4.1.0(May 4, 2021)

    This is a minor feature release to the Configurate v4 series that addresses a variety of bugfixes, small API additions, and Javadoc tweaks that have built up in the months since the 4.0.0 release.

    Thanks to forresthopkinsa, jpenilla, and ItsTehBrian for their contributions to this release.

    Added

    • core: NodePath.plus added to combine paths
    • core: AbstractListChildSerializer is now part of Configurate's public API
    • core: Added methods on ConfigurationLoader to load/save from strings
    • core: Temporary files for writing are now prepended with a . so they appear hidden in file viewers
    • core: Multi-release jar functionality is now used to take advantage of some collections and reflection API only available in newer Java versions
    • core: Added analysis annotations to indicate contracts in ConfigurationOptions and AbstractConfigurationLoader
    • core: Added ConfigurationNode.require methods for cases where a return value is known to be non-null, to avoid nullabilty warnings in IDEs
    • core: Added flags field to the @Matches constrant annotation to pass through Pattern flags
    • gson: Added serializers for JsonElement and its subtypes (accessible via GsonConfigurationLoader.gsonSerializers())
    • kotlin: Add supplier-defaulted get() extensions to ConfigurationNode

    Fixed

    • core: Retry closing in AtomicFiles, to attempt better handling of Windows file locking
    • core: Handling of integer keys in the map serializer (#184)
    • core: Improve error messages when trying to get the object mapper to construct an object instance that it is unable to.
    • core: Fix handling of absent primitive fields in the record object mapper
    • core: Fix erasing target files when attempting to save a clearly invalid node (#189)
    • core: Sets of enums are now deserialized as EnumSets rather than HashSets
    • core: Add missing primitive types to Types.box/unbox
    • core: Separate the concepts of a null value and being virtual, to correct handling of null-valued non-virtual nodes (#187)
    • core: Correctly handle configuration files stored within symlinked directories
    • core: Fixed improper floating-point precision testing (#198)
    • hocon: Ensure leading spaces in comments are stripped
    • kotlin: Correct the non-defaulted get method to use the appropriate Java overload of get (#185)

    Deprecated

    • kotlin: The NodePath.plus extension function has been deprecated since it is replaced by the plus method in NodePath itself.
    Source code(tar.gz)
    Source code(zip)
    tool-4.1.0.tar(8.14 MB)
    tool-4.1.0.zip(7.28 MB)
  • 4.0.0(Nov 14, 2020)

    Welcome to a new major release of Configurate! We've taken the time to review a lot of longstanding pain points, so there are a variety of breaking changes in this release. Some of the behaviour changes can be subtle, so please read the changelog carefully.

    To ease upgrading for IntelliJ users, a migration XML file has been attached to this release. This can be imported as IDE settings, or placed in your $INTELLIJ_HOME/migration folder (in %APPDATA%/Roaming/JetBrains on Windows).

    New features

    • Added TypeSerializers for Path and File
    • Added new registerExact method to TypeSerializerCollection.Builder to register serializers for only a single type and not its subtypes.
    • Added Java 14+ record support and many other features to the object mapper (see below for more details).
    • Added new submodules to integrate with Mojang's DataFixerUpper library (versions 2-4), with a DynamicOps implementation, DataFix-using transformations, and conversions between Codecs and TypeSerializers.
    • Make more extensive use of a unified NodePath across the whole API, for operations like resolving nodes and specifying transformation paths.
    • Redesigned the exception structure of the project, so all configuration operations throw exceptions that extend from ConfigurateException, which provide more machine-readable metadata. ConfigurateException extends IOException, so existing error handling may not break.
    • Add new NodeFactory interface to provide a common view for creating configuration nodes.
    • Limited support for reading YAML files indented with tabs.
    • Added a new "representation hints" system for attaching arbitrary metadata to nodes.
    • Added support for "implicit initialization" in TypeSerializers. This will, for collection types, resolve null node values as empty collections. Implicit initialization is enabled by default.

    Breaking changes

    • Moved from ninja.leaping to org.spongepowered package.
    • Moved type serializers from objectmapping.serialize to serialize package.
    • Made node implementation classes package-private, and moved the attributed and commented node subtypes out of their own packages.
    • Dropped the get and set prefixes from method names across the API.
    • No longer depends on the Guava library. This has resulted in a lot of code that formerly used the Guava TypeToken moving to use either java.lang.reflect.Type or the GeAnTyRef TypeToken.
    • Renamed configurate-json implementation to configurate-jackson.
    • Renamed configurate-ext-kotlin to configurate-extra-kotlin.
    • Moved Guice support out of core into configurate-extra-guice.
    • When loading a configuration file, empty lists and maps are represented as such in nodes in all loaders. In the past, some loaders have provided null values instead.
    • YamlConfigurationLoader now returns CommentedConfigurationNode instances, in preparation for full comment support coming in a future release.
    • In the YAML and HOCON loaders, the underlying libraries used are now to be treated as an implementation detail. All API that directly referenced them has been replaced with equivalents that use Configurate types.
    • The default ConfigurationOptions values for shouldCopyDefaults has been set to true.
    • The deprecated node walker has been removed.

    Object Mapper

    The object mapper has changed quite a bit, so most users will need to change their use in some way.

    • Refactored TypeSerializerCollection to be immutable. A new child collection must be created to add custom type serializers.
    • Redesigned the object mapper to be more extensible. Rather than subclassing the object mapper as some people did before, there are now defined extension points where additional annotations and behaviours can be registered. See the methods in ObjectMapper.Factory.Builder for a more thorough overview.
    • Added support for Java 14+ records and, in combination with the configurate-extra-kotlin module, Kotlin data classes. The @Setting annotation is now optional. By default, all non-transient fields will be included in objects, and names will be converted to the kebab-case naming scheme. Both of these can be customized with a custom ObjectMapper.Factory
    • The shouldCopyDefaults option is now respected for mapped object fields.
    • The ObjectMapperFactory field has been removed from ConfigurationOptions. Instead, the object mapper can be registered like any other type serializer, using the TypeSerializerCollection.Builder#registerAnnotatedObjects method.

    Bugs fixed

    • Create the parent directory of files being written, to remove a common 'gotcha'.
    • Try to group together events in the watch service listener, to reduce duplicate reloads.
    • Fix merging values into a virtual node not correctly attaching the node (#181)
    Source code(tar.gz)
    Source code(zip)
    Configurate.v3-v4.IntelliJ.Migration.xml(1.60 KB)
    tool-4.0.0.tar(8.07 MB)
    tool-4.0.0.zip(7.21 MB)
  • 3.7.2(Nov 5, 2020)

    This is a bugfix release for the Configurate 3.7 series, coming with a few minor fixes:

    • Work around null values appearing when visiting configuration nodes
    • Be more defensive when potentially returning null lists

    Compiled jars are available from Maven Central

    Source code(tar.gz)
    Source code(zip)
  • 3.7.1(Aug 10, 2020)

    This is a bugfix release for 3.7, coming with a few minor tweaks:

    • Fix saving JSON-format configurations starting from a non-root node (#163)
    • Correctly handle removing a never-attached list element from its parent node
    • Follow symbolic links when saving using AtomicFiles (default for most configuration loaders).
    Source code(tar.gz)
    Source code(zip)
  • 3.7(May 26, 2020)

    After a long wait, v3.7 is finally here. The biggest feature in this release is the ConfigurationReference system and associated ability to automatically reload configurations, but it also contains a variety of bug fixes and deprecates some methods in preparation for 4.0. There is now also a collection of idiomatic Configurate examples included in the repository, under the configurate-examples folder that can be referenced for inspiration on how to effectively use the library.

    Additionally, up-to-data Javadocs are now published at https://configurate.aoeu.xyz! It's been a while since javadocs were last updated, so the new revision brings a lot of improvements.

    Thanks to @kashike for contributions to this release

    Deprecations

    • All set* methods in ConfigurationOptions have been deprecated, to be replaced with equivalent methods starting with with___.
    • Accessors in TypeSerializers have been moved to TypeSerializerCollection, and register____ methods have been renamed to register
    • Modifying the global TypeSerializerCollection is deprecated behaviour. Any configurations that need custom type serializers should create their own child of the default collection and add to that.
    • ConfigurationNode.getAppendedChild() should be replaced with ConfigurationNode.appendListNode()
    • hasListChildren() and hasMapChildren() should be replaced with isList() and isMap() to more effectively express that they reflect the type of the node, not whether it has contents.
    • As root node creation methods have been moved to the node interface, usage of the Simple* nod implementation classes is deprecated. They will be made package-private in 4.0.
    • ConfigurationNodeWalker has been deprecated, to be replaced with the new more structured ConfigurationVisitor API.
    • ValueType will be removed in 4.0. Its functionality is already covered by existing methods.

    Added

    • New configuration and value reference system for automatically reloading configurations

    • New module configurate-ext-kotlin with some basic utilities for using Configurate in Kotlin

    • New module configurate-tool is a CLI tool to inspect configurations loaded through Configurate loaders`

    • New module: configurate-bom can be imported to centralize Configurate version declaration across a project

    • loader: Automatically create parent directories when trying to write a configuration

    • objectmapping: New TypeSerializers for arrays, chars, Sets, and ConfigurationNodes

    • core: New method isEmpty() to determine if a node has contents, or exists but with an empty value.

    • core: New act method on nodes that takes a Consumer<ConfigurationNode> to perform an action on the node

    • core: New setCommentIfAbsent method on CommentedConfigurationNodes

    • core: Abstract TypeSerializer implementations added for Scalars and objects read from list nodes

    • loader: Added functional helper methods for changing options and options' TypeSerializerCollection when building a loader

    • core: New getNode(Iterable<?>) method will work the same as getNode(Object...), but allow looking up nodes without having to convert existing collections to arrays.

    • core: AttributedConfigurationNode now extends CommentedConfigurationNode

    • xml: Load and save comments

    • all: Configurate jars now include their license for easier compliance

    Fixed

    • objectmapping: Preserve comments on map keys when round-tripping data through the type serializer for Maps
    • gson: Correctly ignore null values in JSON files loaded from the Gson configuration loader
    • objectmapping: Resolve type parameters in fields. For example, in a class class MyConfig<T> { @Setting private List<T> items;, the list will be appropriately resolved as long as new object mapper factory methods that accept TypeTokens are used.
    • objectmapping: Correctly reject interface types from being passed to ObjectMappers rather than throwing an exception
    • objectmapping: Preserve configuration options when deserializing map keys
    • hocon: Read empty lists as empty lists, to match behaviour when reading maps.
    • loader: Don't read whole line to determine if file contains header. Resolves issues exceeding the mark limit on extremely long first lines, or files without line breaks (minified JSON, for example)
    • objectmapping: The TypeSerializer for subclasses of Number will now attempt to coerce values to types native to the destination configuration when serializing.
    • core: AttributedConfigurationNodes will now be attached as soon as attributes are set on them.
    • core: The root configuration node's path is the empty array, and getPath() has been corrected to return this.

    Releases are available on the Sponge maven repo, and all configurate components are contained within the configurate-tool distribution attached to this release.

    Source code(tar.gz)
    Source code(zip)
    configurate-tool-3.7.tar(11.29 MB)
    configurate-tool-3.7.zip(10.03 MB)
  • 3.6.1(May 31, 2019)

  • 3.5(Jun 26, 2018)

  • 3.4(Jun 25, 2018)

    • Fix this bug: Lists in config get set to null
    • Expose customized default render and parse options
    • Fix reading of multi-line HOCON comments
    • Select from available type serializers in the order they were added
    • change group to org.spongepowered
    • Implement XML configuration loader
    • Invalidate cached type matches when a new serializer is added
    • Add ConfigurationNode#copy
    • Only include the key + value in ConfigurationNode#toString
    • Fix CommentedConfigurationNode#equals never returning true
    • Implement NodeWalker utility for traversing configuration structures
    • Fix compatibility with older versions of guava

    Migration Note:

    As the gradle group has changed from ninja.leaping to org.spongepowered you will need to update your dependencies in your build scripts.

    E.g. For Gradle:

        compile 'ninja.leaping.configurate:configurate-hocon:3.3'
        compile 'ninja.leaping.configurate:configurate-gson:3.3'
        compile 'ninja.leaping.configurate:configurate-yaml:3.3'
    

    becomes

        compile 'org.spongepowered:configurate-hocon:3.4'
        compile 'org.spongepowered:configurate-gson:3.4'
        compile 'org.spongepowered:configurate-yaml:3.4'
        compile 'org.spongepowered:configurate-xml:3.4'
    

    No other changes should be necessary.

    Source code(tar.gz)
    Source code(zip)
  • 3.3(May 13, 2017)

    • Update Maven and various Maven plugins
    • Update snakeyaml to 1.18 from 1.16, jackson to 2.8.8 from 2.6.3, typesafe hocon config to 1.3.1 from 1.3.0, gson to 2.8.0 from 2.2.4, and optional guice dependency to 4.1 from 4.0 where used.
    • Move usage of removed Guava method, update Guava
    • Resolve some issues with atomic writes by using more fine-grained time when generating temp file names
    • Allow resolving enums that don't follow standard naming conventions. Lookup is case-insensitive and ignores underscores. If the enum has two fields that are equal except for case and underscores, an exact match will return the appropriate value, and any fuzzy matches will map to the first value in the enum that is applicable.

    Downloads are available from Maven Central

    Source code(tar.gz)
    Source code(zip)
  • 3.2(Oct 4, 2016)

    • Allow Gson module to save empty files
    • Resolve configuration variables for hocon
    • Fix various issues on Windows
    • Correct file permissions
    • Improve error message when unable to find an appropriate TypeSerializer or when using raw types
    • Allow stripping header from files entirely
    Source code(tar.gz)
    Source code(zip)
  • 3.1.1(Jan 13, 2016)

    Distributed on Maven Central as usual.

    • Correctly use UTF-8 when loading from a URL
    • Make setValue(TypeToken, T) be a default method in ConfigurationNode
    • Correct TypeSerializer handling of empty maps and lists
    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Jun 7, 2015)

    • core: Properly remove values removed from maps while reserializing data
    • gson: Downgrade gson dependency to 2.2.4 for expanded compatibility
    • hocon: Properly load empty maps and lists
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Apr 13, 2015)

  • 1.1(Apr 12, 2015)

    • core: Fix jdk6 compatibility
    • core: Add equals, hashCode, and toString to node objects
    • json: Bump jackson dependency to 2.5.2
    • json: Make pretty printing more flexible with new methods on Builder
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Mar 21, 2015)

    1.0.1

    • Handle objects with null fields being serialized
    • Handle concurrent removal of nodes while saving in HoconConfigurationLoader
    • Fix node path comparator to correctly handle paths with wildcards in a few cases

    1.0

    • Bug fixes
    • Add merging of config values
    • Add getKey, getParent, and getPath
    • Add merged and versioned transformers
    • Refactor ObjectMapper to be fancier and work better
    • Add gson-backed JSON configuration loader
    • Implement header loading
    • Add support for atomic writing
    • Allow choosing between serveal map implementations for nodes with map children
    • Polishing
    Source code(tar.gz)
    Source code(zip)
  • 0.1(Dec 30, 2014)

Owner
SpongePowered
Organization behind the Sponge Project
SpongePowered
Modern configuration library for distributed apps written in Java.

Overview cfg4j ("configuration for Java") is a configuration library for Java distributed apps (and more). Features: Open source Easy to use Auto-relo

cfg4j 544 Nov 23, 2022
A twelve-factor configuration (12factor.net/config) library for Java 8+

dotenv A twelve-factor configuration library for Java 8+. Features: seamless integration with Guice (prefer Spring? see here); zero dependencies; avai

Stanley Shyiko 42 Oct 1, 2022
configuration library for JVM languages using HOCON files

Configuration library for JVM languages. If you have questions or are working on a pull request or just curious, please feel welcome to join the chat

Lightbend 5.8k Jan 4, 2023
configuration library for JVM languages using HOCON files

Configuration library for JVM languages. If you have questions or are working on a pull request or just curious, please feel welcome to join the chat

Lightbend 5.8k Jan 4, 2023
Library for configuration management API

Archaius Features Archaius includes a set of configuration management APIs used by Netflix. It provides the following functionality: Dynamic, Typed Pr

Netflix, Inc. 2.4k Dec 22, 2022
Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2

Visit the official web site for more information. Central Dogma Central Dogma is an open-source, highly-available and version-controlled service confi

LINE 503 Dec 20, 2022
Nacos: Dynamic Naming and Configuration Service

An easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

Alibaba 25.1k Jan 3, 2023
Modern tool for microservice configuration management

Quick start We recommend to start with Microconfig Features guide and then continue reading this documentation. Microconfig overview and features Micr

Microconfig 262 Dec 19, 2022
Get rid of the boilerplate code in properties based configuration.

OWNER OWNER, an API to ease Java property files usage. INTRODUCTION The goal of OWNER API is to minimize the code required to handle application confi

lviggiano 874 Dec 31, 2022
Simple Ini Parser for Java or SIni4j is a simple INI parse made in Java

Simple Ini Parser for Java or SIni4j is a simple INI parse made in Java, built for provide a simple and easiest way to load INI files in Java

Synonware 2 Mar 18, 2022
Simple Java/POJO config library written with love and Lombok

Okaeri Configs Supported platforms (general use) General implementations based on standard format libraries directly. HJSON ?? hjson-java: Human JSON

Okaeri 51 Jan 7, 2023
Oyvey skid with decent ca and pastebin hwid lock lmao

McDonald-1.1.7-Cracked It wasn't obfuscated so it isn't really a "crack", just had to remove the HWID authentication from the main class. Uhm, the gui

null 6 Dec 2, 2022
prob isn't but uhhh there you go, it works on .cc and i am happy with that :)

TickShift (prob isn't but uhhh there you go, it works on .cc and i am happy with that :)) Credits Codex#4562: [rudimentary shit code] Doogie13: [expla

noat 9 Dec 2, 2022
Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configuration file formats.

Ethylene Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configura

Steank 7 Aug 9, 2022
JFXNodeMapper - a simple library that focuses on mapping data from common data represntation formats to JavaFx Nodes

JFXNodeMapper - a simple library that focuses on mapping data from common data represntation formats to JavaFx Nodes. Our main focus is to build a library that,

Aby Kuruvilla 7 Oct 15, 2021
Inria 1.4k Dec 29, 2022
Apache POI - A Java library for reading and writing Microsoft Office binary and OOXML file formats.

Apache POI A Java library for reading and writing Microsoft Office binary and OOXML file formats. The Apache POI Project's mission is to create and ma

The Apache Software Foundation 1.5k Jan 1, 2023
JGraphX - Library for visualizing (mainly Swing) and interacting with node-edge graphs.

JGraphX This project is end of life. We don't properly support Maven or publish to Maven Central. If that's an issue, use https://github.com/vlsi/jgra

JGraph 634 Jan 5, 2023
Koios Java Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators

Koios Java Client What is Koios? Koios Java Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators

Dudi Edri 13 Dec 4, 2022
KickAss Configuration. An annotation-based configuration system for Java and Kotlin

KAConf 2016-2020 Mario Macías KickAss Configuration v0.9.0 is an Annotation-based configuration system inspired in the wonderful Spring Boot. Its stro

Mario Macías 53 Nov 21, 2022