prometheus-client-mmap 1.1.0-x86_64-darwin → 1.1.2-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e45fa7ed33162482f62e17c313746f295f4dc6093889bd02e4bca762c74f56e
4
- data.tar.gz: 5e263e5d1b9b51f9fb14fbc3d740027f811d5f6dd85e24e9cc54bce09ccaf5b6
3
+ metadata.gz: 92f6d777a4fdde4b3f870caee365b46cbca08432e81db437223511ed2f53b03d
4
+ data.tar.gz: c035a4f1407e0e2aa820409502f221b03d81d94feea74ab1116468ded550edf7
5
5
  SHA512:
6
- metadata.gz: 44b3fbdebaf031602c70ccf4498df92dbb200cdab9e1cdc075cd14db15803d60b891264adb849ddc0145b460666ebbdf836cd5a193cae643a5e80c2351a5a44a
7
- data.tar.gz: fe372482152c5fe54d43bcd60986efb92137e042b1936a53e585fae6dee52a8ea7a443e093af6c8a76c1e9262d84fe87387ec4c2c41ee92b20d2467d9682b9b5
6
+ metadata.gz: 06f6a72ac8b5e05b8c25ac653a794fe11c2f958609946d13e2fe9f8dc8237921a29006e5bc83b7c66c8ee44ac51ef3b20a0adc5d4aac63e33117b93049fa0591
7
+ data.tar.gz: bd0eb1e049555c584d025877ec114dce5d418243705b147822ed45c1ee4155dea240e3363e46272582bcc2f70205b3549d98db0cf5ae3fd03fbc3ec0e8a3077f
@@ -4,42 +4,49 @@ version = 3
4
4
 
5
5
  [[package]]
6
6
  name = "ahash"
7
- version = "0.8.3"
7
+ version = "0.8.11"
8
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
9
+ checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
10
10
  dependencies = [
11
11
  "cfg-if",
12
12
  "once_cell",
13
13
  "version_check",
14
+ "zerocopy",
14
15
  ]
15
16
 
16
17
  [[package]]
17
18
  name = "aho-corasick"
18
- version = "0.7.20"
19
+ version = "1.1.3"
19
20
  source = "registry+https://github.com/rust-lang/crates.io-index"
20
- checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
21
+ checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
21
22
  dependencies = [
22
23
  "memchr",
23
24
  ]
24
25
 
26
+ [[package]]
27
+ name = "allocator-api2"
28
+ version = "0.2.18"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
31
+
25
32
  [[package]]
26
33
  name = "autocfg"
27
- version = "1.1.0"
34
+ version = "1.4.0"
28
35
  source = "registry+https://github.com/rust-lang/crates.io-index"
29
- checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
36
+ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
30
37
 
31
38
  [[package]]
32
39
  name = "bindgen"
33
- version = "0.69.1"
40
+ version = "0.69.4"
34
41
  source = "registry+https://github.com/rust-lang/crates.io-index"
