dry-core/changelog.yml

202 lines
6.4 KiB
YAML

---
- version: 1.0.0
summary:
date: 2022-11-04
fixed:
added:
- 'Import dry-container as `Dry::Core::Container` (via #77) (@solnic)'
changed:
- version: 0.9.1
date: 2022-10-18
changed:
- 'Correct missing constant for IDENTITY (issue #75 fixed via #76) (@poloka)'
- version: 0.9.0
date: 2022-10-15
changed:
- dry-core now uses zeitwerk for autoloading (@solnic)
- version: 0.8.1
date: 2022-07-27
fixed:
- |
[memoizable] plays better with inheritance.
There were cases when cached values from base claesses were used, see #70 (@flash-gordon)
- version: 0.8.0
date: 2022-07-15
added:
- "`Dry::Core::BasicObject` ported from hanami-utils (@jodosha)"
changed:
- |
[BREAKING] [descendants tracker] switch to using `Class#subclasses` on Ruby 3.1+.
This changes the order of returned subclasses (immediate subclasses now go first) (@flash-gordon)
- version: 0.7.1
date: 2021-07-10
fixed:
- |
[memoizable] memoizable correctly handles cases where a method
has unnamed params (e.g. happens when the new `...` syntax is used) (@flash-gordon)
- version: 0.7.0
date: 2021-07-08
fixed:
- "[memoizable] warnings when using keyword arguments (@flash-gordon)"
- "[deprecations] warnings show more relevant information about caller by default
(@timriley)"
changed:
- Minimal Ruby version is 2.6
- "[memoizable] memoization of block-accepting methods is deprecated (@flash-gordon)"
- version: 0.6.0
summary:
date: 2021-06-03
fixed:
- "[memoizable] works with MRI 2.7+ keyword arguments now (@oleander)"
added:
- "[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)"
changed:
- version: 0.5.0
summary:
date: '2020-12-12'
fixed:
added:
- dry-equalizer has been imported into dry-core as `Dry::Core::Equalizer` but the
interface remains the same, which is `include 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)
changed:
- version: 0.4.10
date: '2020-11-19'
added:
- |-
`ClassAttributes.defines` gets a new option for coercing values (tallica)
```ruby
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
```ruby
defines :nodes, coerce: Dry::Types['coercible.integer']
```
- "`Constants::IDENTITY` which is the identity function (flash-gordon)"
- version: 0.4.9
date: '2019-08-09'
added:
- |-
`Undefined.coalesce` takes a variable number of arguments and returns the first non-`Undefined` value (flash-gordon)
```ruby
Undefined.coalesce(Undefined, Undefined, :foo) # => :foo
```
fixed:
- "`Undefined.{dup,clone}` returns `Undefined` back, `Undefined` is a singleton
(flash-gordon)"
- version: 0.4.8
date: '2019-06-23'
added:
- |-
`Undefined.map` for mapping non-undefined values (flash-gordon)
```ruby
something = 1
Undefined.map(something) { |v| v + 1 } # => 2
something = Undefined
Undefined.map(something) { |v| v + 1 } # => Undefined
```
- version: 0.4.7
date: '2018-06-25'
fixed:
- Fix default logger for deprecations, it now uses `$stderr` by default, as it should
(flash-gordon)
- version: 0.4.6
date: '2018-05-15'
changed:
- Trigger constant autoloading in the class builder (radar)
- version: 0.4.5
date: '2018-03-14'
added:
- "`Dry::Core::Memoizable`, which provides a `memoize` macro for memoizing results
of instance methods (timriley)"
- version: 0.4.4
date: '2018-02-10'
added:
- "`deprecate_constant` overrides `Module#deprecate_constant` and issues a labeled
message on accessing a deprecated constant (flash-gordon)"
- "`Undefined.default` which accepts two arguments and returns the first if it's
not `Undefined`; otherwise, returns the second one or yields a block (flash-gordon)"
- version: 0.4.3
date: '2018-02-03'
added:
- "`Dry::Core::DescendantsTracker` which is a maintained version of the [`descendants_tracker`](https://github.com/dkubb/descendants_tracker)
gem (flash-gordon)"
- version: 0.4.2
date: '2017-12-16'
fixed:
- Class attributes now support private setters/getters (flash-gordon)
- version: 0.4.1
date: '2017-11-04'
changed:
- Improved error message on invalid attribute value (GustavoCaso)
- version: 0.4.0
date: '2017-11-02'
added:
- |-
Added the `:type` option to class attributes, you can now restrict attribute values with a type. You can either use plain ruby types (`Integer`, `String`, etc) or `dry-types` (GustavoCaso)
```ruby
class Foo
extend Dry::Core::ClassAttributes
defines :ruby_attr, type: Integer
defines :dry_attr, type: Dry::Types['strict.int']
end
```
- version: 0.3.4
date: '2017-09-29'
fixed:
- "`Deprecations` output is set to `$stderr` by default now (solnic)"
- version: 0.3.3
date: '2017-08-31'
fixed:
- The Deprecations module now shows the right caller line (flash-gordon)
- version: 0.3.2
date: '2017-08-31'
added:
- Accept an existing logger object in `Dry::Core::Deprecations.set_logger!` (flash-gordon)
- version: 0.3.1
date: '2017-05-27'
added:
- Support for building classes within an existing namespace (flash-gordon)
- version: 0.3.0
date: '2017-05-05'
changed:
- Class attributes are initialized _before_ running the `inherited` hook. 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)
- version: 0.2.4
date: '2017-01-26'
fixed:
- Do not require deprecated method to be defined (flash-gordon)
- version: 0.2.3
date: '2016-12-30'
fixed:
- Fix warnings on using uninitialized class attributes (flash-gordon)
- version: 0.2.2
date: '2016-12-30'
added:
- "`ClassAttributes` which provides `defines` method for defining get-or-set methods
(flash-gordon)"
- version: 0.2.1
date: '2016-11-18'
added:
- "`Constants` are now available in nested scopes (flash-gordon)"
- version: 0.2.0
date: '2016-11-01'
- version: 0.1.0
date: '2016-09-17'
summary: Initial release