Changelog
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.
Unreleased
Gem enhancements: none
No breaking changes!
Project enhancements: none
v1.13.0
Gem enhancements:
- Prevented overwriting of
includedin modules prependingMemoWise[#387])
No breaking changes!
Project enhancements: none
v1.12.0
Gem enhancements: none
- Allowed memoization when
included modulesprepend MemoWiseand defineinitialize[#327]
Breaking changes:
- Removed Ruby 2.7 (EOL) and 3.0 (EOL) support to allow enhancement noted above [#327]
Project enhancements:
- Updated official test coverage to support Ruby 3.4 [#335]
- Updated
memerygem version to 1.7.0 in benchmarks [#380] - Added
short_circu_itgem to benchmarks [#384] - Increased benchmark warmup time to reduce warmup artifacts when benchmarking locally [#355]
v1.11.0
Gem enhancements:
- Stopped
preset_memo_wise(andreset_memo_wisewith an argument) from raising errors when called on module methods [#377] - Changed internal
requires torequire_relativeto make code less dependent on the load path [#350]
Breaking changes:
- Removed Ruby 2.5 (EOL) and 2.6 (EOL) support to allow upgrading rexml dependency version from a version that includes a CVE [#362]
Project enhancements:
- Updated
webrickinGemfile.lockto resolve CVE-2024-47220. This vulnerability does not impactmemo_wiseusers. - Allowed more tests to run on JRuby [#377]
v1.10.0
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_memeryandmemoist3to benchmarks [#339] - Updated
memerygem version to 1.6.0 in benchmarks [#339] - Updated benchmark results in
README.mdto Ruby 3.3.5 [#339]
v1.9.0
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 --reloadand related documentation [#333] - Fixed Codecov rate limiting errors affecting pull requests by upgrading
codecov/codecov-actionand using a Codecov token [#317]
v1.8.0 - 2023-10-25
Gem enhancements:
- In Ruby3.2+, for singleton classes, use
#attached_objectinstead ofObjectSpace[#318]
No breaking changes!
Project enhancements:
- Switched RuboCop configuration from
panolinttopanolint-ruby[#312] - Updated benchmark results in
README.mdto Ruby 3.2.2 and 2.7.8 [#313] - Updated
dry-coregem version to 1.0.0 in benchmarks [#297] - Updated
memerygem version to 1.5.0 in benchmarks [#313] - Updated
memoizedgem version to 1.1.1 in benchmarks [#288] - Reorganized
CHANGELOG.mdfor 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
mainbranch to CI [#274]
v1.6.0 - 2022-01-24
Gem enhancements:
- Fixed a bug relating to inheritance of classes which include a module which
prependsMemoWise[#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
nilvalue 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
#hashdue 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-coregem to benchmarks [#187]
v1.0.0 - 2021-06-24
Gem enhancements:
- Class methods are now supported by
#preset_memo_wiseand#reset_memo_wise[#134, #145] - Optimized memoized lookups in many cases [#143]
- Implemented
.instance_methodto 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
Marshalcan now be memoized [#138] - Classes with keyword arguments in
#initializecan now support memoization [#125]
No breaking changes!
Project enhancements:
- Added
A Note on Testingsection 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#allocatecan now be memoized [#99] - Fixed
#reset_memo_wisefor private methods [#111]
No breaking changes!
Project enhancements:
- Added the project logo [#81]
- Added
CHANGELOG.mdand 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_wiseto preset memoization values [#30]
Breaking changes:
- Removed
#reset_all_memo_wise(use#reset_memo_wiseinstead) [#52]
Project enhancements:
v0.1.2 - 2020-10-01
Gem enhancements:
No breaking changes!
Project enhancements:
- Tests now assert that memoization works with the
valuesgem [#46] - Added
README.mdbadges for tests, docs, and RubyGems [#47]
v0.1.1 - 2020-08-03
Gem enhancements:
#reset_memo_wisecan now reset memoization for specific method arguments [#20]
No breaking changes!
Project enhancements:
- Added benchmarks to compare
MemoWiseto other Ruby memoization gems [#13]
v0.1.0 - 2020-07-20
Gem enhancements:
- Added
#memo_wise, which enables method memoization [#4] - Added
#reset_memo_wiseand#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.