35
- checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2"
42
+ checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
36
43
  dependencies = [
37
- "bitflags 2.3.3",
44
+ "bitflags 2.6.0",
38
45
  "cexpr",
39
46
  "clang-sys",
47
+ "itertools",
40
48
  "lazy_static",
41
49
  "lazycell",
42
- "peeking_take_while",
43
50
  "proc-macro2",
44
51
  "quote",
45
52
  "regex",
@@ -56,9 +63,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
56
63
 
57
64
  [[package]]
58
65
  name = "bitflags"
59
- version = "2.3.3"
66
+ version = "2.6.0"
60
67
  source = "registry+https://github.com/rust-lang/crates.io-index"
61
- checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
68
+ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
62
69
 
63
70
  [[package]]
64
71
  name = "block-buffer"
@@ -71,9 +78,9 @@ dependencies = [
71
78
 
72
79
  [[package]]
73
80
  name = "bstr"
74
- version = "1.6.0"
81
+ version = "1.10.0"
75
82
  source = "registry+https://github.com/rust-lang/crates.io-index"
76
- checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
83
+ checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
77
84
  dependencies = [
78
85
  "memchr",
79
86
  "regex-automata",
@@ -81,10 +88,10 @@ dependencies = [
81
88
  ]
82
89
 
83
90
  [[package]]
84
- name = "cc"
85
- version = "1.0.79"
91
+ name = "byteorder"
92
+ version = "1.5.0"
86
93
  source = "registry+https://github.com/rust-lang/crates.io-index"
87
- checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
94
+ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
88
95
 
89
96
  [[package]]
90
97
  name = "cexpr"
@@ -103,9 +110,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
103
110
 
104
111
  [[package]]
105
112
  name = "clang-sys"
106
- version = "1.6.1"
113
+ version = "1.8.1"
107
114
  source = "registry+https://github.com/rust-lang/crates.io-index"
108
- checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
115
+ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
109
116
  dependencies = [
110
117
  "glob",
111
118
  "libc",
@@ -114,9 +121,9 @@ dependencies = [
114
121
 
115
122
  [[package]]
116
123
  name = "cpufeatures"
117
- version = "0.2.6"
124
+ version = "0.2.14"
118
125
  source = "registry+https://github.com/rust-lang/crates.io-index"
119
- checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181"
126
+ checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
120
127
  dependencies = [
121
128
  "libc",
122
129
  ]
@@ -142,24 +149,19 @@ dependencies = [
142
149
  ]
143
150
 
144
151
  [[package]]
145
- name = "errno"
146
- version = "0.3.2"
152
+ name = "either"
153
+ version = "1.13.0"
147
154
  source = "registry+https://github.com/rust-lang/crates.io-index"
148
- checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
149
- dependencies = [
150
- "errno-dragonfly",
151
- "libc",
152
- "windows-sys",
153
- ]
155
+ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
154
156
 
155
157
  [[package]]
156
- name = "errno-dragonfly"
157
- version = "0.1.2"
158
+ name = "errno"
159
+ version = "0.3.9"
158
160
  source = "registry+https://github.com/rust-lang/crates.io-index"
159
- checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
161
+ checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
160
162
  dependencies = [
161
- "cc",
162
163
  "libc",
164
+ "windows-sys 0.52.0",
163
165
  ]
164
166
 
165
167
  [[package]]
@@ -175,7 +177,7 @@ dependencies = [
175
177
  "nix",
176
178
  "rand",
177
179
  "rb-sys",
178
- "rb-sys-env",
180
+ "rb-sys-env 0.2.1",
179
181
  "serde",
180
182
  "serde_json",
181
183
  "sha2",
@@ -186,9 +188,9 @@ dependencies = [
186
188
 
187
189
  [[package]]
188
190
  name = "fastrand"
189
- version = "2.0.0"
191
+ version = "2.1.1"
190
192
  source = "registry+https://github.com/rust-lang/crates.io-index"
191
- checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
193
+ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
192
194
 
193
195
  [[package]]
194
196
  name = "generic-array"
@@ -202,9 +204,9 @@ dependencies = [
202
204
 
203
205
  [[package]]
204
206
  name = "getrandom"
205
- version = "0.2.8"
207
+ version = "0.2.15"
206
208
  source = "registry+https://github.com/rust-lang/crates.io-index"
207
- checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
209
+ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
208
210
  dependencies = [
209
211
  "cfg-if",
210
212
  "libc",
@@ -219,30 +221,40 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
219
221
 
220
222
  [[package]]
221
223
  name = "hashbrown"
222
- version = "0.13.2"
224
+ version = "0.14.5"
223
225
  source = "registry+https://github.com/rust-lang/crates.io-index"
224
- checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
226
+ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
225
227
  dependencies = [
226
228
  "ahash",
229
+ "allocator-api2",
227
230
  ]
228
231
 
229
232
  [[package]]
230
233
  name = "indoc"
231
- version = "2.0.3"
234
+ version = "2.0.5"
235
+ source = "registry+https://github.com/rust-lang/crates.io-index"
236
+ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
237
+
238
+ [[package]]
239
+ name = "itertools"
240
+ version = "0.12.1"
232
241
  source = "registry+https://github.com/rust-lang/crates.io-index"
233
- checksum = "2c785eefb63ebd0e33416dfcb8d6da0bf27ce752843a45632a67bf10d4d4b5c4"
242
+ checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
243
+ dependencies = [
244
+ "either",
245
+ ]
234
246
 
235
247
  [[package]]
236
248
  name = "itoa"
237
- version = "1.0.6"
249
+ version = "1.0.11"
238
250
  source = "registry+https://github.com/rust-lang/crates.io-index"
239
- checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
251
+ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
240
252
 
241
253
  [[package]]
242
254
  name = "lazy_static"
243
- version = "1.4.0"
255
+ version = "1.5.0"
244
256
  source = "registry+https://github.com/rust-lang/crates.io-index"
245
- checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
257
+ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
246
258
 
247
259
  [[package]]
248
260
  name = "lazycell"
@@ -252,35 +264,35 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
252
264
 
253
265
  [[package]]
254
266
  name = "libc"
255
- version = "0.2.147"
267
+ version = "0.2.159"
256
268
  source = "registry+https://github.com/rust-lang/crates.io-index"
257
- checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
269
+ checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
258
270
 
259
271
  [[package]]
260
272
  name = "libloading"
261
- version = "0.7.4"
273
+ version = "0.8.5"
262
274
  source = "registry+https://github.com/rust-lang/crates.io-index"
263
- checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
275
+ checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
264
276
  dependencies = [
265
277
  "cfg-if",
266
- "winapi",
278
+ "windows-targets",
267
279
  ]
268
280
 
269
281
  [[package]]
270
282
  name = "linux-raw-sys"
271
- version = "0.4.3"
283
+ version = "0.4.14"
272
284
  source = "registry+https://github.com/rust-lang/crates.io-index"
273
- checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
285
+ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
274
286
 
275
287
  [[package]]
276
288
  name = "magnus"
277
- version = "0.6.0"
289
+ version = "0.7.1"
278
290
  source = "registry+https://github.com/rust-lang/crates.io-index"
279
- checksum = "68e9585bfe236e88e6b10b6d8eb5349bd0e0009f3f9dff8d2e99a82601b33743"
291
+ checksum = "3d87ae53030f3a22e83879e666cb94e58a7bdf31706878a0ba48752994146dab"
280
292
  dependencies = [
281
293
  "magnus-macros",
282
294
  "rb-sys",
283
- "rb-sys-env",
295
+ "rb-sys-env 0.1.2",
284
296
  "seq-macro",
285
297
  ]
286
298
 
@@ -297,15 +309,15 @@ dependencies = [
297
309
 
298
310
  [[package]]
299
311
  name = "memchr"
300
- version = "2.5.0"
312
+ version = "2.7.4"
301
313
  source = "registry+https://github.com/rust-lang/crates.io-index"
302
- checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
314
+ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
303
315
 
304
316
  [[package]]
305
317
  name = "memmap2"
306
- version = "0.5.10"
318
+ version = "0.9.5"
307
319
  source = "registry+https://github.com/rust-lang/crates.io-index"
308
- checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327"
320
+ checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f"
309
321
  dependencies = [
310
322
  "libc",
311
323
  ]
@@ -351,15 +363,12 @@ dependencies = [
351
363
 
352
364
  [[package]]
353
365
  name = "once_cell"
354
- version = "1.17.1"
355
- source = "registry+https://github.com/rust-lang/crates.io-index"
356
- checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
357
-
358
- [[package]]
359
- name = "peeking_take_while"
360
- version = "0.1.2"
366
+ version = "1.20.1"
361
367
  source = "registry+https://github.com/rust-lang/crates.io-index"
362
- checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
368
+ checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
369
+ dependencies = [
370
+ "portable-atomic",
371
+ ]
363
372
 
364
373
  [[package]]
365
374
  name = "pin-utils"
@@ -367,26 +376,35 @@ version = "0.1.0"
367
376
  source = "registry+https://github.com/rust-lang/crates.io-index"
368
377
  checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
369
378
 
379
+ [[package]]
380
+ name = "portable-atomic"
381
+ version = "1.9.0"
382
+ source = "registry+https://github.com/rust-lang/crates.io-index"
383
+ checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
384
+
370
385
  [[package]]
371
386
  name = "ppv-lite86"
372
- version = "0.2.17"
387
+ version = "0.2.20"
373
388
  source = "registry+https://github.com/rust-lang/crates.io-index"
374
- checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
389
+ checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
390
+ dependencies = [
391
+ "zerocopy",
392
+ ]
375
393
 
376
394
  [[package]]
377
395
  name = "proc-macro2"
378
- version = "1.0.56"
396
+ version = "1.0.86"
379
397
  source = "registry+https://github.com/rust-lang/crates.io-index"
380
- checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
398
+ checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
381
399
  dependencies = [
382
400
  "unicode-ident",
383
401
  ]
384
402
 
385
403
  [[package]]
386
404
  name = "quote"
387
- version = "1.0.26"
405
+ version = "1.0.37"
388
406
  source = "registry+https://github.com/rust-lang/crates.io-index"
389
- checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
407
+ checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
390
408
  dependencies = [
391
409
  "proc-macro2",
392
410
  ]
@@ -423,18 +441,18 @@ dependencies = [
423
441
 
424
442
  [[package]]
425
443
  name = "rb-sys"
426
- version = "0.9.86"
444
+ version = "0.9.105"
427
445
  source = "registry+https://github.com/rust-lang/crates.io-index"
428
- checksum = "7285f2a7b92f58ab198e3fd59a71d2861478f9c4642f41e83582385818941697"
446
+ checksum = "4b3a1f3ce8e7c36d777d52fe7a99039fe4fea7c8ec355a4c4f3a17f92a14029f"
429
447
  dependencies = [
430
448
  "rb-sys-build",
431
449
  ]
432
450
 
433
451
  [[package]]
434
452
  name = "rb-sys-build"
435
- version = "0.9.86"
453
+ version = "0.9.105"
436
454
  source = "registry+https://github.com/rust-lang/crates.io-index"
437
- checksum = "71583945f94dabb6c0dfa63f1b71e929c1901e1e288ef3739ab8bed3b7069550"
455
+ checksum = "3e6b246c29c0809e1cbe60a1ba9e093da72a4676d02adc68469297d1e589bbf0"
438
456
  dependencies = [
439
457
  "bindgen",
440
458
  "lazy_static",
@@ -452,36 +470,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
452
470
  checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb"
453
471
 
454
472
  [[package]]
455
- name = "redox_syscall"
456
- version = "0.3.5"
473
+ name = "rb-sys-env"
474
+ version = "0.2.1"
457
475
  source = "registry+https://github.com/rust-lang/crates.io-index"
458
- checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
459
- dependencies = [
460
- "bitflags 1.3.2",
461
- ]
476
+ checksum = "5b0412803f8fea126e8f500d8eb6d5394a983517888a790254f4190e9b16a7a5"
462
477
 
463
478
  [[package]]
464
479
  name = "regex"
465
- version = "1.7.3"
480
+ version = "1.11.0"
466
481
  source = "registry+https://github.com/rust-lang/crates.io-index"
467
- checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
482
+ checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
468
483
  dependencies = [
469
484
  "aho-corasick",
470
485
  "memchr",
486
+ "regex-automata",
471
487
  "regex-syntax",
472
488
  ]
473
489
 
474
490
  [[package]]
475
491
  name = "regex-automata"
476
- version = "0.3.4"
492
+ version = "0.4.8"
477
493
  source = "registry+https://github.com/rust-lang/crates.io-index"
478
- checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294"
494
+ checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
495
+ dependencies = [
496
+ "aho-corasick",
497
+ "memchr",
498
+ "regex-syntax",
499
+ ]
479
500
 
480
501
  [[package]]
481
502
  name = "regex-syntax"
482
- version = "0.6.29"
503
+ version = "0.8.5"
483
504
  source = "registry+https://github.com/rust-lang/crates.io-index"
484
- checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
505
+ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
485
506
 
486
507
  [[package]]
487
508
  name = "rustc-hash"
@@ -491,43 +512,43 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
491
512
 
492
513
  [[package]]
493
514
  name = "rustix"
494
- version = "0.38.4"
515
+ version = "0.38.37"
495
516
  source = "registry+https://github.com/rust-lang/crates.io-index"
496
- checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5"
517
+ checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
497
518
  dependencies = [
498
- "bitflags 2.3.3",
519
+ "bitflags 2.6.0",
499
520
  "errno",
500
521
  "libc",
501
522
  "linux-raw-sys",
502
- "windows-sys",
523
+ "windows-sys 0.52.0",
503
524
  ]
504
525
 
505
526
  [[package]]
506
527
  name = "ryu"
507
- version = "1.0.13"
528
+ version = "1.0.18"
508
529
  source = "registry+https://github.com/rust-lang/crates.io-index"
509
- checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
530
+ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
510
531
 
511
532
  [[package]]
512
533
  name = "seq-macro"
513
- version = "0.3.3"
534
+ version = "0.3.5"
514
535
  source = "registry+https://github.com/rust-lang/crates.io-index"
515
- checksum = "e6b44e8fc93a14e66336d230954dda83d18b4605ccace8fe09bc7514a71ad0bc"
536
+ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
516
537
 
517
538
  [[package]]
518
539
  name = "serde"
519
- version = "1.0.164"
540
+ version = "1.0.210"
520
541
  source = "registry+https://github.com/rust-lang/crates.io-index"
521
- checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d"
542
+ checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
522
543
  dependencies = [
523
544
  "serde_derive",
524
545
  ]
525
546
 
526
547
  [[package]]
527
548
  name = "serde_derive"
528
- version = "1.0.164"
549
+ version = "1.0.210"
529
550
  source = "registry+https://github.com/rust-lang/crates.io-index"
530
- checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68"
551
+ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
531
552
  dependencies = [
532
553
  "proc-macro2",
533
554
  "quote",
@@ -536,20 +557,21 @@ dependencies = [
536
557
 
537
558
  [[package]]
538
559
  name = "serde_json"
539
- version = "1.0.99"
560
+ version = "1.0.128"
540
561
  source = "registry+https://github.com/rust-lang/crates.io-index"
541
- checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3"
562
+ checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
542
563
  dependencies = [
543
564
  "itoa",
565
+ "memchr",
544
566
  "ryu",
545
567
  "serde",
546
568
  ]
547
569
 
548
570
  [[package]]
549
571
  name = "sha2"
550
- version = "0.10.7"
572
+ version = "0.10.8"
551
573
  source = "registry+https://github.com/rust-lang/crates.io-index"
552
- checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
574
+ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
553
575
  dependencies = [
554
576
  "cfg-if",
555
577
  "cpufeatures",
@@ -564,24 +586,24 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
564
586
 
565
587
  [[package]]
566
588
  name = "shlex"
567
- version = "1.1.0"
589
+ version = "1.3.0"
568
590
  source = "registry+https://github.com/rust-lang/crates.io-index"
569
- checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
591
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
570
592
 
571
593
  [[package]]
572
594
  name = "smallvec"
573
- version = "1.11.0"
595
+ version = "1.13.2"
574
596
  source = "registry+https://github.com/rust-lang/crates.io-index"
575
- checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
597
+ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
576
598
  dependencies = [
577
599
  "serde",
578
600
  ]
579
601
 
580
602
  [[package]]
581
603
  name = "syn"
582
- version = "2.0.13"
604
+ version = "2.0.79"
583
605
  source = "registry+https://github.com/rust-lang/crates.io-index"
584
- checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec"
606
+ checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
585
607
  dependencies = [
586
608
  "proc-macro2",
587
609
  "quote",
@@ -590,31 +612,31 @@ dependencies = [
590
612
 
591
613
  [[package]]
592
614
  name = "tempfile"
593
- version = "3.7.0"
615
+ version = "3.13.0"
594
616
  source = "registry+https://github.com/rust-lang/crates.io-index"
595
- checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998"
617
+ checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
596
618
  dependencies = [
597
619
  "cfg-if",
598
620
  "fastrand",
599
- "redox_syscall",
621
+ "once_cell",
600
622
  "rustix",
601
- "windows-sys",
623
+ "windows-sys 0.59.0",
602
624
  ]
603
625
 
604
626
  [[package]]
605
627
  name = "thiserror"
606
- version = "1.0.40"
628
+ version = "1.0.64"
607
629
  source = "registry+https://github.com/rust-lang/crates.io-index"
608
- checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
630
+ checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
609
631
  dependencies = [
610
632
  "thiserror-impl",
611
633
  ]
612
634
 
613
635
  [[package]]
614
636
  name = "thiserror-impl"
615
- version = "1.0.40"
637
+ version = "1.0.64"
616
638
  source = "registry+https://github.com/rust-lang/crates.io-index"
617
- checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
639
+ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
618
640
  dependencies = [
619
641
  "proc-macro2",
620
642
  "quote",
@@ -623,21 +645,21 @@ dependencies = [
623
645
 
624
646
  [[package]]
625
647
  name = "typenum"
626
- version = "1.16.0"
648
+ version = "1.17.0"
627
649
  source = "registry+https://github.com/rust-lang/crates.io-index"
628
- checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
650
+ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
629
651
 
630
652
  [[package]]
631
653
  name = "unicode-ident"
632
- version = "1.0.8"
654
+ version = "1.0.13"
633
655
  source = "registry+https://github.com/rust-lang/crates.io-index"
634
- checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
656
+ checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
635
657
 
636
658
  [[package]]
637
659
  name = "version_check"
638
- version = "0.9.4"
660
+ version = "0.9.5"
639
661
  source = "registry+https://github.com/rust-lang/crates.io-index"
640
- checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
662
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
641
663
 
642
664
  [[package]]
643
665
  name = "wasi"
@@ -646,45 +668,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
646
668
  checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
647
669
 
648
670
  [[package]]
649
- name = "winapi"
650
- version = "0.3.9"
671
+ name = "windows-sys"
672
+ version = "0.52.0"
651
673
  source = "registry+https://github.com/rust-lang/crates.io-index"
652
- checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
674
+ checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
653
675
  dependencies = [
654
- "winapi-i686-pc-windows-gnu",
655
- "winapi-x86_64-pc-windows-gnu",
676
+ "windows-targets",
656
677
  ]
657
678
 
658
- [[package]]
659
- name = "winapi-i686-pc-windows-gnu"
660
- version = "0.4.0"
661
- source = "registry+https://github.com/rust-lang/crates.io-index"
662
- checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
663
-
664
- [[package]]
665
- name = "winapi-x86_64-pc-windows-gnu"
666
- version = "0.4.0"
667
- source = "registry+https://github.com/rust-lang/crates.io-index"
668
- checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
669
-
670
679
  [[package]]
671
680
  name = "windows-sys"
672
- version = "0.48.0"
681
+ version = "0.59.0"
673
682
  source = "registry+https://github.com/rust-lang/crates.io-index"
674
- checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
683
+ checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
675
684
  dependencies = [
676
685
  "windows-targets",
677
686
  ]
678
687
 
679
688
  [[package]]
680
689
  name = "windows-targets"
681
- version = "0.48.0"
690
+ version = "0.52.6"
682
691
  source = "registry+https://github.com/rust-lang/crates.io-index"
683
- checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
692
+ checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
684
693
  dependencies = [
685
694
  "windows_aarch64_gnullvm",
686
695
  "windows_aarch64_msvc",
687
696
  "windows_i686_gnu",
697
+ "windows_i686_gnullvm",
688
698
  "windows_i686_msvc",
689
699
  "windows_x86_64_gnu",
690
700
  "windows_x86_64_gnullvm",
@@ -693,42 +703,69 @@ dependencies = [
693
703
 
694
704
  [[package]]
695
705
  name = "windows_aarch64_gnullvm"
696
- version = "0.48.0"
706
+ version = "0.52.6"
697
707
  source = "registry+https://github.com/rust-lang/crates.io-index"
698
- checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
708
+ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
699
709
 
700
710
  [[package]]
701
711
  name = "windows_aarch64_msvc"
702
- version = "0.48.0"
712
+ version = "0.52.6"
703
713
  source = "registry+https://github.com/rust-lang/crates.io-index"
704
- checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
714
+ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
705
715
 
706
716
  [[package]]
707
717
  name = "windows_i686_gnu"
708
- version = "0.48.0"
718
+ version = "0.52.6"
719
+ source = "registry+https://github.com/rust-lang/crates.io-index"
720
+ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
721
+
722
+ [[package]]
723
+ name = "windows_i686_gnullvm"
724
+ version = "0.52.6"
709
725
  source = "registry+https://github.com/rust-lang/crates.io-index"
710
- checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
726
+ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
711
727
 
712
728
  [[package]]
713
729
  name = "windows_i686_msvc"
714
- version = "0.48.0"
730
+ version = "0.52.6"
715
731
  source = "registry+https://github.com/rust-lang/crates.io-index"
716
- checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
732
+ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
717
733
 
718
734
  [[package]]
719
735
  name = "windows_x86_64_gnu"
720
- version = "0.48.0"
736
+ version = "0.52.6"
721
737
  source = "registry+https://github.com/rust-lang/crates.io-index"
722
- checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
738
+ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
723
739
 
724
740
  [[package]]
725
741
  name = "windows_x86_64_gnullvm"
726
- version = "0.48.0"
742
+ version = "0.52.6"
727
743
  source = "registry+https://github.com/rust-lang/crates.io-index"
728
- checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
744
+ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
729
745
 
730
746
  [[package]]
731
747
  name = "windows_x86_64_msvc"
732
- version = "0.48.0"
748
+ version = "0.52.6"
749
+ source = "registry+https://github.com/rust-lang/crates.io-index"
750
+ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
751
+
752
+ [[package]]
753
+ name = "zerocopy"
754
+ version = "0.7.35"
733
755
  source = "registry+https://github.com/rust-lang/crates.io-index"
734
- checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
756
+ checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
757
+ dependencies = [
758
+ "byteorder",
759
+ "zerocopy-derive",
760
+ ]
761
+
762
+ [[package]]
763
+ name = "zerocopy-derive"
764
+ version = "0.7.35"
765
+ source = "registry+https://github.com/rust-lang/crates.io-index"
766
+ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
767
+ dependencies = [
768
+ "proc-macro2",
769
+ "quote",
770
+ "syn",
771
+ ]
@@ -6,29 +6,29 @@ edition = "2021"
6
6
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
7
 
8
8
  [dependencies]
9
- hashbrown = "0.13"
9
+ hashbrown = "0.14"
10
10
  libc = "0.2"
11
- magnus = { version = "0.6", features = ["rb-sys"] }
12
- memmap2 = "0.5"
11
+ magnus = { version = "0.7", features = ["rb-sys"] }
12
+ memmap2 = "0.9"
13
13
  # v0.26 cannot be built on CentOS 7 https://github.com/nix-rust/nix/issues/1972
14
14
  nix = { version = "0.25", features = ["mman"] } # mman used for MsFlags
15
- rb-sys = "0.9.86"
15
+ rb-sys = { version = "0.9.105", features = ["stable-api-compiled-fallback"] }
16
16
  serde = { version = "1.0", features = ["derive"] }
17
17
  serde_json = { version = "1.0", features = ["raw_value"] }
18
18
  smallvec = { version = "1.10", features = ["serde"] }
19
19
  thiserror = "1.0"
20
20
 
21
21
  [dev-dependencies]
22
- bstr = "1.6"
22
+ bstr = "1.9"
23
23
  indoc = "2.0"
24
24
  # We need the `embed` feature to run tests, but this triggers failures when building as a Gem.
25
- magnus = { version = "0.6", features = ["rb-sys","embed"] }
25
+ magnus = { version = "0.7", features = ["rb-sys","embed"] }
26
26
  rand = "0.8"
27
27
  sha2 = "0.10"
28
- tempfile = "3.5"
28
+ tempfile = "3.9"
29
29
 
30
30
  [build-dependencies]
31
- rb-sys-env = "0.1"
31
+ rb-sys-env = "0.2.1"
32
32
 
33
33
  [lib]
34
34
  # Integration tests won't work if crate is only `cdylib`.
@@ -100,13 +100,6 @@ pub enum MmapError {
100
100
  /// No mmap open.
101
101
  #[error("unmapped file")]
102
102
  UnmappedFile,
103
- /// File length changed by another process.
104
- #[error("size of {path} {len} does not match previous size {expected_len}. Another process may have modified it.")]
105
- UnexpectedFileLength {
106
- path: String,
107
- len: usize,
108
- expected_len: usize,
109
- },
110
103
  /// A custom error message with `strerror(3)` appended.
111
104
  #[error("{0}")]
112
105
  WithErrno(String),
@@ -169,7 +162,6 @@ impl MmapError {
169
162
  MmapError::Other(_) => RubyError::Arg,
170
163
  MmapError::PromParsing(_) => RubyError::PromParsing,
171
164
  MmapError::UnmappedFile => RubyError::Io,
172
- MmapError::UnexpectedFileLength { .. } => RubyError::Runtime,
173
165
  MmapError::WithErrno(_) => RubyError::Io,
174
166
  }
175
167
  }
@@ -5,7 +5,7 @@ use std::fs::File;
5
5
  use std::mem::size_of;
6
6
  use std::ops::Range;
7
7
  use std::os::unix::prelude::{AsRawFd, RawFd};
8
- use std::path::{Path, PathBuf};
8
+ use std::path::PathBuf;
9
9
 
10
10
  use crate::error::{MmapError, RubyError};
11
11
  use crate::raw_entry::RawEntry;
@@ -34,8 +34,6 @@ pub(super) struct InnerMmap {
34
34
  ///
35
35
  /// Equivalent to `i_mm->t->real` in the C implementation.
36
36
  len: usize,
37
- /// The length of the file being mmapped at the time of mapping.
38
- file_len: usize,
39
37
  }
40
38
 
41
39
  impl InnerMmap {
@@ -43,12 +41,19 @@ impl InnerMmap {
43
41
  /// Use when mmapping a file for the first time. When re-mapping a file
44
42
  /// after expanding it the `reestablish` function should be used.
45
43
  pub fn new(path: PathBuf, file: File) -> Result<Self> {
46
- let initial_file_len = get_file_len(&path, &file)?;
44
+ let stat = file.metadata().map_err(|e| {
45
+ MmapError::legacy(
46
+ format!("Can't stat {}: {e}", path.display()),
47
+ RubyError::Arg,
48
+ )
49
+ })?;
50
+
51
+ let file_size = util::cast_chk::<_, usize>(stat.len(), "file length")?;
47
52
 
48
53
  // We need to ensure the underlying file descriptor is at least a page size.
49
54
  // Otherwise, we could get a SIGBUS error if mmap() attempts to read or write
50
55
  // past the file.
51
- let reserve_size = Self::next_page_boundary(initial_file_len)?;
56
+ let reserve_size = Self::next_page_boundary(file_size)?;
52
57
 
53
58
  // Cast: no-op.
54
59
  Self::reserve_mmap_file_bytes(file.as_raw_fd(), reserve_size as off_t).map_err(|e| {
@@ -62,23 +67,21 @@ impl InnerMmap {
62
67
  })?;
63
68
 
64
69
  // Ensure we always have space for the header.
65
- let map_len = initial_file_len.max(HEADER_SIZE);
70
+ let map_len = file_size.max(HEADER_SIZE);
66
71
 
67
72
  // SAFETY: There is the possibility of UB if the file is modified outside of
68
73
  // this program.
69
74
  let map = unsafe { MmapOptions::new().len(map_len).map_mut(&file) }.map_err(|e| {
70
75
  MmapError::legacy(format!("mmap failed ({}): {e}", errno()), RubyError::Arg)
71
76
  })?;
72
- let file_len = util::cast_chk::<_, usize>(reserve_size, "file length")?;
73
77
 
74
- let len = initial_file_len;
78
+ let len = file_size;
75
79
 
76
80
  Ok(Self {
77
81
  file,
78
82
  path,
79
83
  map,
80
84
  len,
81
- file_len,
82
85
  })
83
86
  }
84
87
 
@@ -94,14 +97,12 @@ impl InnerMmap {
94
97
  // to the old length at this point if closing the file. Matching C implementation
95
98
  // for now.
96
99
  let len = map_len;
97
- let file_len = get_file_len(&path, &file)?;
98
100
 
99
101
  Ok(Self {
100
102
  file,
101
103
  path,
102
104
  map,
103
105
  len,
104
- file_len,
105
106
  })
106
107
  }
107
108
 
@@ -185,7 +186,7 @@ impl InnerMmap {
185
186
  self.len
186
187
  }
187
188
 
188
- /// The total length in bytes of the mmapped region of the file.
189
+ /// The total length in bytes of the mmapped file.
189
190
  ///
190
191
  /// Equivalent to `i_mm->t->len` in the C implementation.
191
192
  #[inline]
@@ -193,21 +194,6 @@ impl InnerMmap {
193
194
  self.map.len()
194
195
  }
195
196
 
196
- /// `stat` the mmapped file and return its length.
197
- pub fn check_file_len(&self) -> Result<usize> {
198
- get_file_len(&self.path, &self.file)
199
- }
200
-
201
- /// The length of the file at the time it was mmapped.
202
- pub fn file_len(&self) -> usize {
203
- self.file_len
204
- }
205
-
206
- /// The path of the mmapped file.
207
- pub fn path(&self) -> String {
208
- self.path.to_string_lossy().to_string()
209
- }
210
-
211
197
  /// Update the length of the mmap considered to be written.
212
198
  pub fn set_len(&mut self, len: usize) {
213
199
  self.len = len;
@@ -326,17 +312,6 @@ impl InnerMmap {
326
312
  }
327
313
  }
328
314
 
329
- fn get_file_len(path: &Path, file: &File) -> Result<usize> {
330
- let stat = file.metadata().map_err(|e| {
331
- MmapError::legacy(
332
- format!("Can't stat {}: {e}", path.display()),
333
- RubyError::Arg,
334
- )
335
- })?;
336
-
337
- util::cast_chk::<_, usize>(stat.len(), "file length")
338
- }
339
-
340
315
  #[cfg(test)]
341
316
  mod test {
342
317
  use nix::unistd::{self, SysconfVar};
@@ -25,11 +25,18 @@ use inner::InnerMmap;
25
25
 
26
26
  mod inner;
27
27
 
28
- /// The Ruby `STR_NOEMBED` flag, aka `FL_USER1`.
29
- const STR_NOEMBED: c_ulong = 1 << (13);
28
+ #[cfg(ruby_gt_3_3)]
29
+ /// The Ruby `STR_SHARED` flag, aka `FL_USER0`.
30
+ /// This was changed from `FL_USER2` in https://github.com/ruby/ruby/commit/6deeec5d459ecff5ec4628523b14ac7379fd942e.
31
+ const STR_SHARED: c_ulong = 1 << (12);
32
+
33
+ #[cfg(ruby_lte_3_3)]
30
34
  /// The Ruby `STR_SHARED` flag, aka `FL_USER2`.
31
35
  const STR_SHARED: c_ulong = 1 << (14);
32
36
 
37
+ /// The Ruby `STR_NOEMBED` flag, aka `FL_USER1`.
38
+ const STR_NOEMBED: c_ulong = 1 << (13);
39
+
33
40
  /// A Rust struct wrapped in a Ruby object, providing access to a memory-mapped
34
41
  /// file used to store, update, and read out Prometheus metrics.
35
42
  ///
@@ -390,8 +397,10 @@ impl MmapedFile {
390
397
  let new_len = self.inner(|inner| util::cast_chk::<_, c_long>(inner.len(), "mmap len"))?;
391
398
 
392
399
  // Iterate over the values of the `WeakMap`.
393
- for val in tracker.enumeratorize("each_value", ()) {
394
- let rb_string = val?;
400
+ for pair in tracker.enumeratorize("each_pair", ()) {
401
+ let rpair = magnus::RArray::try_convert(pair?)?;
402
+ let rb_string: Value = rpair.entry(1)?;
403
+
395
404
  let str = RString::from_value(rb_string)
396
405
  .ok_or_else(|| err!(arg_error(), "weakmap value was not a string"))?;
397
406
 
@@ -441,49 +450,17 @@ impl MmapedFile {
441
450
  }
442
451
 
443
452
  /// Check that the mmap is large enough to contain the value to be added,
444
- /// and expand it to fit if necessary. Will return an error if the file
445
- /// has been resized by another process.
453
+ /// and expand it to fit if necessary.
446
454
  fn check_expand(&self, rb_self: Obj<Self>, key_len: usize) -> magnus::error::Result<()> {
447
455
  // CAST: no-op on 32-bit, widening on 64-bit.
448
456
  let used = self.inner(|inner| inner.load_used())? as usize;
449
457
  let entry_len = RawEntry::calc_total_len(key_len)?;
450
- let required_len = used.add_chk(entry_len)?;
451
- let mut target_cap = self.capacity();
452
458
 
453
- let mut needs_resize = false;
454
459
  // We need the mmapped region to contain at least one byte beyond the
455
- // written data to create a NUL-terminated C string. Validate that
456
- // new length does not exactly match the length of the mmap.
457
- if target_cap <= required_len {
458
- needs_resize = true;
459
- target_cap = required_len + 1;
460
- }
461
-
462
- let (current_file_len, original_file_len) =
463
- self.inner(|inner| Ok((inner.check_file_len()?, inner.file_len())))?;
464
-
465
- let file_modified = current_file_len != original_file_len;
466
- if file_modified {
467
- // Ensure our new capacity is at least as large as the actual file.
468
- // Erroring out without first resizing the mmap would leave us stuck
469
- // in a bad state.
470
- target_cap = current_file_len
471
- }
472
-
473
- if needs_resize {
474
- self.expand_to_fit(rb_self, target_cap)?;
475
- }
476
-
477
- if file_modified {
478
- // Return an error so the caller is alerted that there were concurrent writes to the
479
- // file.
480
- let path = self.inner(|inner| Ok(inner.path()))?;
481
- return Err(MmapError::UnexpectedFileLength {
482
- path,
483
- len: current_file_len,
484
- expected_len: original_file_len,
485
- }
486
- .into());
460
+ // written data to create a NUL- terminated C string. Validate that
461
+ // new length does not exactly match or exceed the length of the mmap.
462
+ while self.capacity() <= used.add_chk(entry_len)? {
463
+ self.expand_to_fit(rb_self, self.capacity().mul_chk(2)?)?;
487
464
  }
488
465
 
489
466
  Ok(())
@@ -684,7 +661,6 @@ mod test {
684
661
  use super::*;
685
662
  use crate::raw_entry::RawEntry;
686
663
  use crate::testhelper::TestFile;
687
- use std::os::unix::prelude::AsRawFd;
688
664
 
689
665
  /// Create a wrapped MmapedFile object.
690
666
  fn create_obj() -> Obj<MmapedFile> {
@@ -914,37 +890,4 @@ mod test {
914
890
  // Validate that we have expanded the mmap, ensuring a trailing NUL.
915
891
  assert!(rs_self.capacity() > current_cap);
916
892
  }
917
-
918
- #[test]
919
- fn test_detect_external_resize() {
920
- let _cleanup = unsafe { magnus::embed::init() };
921
- let ruby = magnus::Ruby::get().unwrap();
922
- crate::init(&ruby).unwrap();
923
-
924
- let TestFile {
925
- file,
926
- path,
927
- dir: _dir,
928
- } = TestFile::new(&[0u8; 8]);
929
-
930
- let path_str = path.display().to_string();
931
- let rpath = RString::new(&path_str);
932
-
933
- // Object created successfully
934
- let result: std::result::Result<Obj<MmapedFile>, Error> =
935
- eval!("FastMmapedFileRs.new(path)", path = rpath);
936
- assert!(result.is_ok());
937
- let obj = result.unwrap();
938
-
939
- let rs_self = &*obj;
940
-
941
- let file_len = 1 << 32;
942
- nix::unistd::ftruncate(file.as_raw_fd(), file_len).unwrap();
943
-
944
- // We error when the file is externally modified.
945
- assert!(rs_self.check_expand(obj, 512).is_err());
946
-
947
- // We updated the object to use the new size.
948
- assert_eq!(rs_self.capacity(), file_len as usize);
949
- }
950
893
  }
Binary file
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  module Prometheus
2
2
  module Client
3
- VERSION = '1.1.0'.freeze
3
+ VERSION = '1.1.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-client-mmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.2
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - Tobias Schmidt
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2024-01-03 00:00:00.000000000 Z
14
+ date: 2024-12-31 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rb_sys
@@ -27,6 +27,20 @@ dependencies:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: 0.9.86
30
+ - !ruby/object:Gem::Dependency
31
+ name: base64
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
30
44
  - !ruby/object:Gem::Dependency
31
45
  name: fuzzbert
32
46
  requirement: !ruby/object:Gem::Requirement
@@ -109,14 +123,14 @@ dependencies:
109
123
  requirements:
110
124
  - - "~>"
111
125
  - !ruby/object:Gem::Version
112
- version: 0.16.2
126
+ version: '1.6'
113
127
  type: :development
114
128
  prerelease: false
115
129
  version_requirements: !ruby/object:Gem::Requirement
116
130
  requirements:
117
131
  - - "~>"
118
132
  - !ruby/object:Gem::Version
119
- version: 0.16.2
133
+ version: '1.6'
120
134
  description:
121
135
  email:
122
136
  - ts@soundcloud.com
@@ -150,7 +164,6 @@ files:
150
164
  - lib/3.0/fast_mmaped_file_rs.bundle
151
165
  - lib/3.1/fast_mmaped_file_rs.bundle
152
166
  - lib/3.2/fast_mmaped_file_rs.bundle
153
- - lib/3.3/fast_mmaped_file_rs.bundle
154
167
  - lib/prometheus.rb
155
168
  - lib/prometheus/client.rb
156
169
  - lib/prometheus/client/configuration.rb
@@ -195,14 +208,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
208
  version: '2.7'
196
209
  - - "<"
197
210
  - !ruby/object:Gem::Version
198
- version: 3.4.dev
211
+ version: 3.3.dev
199
212
  required_rubygems_version: !ruby/object:Gem::Requirement
200
213
  requirements:
201
214
  - - ">="
202
215
  - !ruby/object:Gem::Version
203
216
  version: '0'
204
217
  requirements: []
205
- rubygems_version: 3.4.4
218
+ rubygems_version: 3.5.23
206
219
  signing_key:
207
220
  specification_version: 4
208
221
  summary: A suite of instrumentation metric primitives that can be exposed through
Binary file