functionable 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 796ada1265cd8ed46a44bd7a522cd7aa60a36261e8bb78ceda19ca6ab47b8ef6
4
- data.tar.gz: 27b5bc7bdc581400c8b909b2a53b89482cf4b9765bc05837926fc0741d1145b2
3
+ metadata.gz: f807ef0739fd55dd07042221c1fee8271968a28de4a83f14d5af541e8e088dc0
4
+ data.tar.gz: ee198b56a5c30240c0c7071f71a9b1ee7f618ce94427a5529c2287c51bbb7eff
5
5
  SHA512:
6
- metadata.gz: 4ada12c0cb99f3e31e81d0921b561746859e623d6352003ea983a2e6682b959d60237e435be820e51d420c1b7aac5a4dc14d03a2fa9825a595faee8848fa38f1
7
- data.tar.gz: 9fb39722045f0a4d88b69a64189f0edfaea46db66af9c7cbd30da19c461fa9cf6e22ad5454af174e1ee34011fb4e041fa8e971497f4509a7b9b10a5842794a4b
6
+ metadata.gz: fc6523c4b776ce2daf87bf7bc129f8d56a997ff00659431c2212c0482c70150296dc78cf0a411d02a85e2a21f350b6635d37c2aad57b773d547ae066439af75c
7
+ data.tar.gz: 7f065288a8a025be12970af53f6c73ed11e47212f8a34a24a831f7da008cc2906bd2a8ca7ec0daad02d79f4c775b07e6a24f1a651480d8cd1263d01e42af1d1d
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -408,40 +408,40 @@ end
408
408
  When you run the above benchmark, you should see the following results:
409
409
 
410
410
  ----
411
- ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +YJIT +PRISM [arm64-darwin24.6.0]
411
+ ruby 4.0.1 (2026-01-13 revision e04267a14b) +YJIT +PRISM [arm64-darwin25.2.0]
412
412
  Warming up --------------------------------------
413
- Proc 2.268M i/100ms
414
- Lambda 2.327M i/100ms
415
- Module (function) 3.984M i/100ms
413
+ Proc 2.275M i/100ms
414
+ Lambda 2.212M i/100ms
415
+ Module (function) 4.654M i/100ms
416
416
  Module (functionable)
417
- 4.143M i/100ms
418
- Module (self) 4.177M i/100ms
419
- Class (new) 1.266M i/100ms
420
- Class (memoized) 4.128M i/100ms
421
- Method (new) 775.573k i/100ms
422
- Method (memoized) 2.053M i/100ms
417
+ 4.682M i/100ms
418
+ Module (self) 4.567M i/100ms
419
+ Class (new) 2.359M i/100ms
420
+ Class (memoized) 4.536M i/100ms
421
+ Method (new) 1.176M i/100ms
422
+ Method (memoized) 2.173M i/100ms
423
423
  Calculating -------------------------------------
424
- Proc 24.944M (± 1.5%) i/s (40.09 ns/i) - 124.748M in 5.002287s
425
- Lambda 25.683M (± 0.6%) i/s (38.94 ns/i) - 130.294M in 5.073248s
426
- Module (function) 58.738M2.9%) i/s (17.02 ns/i) - 294.792M in 5.022900s
424
+ Proc 23.976M0.1%) i/s (41.71 ns/i) - 120.575M in 5.029071s
425
+ Lambda 24.414M (± 0.2%) i/s (40.96 ns/i) - 123.885M in 5.074316s
426
+ Module (function) 61.028M0.7%) i/s (16.39 ns/i) - 307.154M in 5.033292s
427
427
  Module (functionable)
428
- 58.607M2.5%) i/s (17.06 ns/i) - 294.182M in 5.022770s
429
- Module (self) 57.811M2.4%) i/s (17.30 ns/i) - 292.388M in 5.060572s
430
- Class (new) 14.801M1.3%) i/s (67.56 ns/i) - 74.684M in 5.046650s
431
- Class (memoized) 59.130M (± 0.4%) i/s (16.91 ns/i) - 297.230M in 5.026825s
432
- Method (new) 9.030M1.4%) i/s (110.74 ns/i) - 45.759M in 5.068493s
433
- Method (memoized) 24.870M (± 0.2%) i/s (40.21 ns/i) - 125.231M in 5.035364s
428
+ 60.864M0.5%) i/s (16.43 ns/i) - 304.327M in 5.000243s
429
+ Module (self) 60.261M0.6%) i/s (16.59 ns/i) - 301.446M in 5.002511s
430
+ Class (new) 28.202M8.2%) i/s (35.46 ns/i) - 141.526M in 5.048420s
431
+ Class (memoized) 57.157M1.0%) i/s (17.50 ns/i) - 285.794M in 5.000639s
432
+ Method (new) 13.265M9.7%) i/s (75.39 ns/i) - 65.847M in 5.012654s
433
+ Method (memoized) 24.390M (± 0.2%) i/s (41.00 ns/i) - 123.861M in 5.078408s
434
434
 
435
435
  Comparison:
