memory 0.8.4 → 0.9.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: cbe94b9b53feb63ebeef3069e3632f08084467a2670714f9680c881a88a3f133
4
- data.tar.gz: 95c23b5b6cd0be124e9370b7631118bf24e5fbcc0b19091588d01ff723769d06
3
+ metadata.gz: 535ecdd0c6181d94b31384e4f71b4b4ce52d499d43daa647120fb22cf3dc244b
4
+ data.tar.gz: bfc66be86d65f7065ebc6a4193420ccbe50a98ad5e581ba6cf613484d1846012
5
5
  SHA512:
6
- metadata.gz: b94371ccdf66d56362320b83370c9b59d7db1d4b75d62c8506fa19392cf9da62b14eaecf8c981f518edf18c10bb65627c55687146c7fe9af0c4faa3a92f86982
7
- data.tar.gz: 764fc3157811e87be1a6d220425ee5c1c3135c9e47a3ce99066968d82948f8cbdf01dad47538cf22ac25a062c2d5c486bff024fa5ee862686779dade668dc046
6
+ metadata.gz: e2df82be2210853cdc3ede7d47d450d1a38bc14291ee4fdaa3bece83809ce78ffb73ae714d52da9843dbd43d2659e6a97b17005ecbf3abe1f81fe8a687b0cbc5
7
+ data.tar.gz: de6c8972b60a489e7f62834fe926674ed55103fae47a401ef81674b43a8a79b271a8b21051948c56b094a0372abb5493c78739265686b4c4591272ffd70b8f4b
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/memory/usage.rb CHANGED
@@ -39,12 +39,27 @@ module Memory
39
39
  return self
40
40
  end
41
41
 
42
+ IGNORE = [
43
+ # Skip modules and symbols, they are usually "global":
44
+ Module,
45
+ # Note that `reachable_objects_from` does not include symbols, numbers, or other value types, AFAICT.
46
+
47
+ Proc,
48
+ Method,
49
+ UnboundMethod,
50
+ Binding,
51
+ TracePoint,
52
+
53
+ # We don't want to traverse into shared state:
54
+ Ractor,
55
+ Thread,
56
+ Fiber
57
+ ]
58
+
42
59
  # Compute the usage of an object and all reachable objects from it.
43
60
  # @parameter root [Object] The root object to start traversal from.
44
61
  # @returns [Usage] The usage of the object and all reachable objects from it.
45
- def self.of(root)
46
- seen = Set.new.compare_by_identity
47
-
62
+ def self.of(root, seen: Set.new.compare_by_identity, ignore: IGNORE)
48
63
  count = 0
49
64
  size = 0
50
65
 
@@ -52,9 +67,8 @@ module Memory
52
67
  while queue.any?
53
68
  object = queue.shift
54
69
 
55
- # Skip modules and symbols, they are usually "global":
56
- next if object.is_a?(Module)
57
- # Note that `reachable_objects_from` does not include symbols, numbers, or other value types, AFAICT.
70
+ # Skip ignored types:
71
+ next if ignore.any?{|type| object.is_a?(type)}
58
72
 
59
73
  # Skip internal objects - they don't behave correctly when added to `seen` and create unbounded recursion:
60
74
  next if object.is_a?(ObjectSpace::InternalObjectWrapper)
@@ -7,5 +7,5 @@
7
7
  # Copyright, 2020-2025, by Samuel Williams.
8
8
 
9
9
  module Memory
10
- VERSION = "0.8.4"
10
+ VERSION = "0.9.0"
11
11
  end
data/readme.md CHANGED
@@ -94,6 +94,10 @@ end
94
94
 
95
95
  Please see the [project releases](https://socketry.github.io/memory/releases/index) for all releases.
96
96
 
97
+ ### v0.9.0
98
+
99
+ - Explicit `ignore:` and `seen:` parameters for `Memory::Usage.of` to allow customization of ignored types and tracking of seen objects.
100
+
97
101
  ### v0.8.4
98
102
 
99
103
  - Fix bugs when printing reports due to interface mismatch with `Memory::Usage`.
data/releases.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Releases
2
2
 
3
+ ## v0.9.0
4
+
5
+ - Explicit `ignore:` and `seen:` parameters for `Memory::Usage.of` to allow customization of ignored types and tracking of seen objects.
6
+
3
7
  ## v0.8.4
4
8
 
5
9
  - Fix bugs when printing reports due to interface mismatch with `Memory::Usage`.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -29,7 +29,6 @@ authors:
29
29
  - Olle Jonsson
30
30
  - Vasily Kolesnikov
31
31
  - William Tabi
32
- autorequire:
33
32
  bindir: bin
34
33
  cert_chain:
35
34
  - |
@@ -61,7 +60,7 @@ cert_chain:
61
60
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
62
61
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
63
62
  -----END CERTIFICATE-----
64
- date: 2025-10-29 00:00:00.000000000 Z
63
+ date: 1980-01-02 00:00:00.000000000 Z
65
64
  dependencies:
66
65
  - !ruby/object:Gem::Dependency
67
66
  name: bake
@@ -105,8 +104,6 @@ dependencies:
105
104
  - - ">="
106
105
  - !ruby/object:Gem::Version
107
106
  version: '0'
108
- description:
109
- email:
110
107
  executables: []
111
108
  extensions: []
112
109
  extra_rdoc_files: []
@@ -133,7 +130,6 @@ licenses:
133
130
  metadata:
134
131
  documentation_uri: https://socketry.github.io/memory/
135
132
  source_code_uri: https://github.com/socketry/memory.git
136
- post_install_message:
137
133
  rdoc_options: []
138
134
  require_paths:
139
135
  - lib
@@ -148,8 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
144
  - !ruby/object:Gem::Version
149
145
  version: '0'
150
146
  requirements: []
151
- rubygems_version: 3.4.19
152
- signing_key:
147
+ rubygems_version: 3.7.2
153
148
  specification_version: 4
154
149
  summary: Memory profiling routines for Ruby 2.3+
155
150
  test_files: []
metadata.gz.sig CHANGED
@@ -1,3 +1,3 @@
1
- .ӗ�9ϋ-���(��̏�)9jq����RaS�OZ�@ ��T�0�c� H7@�kƢ���=@��EU��PkDJۢ��/㫉V�����7��rkaO
2
- ��Y;r��l���QR��B*ȧ���o��-�j���hW1F1 /�u�ew�/����cL�M �;]I�)^1DF{fr���@¤S2U#�8��(潗�k�4 $
3
- ����zqX���uieLYgՕ{�ũwΧ��.f�O����
1
+ R�,դ�J=�o����(��vI9M�&��̾
2
+ DP�`Z�#$�i���y�j;��Zk0L82��������ouND�%BW��U�a�Wiܛ��Cr1�y|�nq7��)���k�>|�6�'i-�X��5�G8\�E��p�ڶ ~�{q���q��ތ����l=��F"�(�0�@���ؓ���q!߅k)m���2���|�[F`�*����C��������[��Cl���]��i����|u`tK����;�x1o�p�
3
+ �񨵶o����c))IZ&�P���`$qhgo