All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Break Versioning.
1.2.0 - 2025-12-28
- Support Ruby 4.0 in
Dry::Core::BasicObject#inspectand#pretty_print(by returning false from its default#respond_to_missing?). (@timriley in #87) - Set minimum Ruby version to 3.2. (@timriley)
1.1.0 - 2025-01-04
- Minimal Ruby version is 3.1 (@flash-gordon)
- Fixed clash with
dry-logger(see #80) (@flash-gordon)
1.0.1 - 2023-08-06
-
[equalizer] Add
Dry::Core.Equalizermethod to makeinclude Dry::Core.Equalizer(...)work as documented (via #79) (@timriley)Users of Equalizer should now only need to
require "dry/core"first.
- Minimal Ruby version is 3.0 (@flash-gordon)
1.0.0 - 2022-11-04
- Import dry-container as
Dry::Core::Container(via #77) (@solnic)
0.9.1 - 2022-10-18
- Correct missing constant for IDENTITY (issue #75 fixed via #76) (@poloka)
0.9.0 - 2022-10-15
- dry-core now uses zeitwerk for autoloading (@solnic)
0.8.1 - 2022-07-27
- [memoizable] plays better with inheritance. There were cases when cached values from base claesses were used, see #70 (@flash-gordon)
0.8.0 - 2022-07-15
Dry::Core::BasicObjectported from hanami-utils (@jodosha)
- [BREAKING] [descendants tracker] switch to using
Class#subclasseson Ruby 3.1+. This changes the order of returned subclasses (immediate subclasses now go first) (@flash-gordon)
0.7.1 - 2021-07-10
- [memoizable] memoizable correctly handles cases where a method
has unnamed params (e.g. happens when the new
...syntax is used) (@flash-gordon)
0.7.0 - 2021-07-08
- [memoizable] warnings when using keyword arguments (@flash-gordon)
- [deprecations] warnings show more relevant information about caller by default (@timriley)
- Minimal Ruby version is 2.6
- [memoizable] memoization of block-accepting methods is deprecated (@flash-gordon)
0.6.0 - 2021-06-03
- [memoizable] support for
BasicObject(@oleander) - [memoizable] support for methods that accept blocks (@oleander)
- [deprecations] allow printing frame info on warn when setting up Deprecation module (via #52) (@waiting-for-dev)
- [memoizable] works with MRI 2.7+ keyword arguments now (@oleander)
0.5.0 - 2020-12-12
- dry-equalizer has been imported into dry-core as
Dry::Core::Equalizerbut the interface remains the same, which isinclude Dry.Equalizer(...)- we'll be porting all other gems that depend on dry-equalizer to the latest dry-core with equalizer included gradually. Eventually dry-equalizer usage will be gone completely in rom-rb/dry-rb/hanami projects (@solnic)
0.4.10 - 2020-11-19
ClassAttributes.definesgets a new option for coercing values (tallica)
class Builder
extend Dry::Core::ClassAttributes
defines :nodes, coerce: -> value { Integer(value) }
end:coerce works with any callable as well as types from dry-types
defines :nodes, coerce: Dry::Types['coercible.integer']Constants::IDENTITYwhich is the identity function (flash-gordon)
0.4.9 - 2019-08-09
-
Undefined.coalescetakes a variable number of arguments and returns the first non-Undefinedvalue (flash-gordon)Undefined.coalesce(Undefined, Undefined, :foo) # => :foo
Undefined.{dup,clone}returnsUndefinedback,Undefinedis a singleton (flash-gordon)
0.4.8 - 2019-06-23
-
Undefined.mapfor mapping non-undefined values (flash-gordon)something = 1 Undefined.map(something) { |v| v + 1 } # => 2 something = Undefined Undefined.map(something) { |v| v + 1 } # => Undefined
0.4.7 - 2018-06-25
- Fix default logger for deprecations, it now uses
$stderrby default, as it should (flash-gordon)
0.4.6 - 2018-05-15
- Trigger constant autoloading in the class builder (radar)
0.4.5 - 2018-03-14
Dry::Core::Memoizable, which provides amemoizemacro for memoizing results of instance methods (timriley)
0.4.4 - 2018-02-10
deprecate_constantoverridesModule#deprecate_constantand issues a labeled message on accessing a deprecated constant (flash-gordon)Undefined.defaultwhich accepts two arguments and returns the first if it's notUndefined; otherwise, returns the second one or yields a block (flash-gordon)
0.4.3 - 2018-02-03
Dry::Core::DescendantsTrackerwhich is a maintained version of thedescendants_trackergem (flash-gordon)
0.4.2 - 2017-12-16
- Class attributes now support private setters/getters (flash-gordon)
0.4.1 - 2017-11-04
- Improved error message on invalid attribute value (GustavoCaso)
0.4.0 - 2017-11-02
-
Added the
:typeoption to class attributes, you can now restrict attribute values with a type. You can either use plain ruby types (Integer,String, etc) ordry-types(GustavoCaso)class Foo extend Dry::Core::ClassAttributes defines :ruby_attr, type: Integer defines :dry_attr, type: Dry::Types['strict.int'] end
0.3.4 - 2017-09-29
Deprecationsoutput is set to$stderrby default now (solnic)
0.3.3 - 2017-08-31
- The Deprecations module now shows the right caller line (flash-gordon)
0.3.2 - 2017-08-31
- Accept an existing logger object in
Dry::Core::Deprecations.set_logger!(flash-gordon)
0.3.1 - 2017-05-27
- Support for building classes within an existing namespace (flash-gordon)
0.3.0 - 2017-05-05
- Class attributes are initialized before running the
inheritedhook. It's slightly more convenient behavior and it's very unlikely anyone will be affected by this, but technically this is a breaking change (flash-gordon)
0.2.4 - 2017-01-26
- Do not require deprecated method to be defined (flash-gordon)
0.2.3 - 2016-12-30
- Fix warnings on using uninitialized class attributes (flash-gordon)
0.2.2 - 2016-12-30
ClassAttributeswhich providesdefinesmethod for defining get-or-set methods (flash-gordon)
0.2.1 - 2016-11-18
Constantsare now available in nested scopes (flash-gordon)
0.2.0 - 2016-11-01
Initial release