mini_racer 0.18.1 → 0.19.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: d136b28eba55fb9518691cd3dc38a0e95af3171d6d1796c7e892ce411023cfe6
4
- data.tar.gz: '07829f6048ef890b28574629b94f0371f441fcef176cb3c70c78da266280dd1f'
3
+ metadata.gz: 5923ad9b3aa9cdea7785f0f2eb3fa27357217d0feb5ed439dad46b5ea7eaea8f
4
+ data.tar.gz: ffac8a1b740c74467f40e0200730a3fe25892d63105022f8775fe8aaffdcdd20
5
5
  SHA512:
6
- metadata.gz: a0a80d3d34ba093a39f95fea716048c448800515667a426558fe00d6ffbd70614a375b64c2be923750d57e868c01a959c4396ab5c9afd25e0caefd2816ca4a82
7
- data.tar.gz: a3d7655f8f1ec369a1f279f8d983098d4f8fac381e6404116a0d72133e32a06f8c99309001d33628a440085b7b36079bcba318ae6dedd1a1eff0f381e6b8b9d4
6
+ metadata.gz: 0f8ab9852328121e3d55119fb1a2a8a875806b0a256d2c79ab09846fe2ed7df174beb68949213057fe8186376b73993b21dc21fe22ce82632f26e0a4354c982e
7
+ data.tar.gz: 88c0a37a5a26ab746312c76499a202578a0604098a1ec3fcf7b98110aace6facd95490b19bd0f6abb8afba136b9ae94f5f1367d55050d6abdcf62bd628d6b8f2
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ - 0.19.0 - 24-06-2025
2
+ - upgrade to node 24.1.0
3
+
1
4
  - 0.18.1 - 03-04-2025
2
5
  - Convert round doubles to fixnum for very big floats - this has better parity with JavaScript - Ben Noorhuis
3
6
 
@@ -327,8 +327,19 @@ static void des_bigint(void *arg, const void *p, size_t n, int sign)
327
327
  if (t >> 63)
328
328
  *a++ = 0; // suppress sign extension
329
329
  v = rb_big_unpack(limbs, a-limbs);
330
- if (sign < 0)
331
- v = rb_big_mul(v, LONG2FIX(-1));
330
+ if (sign < 0) {
331
+ // rb_big_unpack returns T_FIXNUM for smallish bignums
332
+ switch (TYPE(v)) {
333
+ case T_BIGNUM:
334
+ v = rb_big_mul(v, LONG2FIX(-1));
335
+ break;
336
+ case T_FIXNUM:
337
+ v = LONG2FIX(-1 * FIX2LONG(v));
338
+ break;
339
+ default:
340
+ abort();
341
+ }
342
+ }
332
343
  put(c, v);
333
344
  }
334
345
 
@@ -620,14 +631,16 @@ static int serialize1(Ser *s, VALUE refs, VALUE v)
620
631
  struct timeval tv = rb_time_timeval(v);
621
632
  ser_date(s, tv.tv_sec*1e3 + tv.tv_usec/1e3);
622
633
  } else {
623
- snprintf(s->err, sizeof(s->err), "unsupported type %s", rb_class2name(CLASS_OF(v)));
624
- return -1;
634
+ snprintf(s->err, sizeof(s->err), "unsupported type %s", rb_class2name(CLASS_OF(v)));
635
+ return -1;
625
636
  }
626
637
  break;
627
638
  default:
628
639
  snprintf(s->err, sizeof(s->err), "unsupported type %x", TYPE(v));
629
640
  return -1;
630
641
  }
642
+ if (*s->err)
643
+ return -1;
631
644
  return 0;
632
645
  }
633
646
 
@@ -239,15 +239,44 @@ static void ser_num(Ser *s, double v)
239
239
  }
240
240
  }
241
241
 
