All notable changes to this project will be documented in this file, which follows a format inspired by Keep a Changelog.
This project adheres to Semantic Versioning.
Gem enhancements:
- Changed internal
require
s torequire_relative
to make code less dependent on the load path [#350]
No breaking changes!
Project enhancements:
- Updated
webrick
inGemfile.lock
to resolve CVE-2024-47220. This vulnerability does not impactmemo_wise
users.
Gem enhancements:
- Reduced gem size from 173 kB compressed (312 kB unpacked) to 18.5 kB (68 kB unpacked) [#345]
No breaking changes!
Project enhancements:
- Updated official test coverage to support Ruby 3.3 [#335]
- Added
alt_memery
andmemoist3
to benchmarks [#339] - Updated benchmark results in
README.md
to Ruby 3.3.5 [#339]
Gem enhancements:
- Fixed a bug that overwrote existing self.extended method definitions. [#324]
- Fixed a bug that overwrote existing self.inherited method definitions. [#325]
Breaking changes:
- Removed Ruby 2.4 (EOL) support to allow upgrading rexml dependency version from a version that includes a CVE [#336]
Project enhancements:
- Fixed
bundle exec yard server --reload
and related documentation [#333] - Fixed Codecov rate limiting errors affecting pull requests by upgrading
codecov/codecov-action
and using a Codecov token [#317]
v1.8.0 - 2023-10-25
Gem enhancements:
- In Ruby3.2+, for singleton classes, use
#attached_object
instead ofObjectSpace
[#318]
No breaking changes!
Project enhancements:
- Switched RuboCop configuration from
panolint
topanolint-ruby
[#312] - Updated benchmark results in
README.md
to Ruby 3.2.2 and 2.7.8 [#313] - Updated
Dry::Core
gem version to 1.0.0 in benchmarks [#297] - Updated
Memery
gem version to 1.5.0 in benchmarks [#313] - Updated
Memoized
gem version to 1.1.1 in benchmarks [#288] - Reorganized
CHANGELOG.md
for improved clarity and completeness [#282]
v1.7.0 - 2022-04-04
Gem enhancements:
- Optimized memoized lookups for methods with multiple required arguments [#276]
No breaking changes!
Project enhancements:
- Added benchmarking against GitHub
main
branch to CI [#274]
v1.6.0 - 2022-01-24
Gem enhancements:
- Fixed a bug relating to inheritance of classes which include a module which
prepend
sMemoWise
[#262]
No breaking changes!
Project enhancements:
- Updated official test coverage to support Ruby 3.1 [#263]
v1.5.0 - 2021-12-17
Gem enhancements:
- Removed thread-unsafe optimization which optimized for returning "truthy" results [#255]
- Switched to a simpler internal data structure to fix several classes of bugs related to inheritance that the previous few versions were unable to sufficiently address [#250]
No breaking changes!
Project enhancements:
- Expanded thread-safety testing [#254]
v1.4.0 - 2021-12-10
Gem enhancements:
- Fixed several bugs related to classes inheriting memoized methods from multiple modules or a parent class [#241]
No breaking changes!
Project enhancements:
- Added TruffleRuby tests to CI [#237]
v1.3.0 - 2021-11-22
Gem enhancements:
- Fixed thread-safety issue in concurrent calls to a zero-arg method in an unmemoized state (which resulted in a
nil
value being incorrectly returned in one thread) [#230] - Fixed bugs related to child classes inheriting from parent classes that use
MemoWise
[#229]
No breaking changes!
Project enhancements:
- Added thread-safety test [#225]
v1.2.0 - 2021-11-10
Gem enhancements:
- Optimized memoized lookups for all methods by using an outer array instead of a hash [#211, #210, #219]
- Removed an internal optimization using
#hash
due to the potential of hash collisions [#219] - Changed internal local variable names to avoid name collisions with memoized method arguments [#221]
No breaking changes!
Project enhancements:
v1.1.0 - 2021-07-29
Gem enhancements:
- Fixed buggy behavior in module singleton classes and modules extended by other classes [#185]
- Optimized memoized lookups in many cases, using a variety of optimizations [#189]
No breaking changes!
Project enhancements:
- Added the
dry-core
gem to benchmarks [#187]
v1.0.0 - 2021-06-24
Gem enhancements:
- Class methods are now supported by
#preset_memo_wise
and#reset_memo_wise
[#134, #145] - Optimized memoized lookups in many cases [#143]
- Implemented
.instance_method
to proxy original method parameters [#163]
No breaking changes!
Project enhancements: none
v0.4.0 - 2021-04-30
Gem enhancements:
- Methods on objects that are serialized/deserialized with
Marshal
can now be memoized [#138] - Classes with keyword arguments in
#initialize
can now support memoization [#125]
No breaking changes!
Project enhancements:
- Added
A Note on Testing
section ofREADME.md
[#123]
v0.3.0 - 2021-02-11
Gem enhancements:
- Class methods can now be memoized [#83]
- Instance methods on objects created with
Class#allocate
can now be memoized [#99] - Fixed
#reset_memo_wise
for private methods [#111]
No breaking changes!
Project enhancements:
- Added the project logo [#81]
- Added
CHANGELOG.md
and version tags [#78] - Documented release procedure in
README.md
[#114] - Updated CI testing and benchmarks for Ruby 3.0 [#101]
v0.2.0 - 2020-10-28
Gem enhancements:
- Added
#preset_memo_wise
to preset memoization values [#30]
Breaking changes:
- Removed
#reset_all_memo_wise
(use#reset_memo_wise
instead) [#52]
Project enhancements:
v0.1.2 - 2020-10-01
Gem enhancements:
No breaking changes!
Project enhancements:
- Tests now assert that memoization works with the
Values
gem [#46] - Added
README.md
badges for tests, docs, and RubyGems [#47]
v0.1.1 - 2020-08-03
Gem enhancements:
#reset_memo_wise
can now reset memoization for specific method arguments [#20]
No breaking changes!
Project enhancements:
- Added benchmarks to compare
MemoWise
to other Ruby memoization gems [#13]
v0.1.0 - 2020-07-20
Gem enhancements:
- Added
#memo_wise
, which enables method memoization [#4] - Added
#reset_memo_wise
and#reset_all_memo_wise
, which reset memoization [#4]
No breaking changes!
Project enhancements: none
v0.0.1 - 2020-06-29
This version does not provide memoization functionality; it simply includes project scaffolding.