---
- version: 1.6.0
  summary:
  date: 2025-01-04
  fixed:
  - 'Fix NoMethodError when trying to get AST of a Builder''s result. (via #107) (@estum)'
  added:
  changed:
  - "Set 3.1 as minimum ruby version (@flash-gordon)"
- version: 1.5.0
  summary:
  date: 2022-11-24
  fixed:
  added:
  - "`uri_rfc3986?` predicate that uses a better regexp than `uri?` (see #94 for more
    details) (@hieuk09)"
  changed:
  - 'Made `Predicates.respond_to?` compatible with `Object#respond_to?` (via #105)
    (@solnic)'
  - 'Made `Predicates.eql?` compatible with `Object#eql?` (via #106) (@solnic)'
- version: 1.4.0
  summary:
  date: '2022-11-04'
  fixed:
  added:
  changed:
  - Updated to dry-core 1.0 (@flash-gordon + @solnic)
- version: 1.3.0
  summary:
  date: '2022-10-15'
  fixed:
  added:
  changed:
  - Use zeitwerk for auto-loading (@solnic + @flash-gordon)
- version: 1.2.0
  summary:
  date: '2021-04-26'
  fixed:
  added:
  - Add predicate and operation builder DSL (@oleander)
  changed:
- version: 1.1.1
  summary:
  date: '2021-04-14'
  fixed:
  - Fixed a crash under jruby caused by arg splatting in Binary operations (@flash-gordon)
- version: 1.1.0
  summary:
  date: '2020-12-26'
  fixed:
  - Nested `Check` operations no longer crash under MRI 3.0 (@oleander)
  added:
  changed:
  - Switched to equalizer from dry-core (@solnic)
- version: 1.0.8
  date: '2020-09-28'
  fixed:
  - Better Ruby 3 support with fixed specialization for rules of negative arity (@flash-gordon)
- version: 1.0.7
  summary:
  date: '2020-08-13'
  fixed:
  added:
  - A new `uri?` predicate that you can use to verify `URI` strings, ie `uri?("https",
    "https://dry-rb.org")` (@nerburish)
  - 'New predicates: `uuid_v1?`, `uuid_v2?`, `uuid_v3?` and `uuid_v5?` (via #75) (@jamesbrauman)'
- version: 1.0.6
  summary:
  date: '2020-02-10'
  fixed:
  - Made the regexp used by `uuid_v4?` more secure (@kml)
  added:
  changed:
- version: 1.0.5
  date: '2019-11-07'
  fixed:
  - Make `format?` tolerant to `nil` values. It already worked like that before, but
    starting Ruby 2.7 it would produce warnings. Now it won't. Don't rely on this
    behavior, it's only added to make tests pass in dry-schema. Use explicit type
    checks instead (@flash-gordon)
- version: 1.0.4
  date: '2019-11-06'
  fixed:
  - Fix keyword warnings (@flash-gordon)
- version: 1.0.3
  date: '2019-08-01'
  added:
  - "`bytesize?` predicate (@bmalinconico)"
  - "`min_bytesize?` predicate (@bmalinconico)"
  - "`max_bytesize? predicate (@bmalinconico)"
  changed:
  - Min ruby version was set to `>= 2.4.0` (@flash-gordon)
- version: 1.0.2
  date: '2019-06-14'
  summary: Re-pushed 1.0.1 after dry-schema 1.2.0 release.
- version: 1.0.1
  date: '2019-06-04'
  added:
  - "`uuid_v4?` predicate (radar)"
  - "`respond_to?` predicate (waiting-for-dev)"
  summary: This release was removed from rubygems because it broke dry-schema.
- version: 1.0.0
  date: '2019-04-23'
  changed:
  - Version bump to `1.0.0` (flash-gordon)
- version: 0.6.1
  date: '2019-04-18'
  fixed:
  - Fix a regression in dry-validation 0.x for argument-less predicates (flash-gordon)
- version: 0.6.0
  date: '2019-04-04'
  added:
  - 'Generating hints can be disabled by building `Operations::And` with `hints: false`
    option set (solnic)'
  changed:
  - "`Rule` construction has been optimized so that currying and application is multiple-times
    faster (flash-gordon)"
- version: 0.5.0
  date: '2019-01-29'
  added:
  - "`:nil?` predicate (`none?` is now an alias) (solnic)"
  fixed:
  - "`Operation::Key#ast` will now return a correct AST with non-Undefined inputs
    (solnic)"
