Tags

Tags give the ability to mark specific points in history as being important
  • 3.2.0

    protected Release: 3.2.0 • 32-bit enum sets and weak map improvements
    32-bit enum sets and weak map improvements
    
    ### EnumSet
    
    - Added `BitSet32.of()` which accepts an iterable (!205)
    - Added `.toSet()` and `.toMutableSet()` (!205)
    - Added `enumSetOf()` and `.toEnumSet()` (#170, !206)
    - Optimized `enumSetOf(Foo.entries)` (!206)
    - Optimized 32-bit `EnumSet` (#170, !206)
    
    ### Weak
    
    - Added `WeakRef.isEmpty()` and `WeakRef.isNotEmpty()` (!207)
    - Added `WeakValueHashMap` (#178, !225)
    - Added `toString()`, `equals()` and `hashCode()` on `FakeWeakRef` (!225)
    - Documented the thread safety of `WeakRef` and `WeakMap` (#180, !225)
    - Added a wrapper for the JVM `WeakHashMap` (#179, !226)
    - Added a wrapper for the JS `WeakMap` (#179, !226)
    
    ### Dependencies
    
    - Kotlin 2.2.21
    
  • 3.1.1

    protected Release: 3.1.1 • Fixed documentation website deployment
    Fixed documentation website deployment
    
    ### Documentation
    
    - Fixed deployment to the new documentation website (!202)
    
  • 3.1.0

    protected Release: 3.1.0 • WasmJS weak references and the new documentation website
    WasmJS weak references and the new documentation website
    
    ### Weak
    
    - Added support for `wasmJs()` (#155, !200)
    
    ### Documentation
    
    - Moved the documentation website to https://pedestal.opensavvy.dev (!199)
    
    ### Dependencies
    
    - Kotlin 2.2.0
    - KotlinJS 2025.7.6
    
  • 3.0.0

    protected Release: 3.0.0
    Support for more platforms
    
    ### Breaking changes
    
    - Removed Spine (was deprecated, moved to other coordinates, !163)
    - Stripped down Logger (was deprecated, !179)
    - Removed State Arrow (all functionality has been moved into State, !163)
    - Removed deprecated methods (!163)
    
    ### Weak
    
    Weak is a new module containing weak references and related algorithms.
    
    ### EnumSet
    
    EnumSet is a new experimental module with memory-efficient bitfields and enum sets.
    
  • 3.0.0-rc.1

    protected Release: 3.0.0-rc.1 • Stable weak references, stripped-down logger
    Stable weak references, stripped down logger
    
    ### Progress
    
    - Support for more Kotlin platforms (469dcb51, !179)
    
    ### State
    
    - Support for more Kotlin platforms (20046cb0, !179)
    
    ### Cache
    
    - Support for more Kotlin platforms (5b0ee6ff, !179)
    
    ### Backbone
    
    - Support for more Kotlin platforms (0fde1531, !179)
    
    ### Weak
    
    - Stabilized `WeakRef()` and `SoftRef()` (1820e495, !185)
    - Removed `EmptyWeakRef()` (7fc0774c, !185)
    
    ### Logger
    
    The `logger` library has been stripped down to a minimal println-based implementation (08ac9d92, !179).
    It was deprecated for a while and was blocking us from supporting more platforms.
    
    In the future, [Sentier](https://gitlab.com/opensavvy/groundwork/sentier) will take its place.
    
    ### Dependencies
    
    - KotlinJS 2025.5.8
    - KotlinX.Datetime 0.6.2
    - KotlinX.Coroutines 1.10.2
    - Lincheck 2.39
    - Arrow 2.1.2
    - Slf4J 2.0.17
    
  • 3.0.0-alpha.2

    protected Release: 3.0.0-alpha.2 • BitSet32, documentation improvement and more Kotlin Native platforms
    BitSet32, documentation improvement and more Kotlin Native platforms
    
    ### EnumSet
    
    `:enumset` is a new module which will implement performant Set implementations for small integer sets and for enums.
    It is not yet complete as of this release.
    
    - Implement `BitSet32` (#168, !174)
    - Implement `MutableBitSet32` (#169, !176)
    
    ### Weak
    
    - Support more Kotlin Native platforms (#163, ad11a243, !177)
    
    ### Documentation
    
    - Mention the Weak module in the main README (!170)
    - Fix links in the main README (#160, !170)
    - Add copyright headers in all files (!173)
    
    ### Dependencies
    
    - Kotlin 2.1.10 (143f6dd3)
    - KotlinX.Coroutines 1.10.1 (9e53816c)
    - KotlinJS Wrappers 2025.1.4 (5e855377)
    - Prepared 2.0.0-alpha.2 (ae0a1c8d)
    - Slf4J 2.0.16 (81c6f352)
    
  • 3.0.0-alpha.1

    protected Release: 3.0.0-alpha.1 • Removal of deprecated code and testing improvements
    Removal of deprecated code and testing improvements
    
    ### Breaking changes
    
    - Removed the deprecated Spine modules (#158, 17c3ec57, !163)
    - Removed the unused tester module (!163)
    - Removed the unused state-arrow module (!163)
    - Removed deprecated cache and state methods (!163)
    
    ### Testing
    
    - Better cache tests using Lincheck (#80, !133)
    - Rewrite all tests to use Prepared instead of kotlin-test (#136, #137, !120, !139, !163)
    
    ### Documentation
    
    - Link to versioned documentation in module headers (!160)
    
    ### Dependencies
    
    - Kotlin 2.0.20
    - KotlinX.Datetime 0.6.1
    - KotlinX.Coroutines 1.9.0
    
  • 2.3.0

    protected Release: 2.3.0 • Experimental Progressive holder and the new Weak module
    Experimental Progressive holder and the new Weak module
    
    ### Progress
    
    - Experimental Progressive holder class (#144, !136)
    - Experimental helpers to capture progress into a Flow (!136)
    - Increased test coverage (!142)
    
    ### State
    
    - Experimental conversions from Progressive, Outcome and ProgressiveOutcome (!136)
    - Increased test coverage (!142)
    
    ### Weak
    
    Pedestal Weak is a new module to use weak reference and associated data structures from common Kotlin code!
    
    - Experimental WeakRef and SoftRef (#152, !147)
    - Experimental WeakMap (#153, !147)
    - Experimental pure Kotlin implementation of WeakKeyMap (!147)
    - Helpers to test weak data structures (!147)
    
    ### Dependencies
    
    - KotlinX.Datetime 0.6.0 (!143)
    - KotlinX.Coroutines 1.8.1 (!143)
    - KotlinX.Serialization 1.7.1 (!143)
    - Prepared 1.3.0 (!143)
    
  • 2.2.2

    protected Release: 2.2.2 • Bug fixes, Kotlin 2.0.0
    Bug fixes, Kotlin 2.0.0
    
    ### Build and deployment
    
    - Fixed JVM tests not running (ec557993, !129)
    - Enable code coverage for all modules (#142, !129)
    - Migrate Progress tests to Prepared (778387b1, !129)
    - Stop publishing the `tester` module (89f4d925, !119)
    
    ### Dependencies
    
    - Kotlin 2.0.0 (55a01666, !70)
    - Slf4J 2.0.13 (00733016, !132)
    - Arrow 1.2.4 (3884e8a6, !132)
    - Logback Classic 1.5.6 (983d8f98, !132)
    - KotlinX.Datetime 0.5.0 (03dbf236, !132)
    - KotlinX.Coroutines 1.8.0 (03dbf236, !132)
    
  • 2.2.1

    protected Release: 2.2.1 • Improved testing, Kotlin 2.0.0-RC1
    Improved testing, Kotlin 2.0.0-RC1
    
    ### Testing
    
    - Fixed JVM tests not running (ec557993, !129)
    - Set a minimal code coverage for all active modules (#142, !129)
    
    ### Spine (deprecated)
    
    - Unify the string representation of floating-point numbers on all platforms (99f5d234)
    
    ### Dependencies
    
    - Kotlin 2.0.0-RC1 (66672126)
    
  • 2.2.0

    protected
    50c581c9 · merge: Progressive raise ·
    Release: 2.2.0 • Documentation improvements, Arrow built into State, experimental progressive DSL
    Documentation improvements, Arrow built into State, experimental progressive DSL
    
    ### Backbone
    
    - Documentation improvements and example modernization (#133, !118)
    
    ### State
    
    - Merge :state-arrow into :state (1ddf5e18, !123)
    - Documentation improvements for State (!123)
    - Experimental DSL for ProgressiveOutcome (!124)
    
    ### Documentation
    
    - Remove the link to Logger from the main README (7186f217, !122)
    - Fix links after move to OpenSavvy Groundwork (c4fcbd7a, !122)
    
  • 2.1.1

    protected Release: 2.1.1 • Experimental LocalStorage cache
    Experimental LocalStorage cache
    
    ### Cache
    
    - Created the experimental LocalStorage/SessionStorage cache implementation (#2, !114)
    
    ### Spine
    
    - Mention that Spine is being rewritten (24c862d6, 110)
    
    ### Build and deployment
    
    - Fixed incorrect documentation URL in MavenCentral metadata (#127, !101)
    
    ### Dependencies
    
    - Kotlin 1.9.22 (128dfe13)
    
  • 2.1.0

    protected Release: 2.1.0 • Helpers to combine incomplete results
    Helpers to combine completed results
    
    ### State
    
    - Helpers to accumulate incomplete results with the previous complete result (#125, !96)
    
    ### Documentation
    
    - Mark each module's stability (#119, !95)
    - Fixed a broken link in State Arrow (f1e814d9)
    - Document how each logger implementation works (154377bd)
    
  • 2.0.0

    protected Release: 2.0.0 • Typesafe failures, independent progress and API surface cleanup
    Stable 2.0.0 release
    
    Here are the highlights of this range of updates. To learn more, see the pre-release changelogs:
    
    ### Progress
    
    Previously a part of Pedestal State, the progress management is now its own independent library (#58, !54).
    
    ### State
    
    - State was previously based on Arrow. We have decided to make State independent of Arrow. We have completely rewritten the failure management (#59, #70, !58).
    - Introduced a compatibility module for use with Arrow.
    - Introduced a compatibility module for use with Coroutines.
    
    ### Cache
    
    - Reworked the module so implementations are private, and only instantiation methods are public. This will make it much easier to make changes to implementations in the future (#86, !81).
    - Introduced contextual cache algorithms, which understand authentication or paging (#85, !66).
    - Introduced blocking algorithms for Java interoperability (#109, !83).
    
    ### Backbone
    
    - Reworked the Backbone pattern to entirely hide the Cache as an implementation detail, making future changes much easier (#73, !59).
    
    ### Build and deployment
    
    - The project is now published as 'dev.opensavvy.pedestal:<module>:<version>' instead of 'opensavvy:<module>:<version>' (#69, !68)
    - Major documentation improvements.
    - Support for LinuxX64 (#115, !86)
    - The project is now published on MavenCentral!
    - The project is now based on the OpenSavvy Playground (#114, !87)
    
  • 2.0.0-rc.12

    protected
    Fix MavenCentral publishing
    
  • 2.0.0-rc.11

    protected
    Fix MavenCentral publication
    
  • 2.0.0-alpha.1

    protected
    Fix MavenCentral publication
    
  • 2.0.0-rc.10

    protected
    4fdb35df · merge: Fix the lock bug ·
    Release: 2.0.0-rc.10 • Last release candidate before 2.0.0
    Log bug and better documentation
    
    ### Documentation
    
    - Avoid single-letter type parameters (#112, !88)
    - Mention the LinuxX64 support in the README (#118, !90)
    
    ### Build and deployment
    
    - The project is now based on the OpenSavvy Playground, which should make build configuration easier (#114, !87)
    - Fixed the CI not running on the GitLab Shared Runners for MacOS (!82, !92)
    
    ### Cache
    
    - Fixed the lock bug on Kotlin/JS (#101, !91)
    
    ### Dependencies
    
    - Kotlin 1.9.0
    - Arrow 1.2.0
    - Dokka 1.9.0
    - Logback 1.4.8
    - Slf4j 2.0.7
    - Ktor 2.3.2
    - KotlinX.Coroutines 1.7.2
    - KotlinX.Serialization 1.5.1
    
    ### Contributions
    
    Thanks @darbyfrey (from the GitLab team) for helping us figure out how to use the MacOS Shared Runners.
    
  • 2.0.0-rc.9

    protected Release: 2.0.0-rc.9 • LinuxX64 support
    LinuxX64 support
    
    ### Build and deployment
    
    - Support for the LinuxX64 platform (#115, !86)
    
    ### Cache
    
    - Explicitly specify which clock to use when using ExpirationCache (#111, !85)
    
  • 2.0.0-rc.8

    protected Release: 2.0.0-rc.8 • Fix MavenCentral publication
    Fix MavenCentral publication