memory 0.8.1 → 0.8.3

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: 9d7f868ef07c0e024374dc7bbbe474a202f0c4bd8b78d625a4de2e3c13266a79
4
- data.tar.gz: 87a8916345566abdeefcd5997c2cb53994bbd3a029fa82831800f85d6c63d8b3
3
+ metadata.gz: 3b83713d537a03a16799ac6f3cde42daad364061ac4baeadaced28a1ebf3206f
4
+ data.tar.gz: cde6c17579def23346ad980303d1d2cb57a7574ca59eec2656ae62ca132ff8d9
5
5
  SHA512:
6
- metadata.gz: ff2aad7a36062a3b117c130b2e849556c3fade72da6c3998746ee0cce2dd917c95231a06f354907be3945bc9f4f6674fcc172435523e79a45245962537c5837b
7
- data.tar.gz: 3942a110b76836d49e2c0cf5c289e6b07a87f357a4d6be106f0c370106a5e3fcaca3a24d4a0835342d6add44425dfa20e55c6003dbb3064c8ad4e85536deb238
6
+ metadata.gz: c4ded3952cdb38c6f9e0d15e9f98a0da1267da1bd85b9f0810b0d16385fa16246d40925e2ffb58942cd73a20ca7038d1b49d99e6a9b9292d27fe75ec57b0e65e
7
+ data.tar.gz: 16eef76d5864170493759bed3c39aec78a4696b5ccd4ba91d2cc8caad13d0578c89e1d2f37dabc9713b21e9ee0a4f6d6a4fceea233cdfefe32ca3c8185bda4c2
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/memory/format.rb CHANGED
@@ -4,17 +4,7 @@
4
4
  # Copyright, 2025, by Samuel Williams.
5
5
 
6
6
  module Memory
7
- UNITS = {
8
- 0 => "B",
9
- 3 => "KiB",
10
- 6 => "MiB",
11
- 9 => "GiB",
12
- 12 => "TiB",
13
- 15 => "PiB",
14
- 18 => "EiB",
15
- 21 => "ZiB",
16
- 24 => "YiB"
17
- }.freeze
7
+ UNITS = ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"].freeze
18
8
 
19
9
  # Format bytes into human-readable units.
20
10
  # @parameter bytes [Integer] The number of bytes to format.
@@ -22,8 +12,12 @@ module Memory
22
12
  def self.formatted_bytes(bytes)
23
13
  return "0 B" if bytes.zero?
24
14
 
25
- scale = Math.log2(bytes).div(10) * 3
26
- scale = 24 if scale > 24
27
- "%.2f #{UNITS[scale]}" % (bytes / 10.0**scale)
15
+ # Calculate how many times we can divide by 1024 (2^10)
16
+ # log2(bytes) / 10 gives the number of 1024 divisions
17
+ index = Math.log2(bytes).to_i / 10
18
+ index = 8 if index > 8 # Cap at YiB
19
+
20
+ # Divide by 1024^index, which equals 2^(index * 10)
21
+ "%.2f #{UNITS[index]}" % (bytes / (1024.0 ** index))
28
22
  end
29
23
  end
data/lib/memory/usage.rb CHANGED
@@ -61,7 +61,9 @@ module Memory
61
61
  size += ObjectSpace.memsize_of(object)
62
62
 
63
63
  # Add the object's reachable objects to the queue:
64
- queue.concat(ObjectSpace.reachable_objects_from(object))
64
+ if reachable_objects = ObjectSpace.reachable_objects_from(object)
65
+ queue.concat(reachable_objects)
66
+ end
65
67
  end
66
68
 
67
69
  return new(size, count)
@@ -79,7 +81,7 @@ module Memory
79
81
  end
80
82
 
81
83
  def to_s
82
- "(#{Memory.formatted_bytes(memory)} in #{count} allocations)"
84
+ "(#{Memory.formatted_bytes(@size)} in #{@count} allocations)"
83
85
  end
84
86
  end
85
87
  end
@@ -7,5 +7,5 @@
7
7
  # Copyright, 2020-2025, by Samuel Williams.
8
8
 
9
9
  module Memory
10
- VERSION = "0.8.1"
10
+ VERSION = "0.8.3"
11
11
  end
data/readme.md CHANGED
@@ -94,6 +94,14 @@ end
94
94
 
95
95
  Please see the [project releases](https://socketry.github.io/memory/releases/index) for all releases.
96
96
 
97
+ ### v0.8.3
98
+
99
+ - Handle `Memory::Usage.of(number)` without error.
100
+
101
+ ### v0.8.2
102
+
103
+ - Fix several formatting issues.
104
+
97
105
  ### v0.8.1
98
106
 
99
107
  - Skip over `ObjectSpace::InternalObjectWrapper` instances in `Memory::Usage.of` to avoid unbounded recursion.
data/releases.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Releases
2
2
 
3
+ ## v0.8.3
4
+
5
+ - Handle `Memory::Usage.of(number)` without error.
6
+
7
+ ## v0.8.2
8
+
9
+ - Fix several formatting issues.
10
+
3
11
  ## v0.8.1
4
12
 
5
13
  - Skip over `ObjectSpace::InternalObjectWrapper` instances in `Memory::Usage.of` to avoid unbounded recursion.
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.1
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -29,6 +29,7 @@ authors:
29
29
  - Olle Jonsson
30
30
  - Vasily Kolesnikov
31
31
  - William Tabi
32
+ autorequire:
32
33
  bindir: bin
33
34
  cert_chain:
34
35
  - |
@@ -60,7 +61,7 @@ cert_chain:
60
61
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
61
62
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
62
63
  -----END CERTIFICATE-----
63
- date: 1980-01-02 00:00:00.000000000 Z
64
+ date: 2025-10-29 00:00:00.000000000 Z
64
65
  dependencies:
65
66
  - !ruby/object:Gem::Dependency
66
67
  name: bake
@@ -104,6 +105,8 @@ dependencies:
104
105
  - - ">="
105
106
  - !ruby/object:Gem::Version
106
107
  version: '0'
108
+ description:
109
+ email:
107
110
  executables: []
108
111
  extensions: []
109
112
  extra_rdoc_files: []
@@ -130,6 +133,7 @@ licenses:
130
133
  metadata:
131
134
  documentation_uri: https://socketry.github.io/memory/
132
135
  source_code_uri: https://github.com/socketry/memory.git
136
+ post_install_message:
133
137
  rdoc_options: []
134
138
  require_paths:
135
139
  - lib
@@ -144,7 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
148
  - !ruby/object:Gem::Version
145
149
  version: '0'
146
150
  requirements: []
147
- rubygems_version: 3.7.2
151
+ rubygems_version: 3.4.19
152
+ signing_key:
148
153
  specification_version: 4
149
154
  summary: Memory profiling routines for Ruby 2.3+
150
155
  test_files: []
metadata.gz.sig CHANGED
Binary file