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 +4 -4
- data/CHANGELOG +3 -0
- data/ext/mini_racer_extension/mini_racer_extension.c +17 -4
- data/ext/mini_racer_extension/serde.c +30 -25
- data/lib/mini_racer/version.rb +2 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5923ad9b3aa9cdea7785f0f2eb3fa27357217d0feb5ed439dad46b5ea7eaea8f
|
4
|
+
data.tar.gz: ffac8a1b740c74467f40e0200730a3fe25892d63105022f8775fe8aaffdcdd20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f8ab9852328121e3d55119fb1a2a8a875806b0a256d2c79ab09846fe2ed7df174beb68949213057fe8186376b73993b21dc21fe22ce82632f26e0a4354c982e
|
7
|
+
data.tar.gz: 88c0a37a5a26ab746312c76499a202578a0604098a1ec3fcf7b98110aace6facd95490b19bd0f6abb8afba136b9ae94f5f1367d55050d6abdcf62bd628d6b8f2
|
data/CHANGELOG
CHANGED
@@ -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
|
-
|
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
|
-
|
624
|
-
|
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
|
-
|
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
|
{
|
data/lib/mini_racer/version.rb
CHANGED
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.
|
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-
|
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:
|
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:
|
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.
|
141
|
-
documentation_uri: https://www.rubydoc.info/gems/mini_racer/0.
|
142
|
-
source_code_uri: https://github.com/discourse/mini_racer/tree/v0.
|
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:
|