- version: 0.4.2
  date: '2017-09-15'
  added:
  - New `:case?` predicate matches a value against the given object with `#===` (flash-gordon)
  - New `:is?` predicate checks objects identity (using `#equal?`) (flash-gordon)
  fixed:
  - A bug with using custom predicates within a standalone module in `dry-validation`
    (flash-gordon)
- version: 0.4.1
  date: '2017-01-23'
  changed:
  - Predicates simply reuse other predicate methods instead of referring to them via
    `#[]` (georgemillo)
  fixed:
  - Warnings on MRI 2.4.0 are gone (jtippett)
- version: 0.4.0
  date: '2016-09-21'
  summary: This is a partial rewrite focused on internal clean up and major performance
    improvements. This is also the beginning of the work to make this library first-class
    rather than "just" a rule backend for dry-validation and dry-types.
  added:
  - "`Rule#[]` which applies a rule and always returns `true` or `false` (solnic)"
  - "`Rule#bind` which returns a rule with its predicate bound to a given object (solnic)"
  - "`Rule#eval_args` which evaluates unbound-methods-args in the context of a given
    object (solnic)"
  - "`Logic.Rule` builder function (solnic)"
  - Nice `#inspect` on rules and operation objects (solnic)
  changed:
  - "[BRAEKING] New result API (solnic)"
  - "[BREAKING] `Predicate` is now `Rule::Predicate` (solnic)"
  - "[BREAKING] `Rule::Conjunction` is now `Operation::And` (solnic)"
  - "[BREAKING] `Rule::Disjunction` is now `Operation::Or` (solnic)"
  - "[BREAKING] `Rule::ExlusiveDisjunction` is now `Operation::Xor` (solnic)"
  - "[BREAKING] `Rule::Implication` is now `Operation::Implication` (solnic)"
  - "[BREAKING] `Rule::Set` is now `Operation::Set` (solnic)"
  - "[BREAKING] `Rule::Each` is now `Operation::Each` (solnic)"
  - "[BREAKING] `Rule.new` accepts a predicate function as its first arg now (solnic)"
  - "[BREAKING] `Rule#name` is now `Rule#id` (solnic)"
  - "`Rule#parameters` is public now (solnic)"
- version: 0.3.0
  date: '2016-07-01'
  added:
  - "`:type?` predicate imported from dry-types (solnic)"
  - "`Rule#curry` interface (solnic)"
  changed:
  - Predicates AST now includes information about args (names & possible values) (fran-worley
    + solnic)
  - Predicates raise errors when they are called with invalid arity (fran-worley +
    solnic)
  - Rules no longer evaluate input twice when building result objects (solnic)
- version: 0.2.3
  date: '2016-05-11'
  added:
  - "`not_eql?`, `includes?`, `excludes?` predicates (fran-worley)"
  changed:
  - Renamed `inclusion?` to `included_in?` and deprecated `inclusion?` (fran-worley)
  - Renamed `exclusion?` to `excluded_from?` and deprecated `exclusion?` (fran-worley)
- version: 0.2.2
  date: '2016-03-30'
  added:
  - "`number?`, `odd?`, `even?` predicates (fran-worley)"
- version: 0.2.1
  date: '2016-03-20'
  fixed:
  - Result AST for `Rule::Each` correctly maps elements with eql inputs (solnic)
- version: 0.2.0
  date: '2016-03-11'
  changed:
  - Entire AST has been redefined (solnic)
- version: 0.1.4
  date: '2016-01-27'
  added:
  - |-
    Support for hash-names in `Check` and `Result` which can properly resolve input
      from nested results (solnic)
- version: 0.1.3
  date: '2016-01-27'
  added:
  - Support for resolving input from `Rule::Result` (solnic)
  changed:
  - "`Check` and `Result` carry original input(s) (solnic)"
- version: 0.1.2
  date: '2016-01-19'
  fixed:
  - "`xor` returns wrapped results when used against another result-rule (solnic)"
- version: 0.1.1
  date: '2016-01-18'
  added:
  - "`Rule::Attr` which can be applied to a data object with attr readers (SunnyMagadan)"
  - "`Rule::Result` which can be applied to a result object (solnic)"
  - "`true?` and `false?` predicates (solnic)"
- version: 0.1.0
  date: '2016-01-11'
  summary: Code extracted from dry-validation 0.4.1