436
- Class (memoized): 59129953.7 i/s
437
- Module (function): 58738432.2 i/s - same-ish: difference falls within error
438
- Module (functionable): 58607417.9 i/s - same-ish: difference falls within error
439
- Module (self): 57810666.8 i/s - same-ish: difference falls within error
440
- Lambda: 25683494.8 i/s - 2.30x slower
441
- Proc: 24943941.2 i/s - 2.37x slower
442
- Method (memoized): 24870425.2 i/s - 2.38x slower
443
- Class (new): 14801271.5 i/s - 3.99x slower
444
- Method (new): 9029806.7 i/s - 6.55x slower
436
+ Module (function): 61027866.3 i/s
437
+ Module (functionable): 60864191.4 i/s - same-ish: difference falls within error
438
+ Module (self): 60261194.0 i/s - same-ish: difference falls within error
439
+ Class (memoized): 57156588.3 i/s - 1.07x slower
440
+ Class (new): 28201872.3 i/s - 2.16x slower
441
+ Lambda: 24414262.5 i/s - 2.50x slower
442
+ Method (memoized): 24389728.5 i/s - 2.50x slower
443
+ Proc: 23975703.7 i/s - 2.55x slower
444
+ Method (new): 13264797.8 i/s - 4.60x slower
445
445
  ----
446
446
 
447
447
  As you can see, a functional module is one of the fastest while everything else is much slower.
data/functionable.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "functionable"
5
- spec.version = "1.1.0"
5
+ spec.version = "1.2.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/functionable"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: functionable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -9,9 +9,9 @@ bindir: bin
9
9
  cert_chain:
10
10
  - |
11
11
  -----BEGIN CERTIFICATE-----
12
- MIIENjCCAp6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZicm9v
12
+ MIIENjCCAp6gAwIBAgIBAzANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZicm9v
13
13
  a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
14
- aW8wHhcNMjUwMzIyMTQ1NDE3WhcNMjYwMzIyMTQ1NDE3WjBBMQ8wDQYDVQQDDAZi
14
+ aW8wHhcNMjYwMzI1MTI0OTEyWhcNMjcwMzI1MTI0OTEyWjBBMQ8wDQYDVQQDDAZi
15
15
  cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
16
16
  GRYCaW8wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCro8tj5/E1Hg88
17
17
  f4qfiwPVd2zJQHvdYt4GHVvuHRRgx4HGhJuNp+4BId08RBn7V6V1MW6MY3kezRBs
@@ -23,15 +23,15 @@ cert_chain:
23
23
  GUHU9MyIXbFOsnp3K3ADrAVjPWop8EZkmUR3MV/CUm00w2cZHCSGiXl1KMpiVKvk
24
24
  Ywr1gd2ZME4QLSo+EXUtLxDUa/W3xnBS8dBOuMMz02FPWYr3PN8CAwEAAaM5MDcw
25
25
  CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAFgmv0tYMZnItuPycSM
26
- F5wykJEVMA0GCSqGSIb3DQEBCwUAA4IBgQBlzRfyAYx/fCFjizS0Npxw4+4T3aYL
27
- hbXoDqQRWjxuhFZcXUymhz3r8/Ltyri9lSof8grzB+8/+mrMVms7Gwt5qolk6zdn
28
- FkySGy/jmpN12ldOHFbBEnyVBZNBvOBVb8zkkw8PhiHdBdXOUm4Jy39yJvBLfjcC
29
- iM1aeWPmgPy1GbvZU+leRGZLt6dRIR9oCDXcWLRjha8xLMoz6Yn9fJBYexBA3iEz
30
- h5S7pn4AX/JhVRiSyl8pAy4jEKydpyQrliH3gHkpNmUS/XDczP+9xX1bAB4BvqL2
31
- NCxMcQ+hiJNqCKpPgHxaOOHZfIxV33logIuPEQ8NryHAwZ9ZWnwtYDE8kQGGKskI
32
- Kkm6QT474hZl7MpwiJjWgW313CR7jUEekQahX1QxCxHPI7LSrKpno0plH3uWIOQp
33
- KUlkb9uyACBgyRO52ZHiDVI8YvtU5O/j9pSes9/3XgvBeC1onx4qWp+uRX7eVsYS
34
- GiijocTc3enZVrXERetaXj8/9XWs3fB3HWY=
26
+ F5wykJEVMA0GCSqGSIb3DQEBCwUAA4IBgQAG+ykjp+DIXSybGEtX+/ve974mYfN6
27
+ 8U7qcVfRM+qDSOZ+97iu30qUTbVAKIHlHCDKRn3SgOffDUB5VU2MsJBh/3TPKWBZ
28
+ anB/uzMcwOfru+qyA3b7ZFqZzRLWmR5FtPObFxc0gYMT3YvLNHk2Nb9Vjq/PoiGG
29
+ e75PXweDOokwDA5m1gMOz1rdp/dlGMXkSFQg94PPVyUKXgO4VzWTgePSDxOIL+v6
30
+ +OWV6AaEH9BaqxnmdA5ubi0L7bhl0gbN92FxpNO3kpTjww8kme856a+wCK3qyM5w
31
+ 7ZLbUexynDN0Au8eSpT2Bf6ztGmB1S9ffzDJsGX1/lkpMIB51e48Xe2+gzzOgemk
32
+ CdZaGupj6WkarnT8kh/cPtyA5ax4rGX6GOS8meGxzkv8Uy0JSEOYAp6wLfIisYZp
33
+ IJBIXIOkwKKJ0eB5YHrUSJxzpP4LlcIg/eTftaXmJdYjy+2VRrCZYDjfguyLmMjR
34
+ KR9w4/Fjvqy87kCHmxMWa6IL2Vzt1Clm2cA=
35
35
  -----END CERTIFICATE-----
36
36
  date: 1980-01-02 00:00:00.000000000 Z
37
37
  dependencies: []
@@ -72,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  requirements: []
75
- rubygems_version: 4.0.4
75
+ rubygems_version: 4.0.10
76
76
  specification_version: 4
77
77
  summary: Enhances modules to be functional by default.
78
78
  test_files: []
metadata.gz.sig CHANGED
Binary file