242
+ // ser_bigint: |n| is in bytes, not quadwords
243
+ static void ser_bigint(Ser *s, const uint64_t *p, size_t n, int sign)
244
+ {
245
+ if (*s->err)
246
+ return;
247
+ if (n % 8) {
248
+ snprintf(s->err, sizeof(s->err), "bad bigint");
249
+ return;
250
+ }
251
+ w_byte(s, 'Z');
252
+ // chop off high all-zero words
253
+ n /= 8;
254
+ while (n--)
255
+ if (p[n])
256
+ break;
257
+ if (n == (size_t)-1) {
258
+ w_byte(s, 0); // normalized zero
259
+ } else {
260
+ n = 8*n + 8;
261
+ w_varint(s, 2*n + (sign < 0));
262
+ w(s, p, n);
263
+ }
264
+ }
265
+
242
266
  static void ser_int(Ser *s, int64_t v)
243
267
  {
268
+ uint64_t t;
269
+ int sign;
270
+
244
271
  if (*s->err)
245
272
  return;
246
273
  if (v < INT32_MIN || v > INT32_MAX) {
247
274
  if (v > INT64_MIN/1024)
248
275
  if (v <= INT64_MAX/1024)
249
276
  return ser_num(s, v);
250
- snprintf(s->err, sizeof(s->err), "out of range: %lld", (long long)v);
277
+ t = v < 0 ? -v : v;
278
+ sign = v < 0 ? -1 : 1;
279
+ ser_bigint(s, &t, sizeof(t), sign);
251
280
  } else {
252
281
  w_byte(s, 'I');
253
282
  w_zigzag(s, v);
@@ -265,30 +294,6 @@ static void ser_date(Ser *s, double v)
265
294
  }
266
295
  }
267
296
 
268
- // ser_bigint: |n| is in bytes, not quadwords
269
- static void ser_bigint(Ser *s, const uint64_t *p, size_t n, int sign)
270
- {
271
- if (*s->err)
272
- return;
273
- if (n % 8) {
274
- snprintf(s->err, sizeof(s->err), "bad bigint");
275
- return;
276
- }
277
- w_byte(s, 'Z');
278
- // chop off high all-zero words
279
- n /= 8;
280
- while (n--)
281
- if (p[n])
282
- break;
283
- if (n == (size_t)-1) {
284
- w_byte(s, 0); // normalized zero
285
- } else {
286
- n = 8*n + 8;
287
- w_varint(s, 2*n + (sign < 0));
288
- w(s, p, n);
289
- }
290
- }
291
-
292
297
  // string must be utf8
293
298
  static void ser_string(Ser *s, const char *p, size_t n)
294
299
  {
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniRacer
4
- VERSION = "0.18.1"
5
- LIBV8_NODE_VERSION = "~> 23.6.1.0"
4
+ VERSION = "0.19.0"
5
+ LIBV8_NODE_VERSION = "~> 24.1.0.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_racer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-03 00:00:00.000000000 Z
11
+ date: 2025-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 23.6.1.0
103
+ version: 24.1.0.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 23.6.1.0
110
+ version: 24.1.0.0
111
111
  description: Minimal embedded v8 engine for Ruby
112
112
  email:
113
113
  - sam.saffron@gmail.com
@@ -137,9 +137,9 @@ licenses:
137
137
  - MIT
138
138
  metadata:
139
139
  bug_tracker_uri: https://github.com/discourse/mini_racer/issues
140
- changelog_uri: https://github.com/discourse/mini_racer/blob/v0.18.1/CHANGELOG
141
- documentation_uri: https://www.rubydoc.info/gems/mini_racer/0.18.1
142
- source_code_uri: https://github.com/discourse/mini_racer/tree/v0.18.1
140
+ changelog_uri: https://github.com/discourse/mini_racer/blob/v0.19.0/CHANGELOG
141
+ documentation_uri: https://www.rubydoc.info/gems/mini_racer/0.19.0
142
+ source_code_uri: https://github.com/discourse/mini_racer/tree/v0.19.0
143
143
  post_install_message:
144
144
  rdoc_options: []
145
145
  require_paths: