mini_racer-csim 0.21.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8c0d4cbd8123f6177c8411ad1d9e32ff4e8a1a0de0515eb5f030672dd11f3f44
4
+ data.tar.gz: faba5c80bf42ca1638d37c20f5f7849cd406e10fe5f00bc926fd696824237cdf
5
+ SHA512:
6
+ metadata.gz: c0d8f9dcc469cd52b999e31e2c677a205aabe343804b70990a7978b2302d2df505c595a38b5de1db16e70358fabea42c950f2ff3b2509f9a94f87f178b0df229
7
+ data.tar.gz: 5dc7c4ff2147e0a8815eb63d024350db82b2eaade805bb8c5d4834deff7a950a8f44b73cb9d3943f948ce1fda51c82aba464f2384a4e333c5bcfbabad5f6ca6c
data/CHANGELOG ADDED
@@ -0,0 +1,351 @@
1
+ - (Unreleased)
2
+ - Add `Context#perform_microtask_checkpoint` to synchronously drain the V8 microtask queue, useful for spec-compliant `dispatchEvent` sequencing inside Ruby callbacks
3
+ - Expose V8 ScriptCompiler::CachedData via Context#compile / MiniRacer::Script (#411)
4
+ - script = ctx.compile(src, filename:, cached_data:, produce_cache:) → Script handle
5
+ - script.run replays compiled bytecode without re-parsing
6
+ - script.cached_data persists V8's per-script bytecode cache when produce_cache: true
7
+ - script.cache_rejected? reports source/version mismatches
8
+ - MiniRacer::V8_CACHED_DATA_VERSION_TAG for cache-key invalidation
9
+ - produce_cache defaults to false; passing true from inside a host-fn callback raises (V8's CreateCodeCache corrupts parser state when re-entered, so warm the cache from the top level)
10
+ - Cross-process reuse requires both processes to load byte-identical snapshot data via Snapshot#dump / Snapshot.load (Snapshot.new(src) is non-deterministic) and is incompatible with Platform.set_flags!(:single_threaded) (V8 embeds per-process state in the blob under single-threaded mode)
11
+ - TruffleRuby shim falls back to source replay (no equivalent in GraalJS)
12
+ - Add ES module API via `Context#compile_module` / `MiniRacer::Module` (#421): `compile_module(source, filename:)` returns a Module handle bound to the Context (and exposes `filename` to the module as `import.meta.url`); `Module#instantiate { |specifier, referrer_url| ... }` walks static imports via a Ruby-side resolver block (the referrer URL is the importing module's filename, so relative specifiers can be resolved); `Module#evaluate` runs the module body; `Module#namespace` returns the Module Namespace Object as a Hash; `Module#status` exposes V8's lifecycle state; `Module#dispose` / `Module#disposed?` mirror `Script`'s eager handle release. `Context#dynamic_import_resolver=` handles JS `import(...)` expressions (resolver receives specifier + referrer URL, returns a `MiniRacer::Module`; the loaded module is evaluated if pending). Top-level await is not supported in this round (evaluate raises if the evaluation promise stays pending). The TruffleRuby shim raises `NotImplementedError`.
13
+ - Add an opt-in JavaScript host namespace via `Context.new(host_namespace:)` (à la Deno's `Deno`/Bun's `Bun`); when enabled it exposes `<namespace>.drainMicrotasks()`, an inline (no Ruby round-trip) microtask checkpoint for draining between synchronous JS operations
14
+
15
+ - 0.21.1 - 25-05-2026
16
+ - Run `:single_threaded` V8 dispatches on a reusable mini_racer-owned native thread so V8 does not execute on Ruby-owned threads
17
+ - Stop and join the reusable `:single_threaded` runner when contexts are disposed
18
+ - Document `:single_threaded` fork-safety requirements for pre-fork contexts
19
+
20
+ - 0.21.0 - 16-04-2026
21
+ - Add MiniRacer::Binary for returning Uint8Array to JavaScript from attached Ruby callbacks
22
+
23
+ - 0.20.0 - 24-02-2026
24
+ - Add Snapshot.load to restore snapshots from binary data, enabling disk persistence
25
+
26
+ - 0.19.2 - 24-12-2025
27
+ - upgrade to node 24.12.0
28
+
29
+ - 0.19.1 - 20-10-2025
30
+ - JS code can now catch ruby exceptions - Ben Noordhuis
31
+ - Retain string encoding when raising exceptions - Ben Noordhuis
32
+ - Fix object identity bug with Ruby to JS conversion - Benjamin Wood
33
+
34
+ - 0.19.0 - 24-06-2025
35
+ - upgrade to node 24.1.0
36
+
37
+ - 0.18.1 - 03-04-2025
38
+ - Convert round doubles to fixnum for very big floats - this has better parity with JavaScript - Ben Noorhuis
39
+
40
+ - 0.18.0 - 05-03-2025
41
+ - Time for a major release
42
+ - Handle ActiveSupport TimeWithZone objects during serialization - Sam Saffron
43
+
44
+ - 0.18.0.pre1 - 06-02-2025
45
+ - Updated to node 23.6.1.0
46
+
47
+ - 0.17.0.pre13 - 04-02-2025
48
+ - Only issue idle GC once post dispatch - reduces CPU usage for auto cleanup - Sam Saffron
49
+
50
+ - 0.17.0.pre12 - 23-01-2025
51
+ - Corrected off-by-one error with object serialization - Ben Noordhuis
52
+
53
+ - 0.17.0.pre11 - 21-01-2025
54
+ - Corrected encoding bug with deserialization of strings - Ben Noordhuis
55
+
56
+ - 0.17.0.pre10 - 20-01-2025
57
+ - Added back support for partially deserialized objects (objects that do not translate across boundaries are returned as Error properties) - Ben Noordhuis
58
+
59
+ - 0.17.0.pre9 - 13-01-2025
60
+ - For backwards compatibility convert v8 return values to UTF-8 (invalidly encoded string still get returned using V8 encoding)
61
+
62
+ - 0.17.0.pre8 - 11-01-2025
63
+ - Fix handling of UTF 32 LE and Ascii encoding strings - Ben Noordhuis
64
+ - Handle rare edge case in V8 serialization - Ben Noordhuis
65
+
66
+ - 0.17.0.pre7 - 10-01-2025
67
+
68
+ - Objects containing non serializable properties will return an Error object vs raising an exception. Ben Noordhuis
69
+ - Truffle support was added back Eregon
70
+
71
+ - 0.17.0.pre6 - 08-01-2025
72
+
73
+ - Moved all mini_racer interaction with v8 to a dedicated native thread to avoid cross VM stack contamination. Ben Noordhuis
74
+
75
+ - 0.17.0.pre5 - 30-09-2024
76
+
77
+ - Handle segfault from JSON.stringify
78
+ - Fix segfaults around symbol conversion
79
+ - Fix crash on invalid date object
80
+
81
+
82
+ - 0.17.0.pre4 - 18-09-2024
83
+
84
+ - Attempt to change compilation flags to disable strict aliasing to see if it resolves stability issues
85
+
86
+ - 0.17.0.pre3 - 15-09-2024
87
+
88
+ - Text clang based Linux v8 build, in case there is an edge case with GCC compilation
89
+
90
+ - 0.17.0.pre2 - 09-09-2024
91
+
92
+ - Test build to see if disabling Maglev optimisations resolves segfault issues
93
+
94
+ - 0.17.0.pre - 05-09-2024
95
+
96
+ - Test build to see if disabling concurrent GC marking resolves segfault
97
+
98
+ - 0.16.0 - 05-09-2024
99
+
100
+ - Sadly still seeing segfaults, reverted back 18.19.0.0
101
+
102
+ - 0.15.0 - 05-09-2024
103
+
104
+ - Use libv8-node 22.7.0 - this corrects issues with multithreaded behavior and forking in single threaded mode.
105
+
106
+ - 0.14.1 - 14-08-2024
107
+
108
+ - No longer use mini_racer_loader if LD_PRELOAD is defined and adds a malloc provider. This resolves segfaults when people LD_PRELOAD jemalloc or tcmalloc.
109
+
110
+ - 0.14.0 - 06-08-2024
111
+
112
+ - Node 22.5.1.0 is not stable in production, reverting to last known good build
113
+
114
+ - 0.13.0 - 29-07-2024
115
+
116
+ - Target Node to 22.5.1.0 0 - corrects segfault in earlier release
117
+ - Remove Ruby 3.0 which is EOL (use ealier version of gem if needed)
118
+
119
+ - 0.9.0 - 25-03-2024
120
+
121
+ - Target Node to 18.19.0.0
122
+
123
+ - 0.8.0 - 29-05-2023
124
+
125
+ - Target Node to 18.16.0.0
126
+ - Drop supporting EOL'd Ruby 2.7
127
+
128
+ - 0.7.0 - 26-05-2023
129
+
130
+ - Target Node to 17.9.1.0
131
+
132
+ - 0.6.4 - 25-05-2022
133
+
134
+ - Target Node 16.19.0.0
135
+
136
+ - 0.6.3 - 16-08-2022
137
+
138
+ - Truffle ruby support! Thanks to Brandon Fish and the truffle team
139
+ - Hide libv8 symbols on ELF targets
140
+ - Slightly shrunk binary size
141
+ - Simplified timeout implementation
142
+ - Some stability fixes
143
+
144
+ - 17-01-2022 - 0.6.2
145
+
146
+ - Fix support for compilation on 2.6, llvm compiles
147
+ - Stability patches to handle rare memory leaks
148
+ - Corrected re-raising of exceptions to support strings
149
+ - During early termination of context under certain conditions MiniRacer could crash
150
+
151
+ - 0.6.1 - 31-12-2021
152
+
153
+ - Added support for single threaded platform: `MiniRacer::Platform.set_flags! :single_threaded`
154
+ must be called prior to booting ANY MiniRacer::Context
155
+
156
+ - 0.6.0 - 11-04-2021
157
+
158
+ - Ruby 3.1 support
159
+ - Fixes memory leak in heap snapshotting
160
+ - Improved compilation ergonomics in clang
161
+ - Migrated internal storage in c extension to TypedData
162
+
163
+
164
+ - 0.5.0
165
+
166
+ - Fixes issues on aarch (Apple M1)
167
+ - Update to use libv8-node 16.x (#210) [Loic Nageleisen]
168
+ - FEATURE: Configurable max marshal stack depth (#202) [seanmakesgames]
169
+ - Ruby 2.3 and 2.4 are EOL, we no longer support them
170
+
171
+ - 0.4.0 - 08-04-2021
172
+
173
+ - FEATURE: upgrade to libv8 node 15.14.0 (v8 8.6.395.17)
174
+ - Promote 0.4.0.beta1 to release, using libv8-node release path
175
+
176
+
177
+ - 0.4.0.beta1 - 23-07-2020
178
+
179
+ - FIX: on downgrade mkmf was picking the wrong version of libv8, this fix will correct future issues
180
+ - FEATURE: upgraded libv8 to use node libv8 build which supports M1 and various ARM builds v8 moved to (8.6.395.17)
181
+
182
+
183
+ - 0.3.1 - 22-07-2020
184
+
185
+ - FIX: specify that libv8 must be larger than 8.4.255 but smaller than 8.5, this avoids issues going forward
186
+
187
+ - 0.3.0 - 29-06-2020
188
+
189
+ - FEATURE: upgraded to libv8 version 8.4.255.0
190
+
191
+
192
+ - 0.2.15 - 15-05-2020
193
+
194
+ - FEATURE: basic wasm support via pump_message_loop
195
+
196
+
197
+ - 0.2.14 - 15-05-2020
198
+
199
+ - FIX: ensure_gc_after_idle should take in milliseconds like the rest of the APIs not seconds
200
+ - FEATURE: strict params on MiniRacer::Context.new
201
+
202
+
203
+ - 0.2.13 - 15-05-2020
204
+
205
+ - FIX: edge case around ensure_gc_after_idle possibly firing when context is not idle
206
+
207
+
208
+ - 0.2.12 - 14-05-2020
209
+
210
+ - FEATURE: isolate.low_memory_notification which can force a full GC
211
+ - FEATURE: MiniRacer::Context.new(ensure_gc_after_idle: 2) - to force full GC 2 seconds after context is idle, this allows you to conserve memory on isolates
212
+
213
+
214
+ - 0.2.11
215
+
216
+ - FIX: dumping heap snapshots was not flushing the file leading to corrupt snapshots
217
+ - FIX: a use-after-free shutdown crash
218
+
219
+ - 0.2.10 - 22-04-2020
220
+ - FEATURE: memory softlimit support for nogvl_context_call
221
+
222
+ - 0.2.9 - 09-01-2020
223
+
224
+ - FIX: correct segfault when JS returns a Symbol and properly cast to ruby symbol
225
+
226
+ - 0.2.8 - 11-11-2019
227
+
228
+
229
+ - FIX: ensure thread live cycle is properly accounter for following file descriptor fix
230
+
231
+ - 0.2.7 - 11-11-2019
232
+
233
+ - FIX: release the file descriptor for timeout pipe earlier (this avoids holding too many files open in Ruby 2.7)
234
+
235
+ - 0.2.6 - 14-05-2019
236
+
237
+ - FEATURE: add support for write_heap_snapshot which helps you analyze memory
238
+
239
+ - 0.2.5 - 25-04-2019
240
+
241
+ - FIX: Compatibility fixes for V8 7 and above @ignisf
242
+ - FIX: Memory leak in gc_callback @messense
243
+ - IMPROVEMENT: Added example of sourcemap support @ianks
244
+ - URGENT: you will need this release for latest version of libv8 to work
245
+
246
+ - 0.2.4 - 02-11-2018
247
+
248
+ - FIX: deadlock releasing context when shared isolates are used
249
+ - FEATURE: include js backtrace when snapshots do not compile
250
+
251
+ - 0.2.3 - 28-09-2018
252
+
253
+ - Drop all conditional logic from Mini Racer compilation for clang, always
254
+ rely on MacOS being High Sierra or up
255
+
256
+ - 0.2.2 - 26-09-2018
257
+
258
+ - WORKAROUND: RUBY_PLATFORM is hardcoded on Ruby compile and can not be
259
+ trusted for feature detection, use a different technique when checking for
260
+ macOS Mojave
261
+
262
+ - 0.2.1 - 25-09-2018
263
+
264
+ - FEATURE: Mojave macOS support
265
+
266
+ - 0.2.0 - 06-07-2018
267
+
268
+ - FEATURE: context#call to allow for cheaper invocation of functions
269
+ - FIX: rare memory leak when terminating a long running attached function
270
+ - FIX: rare segfault when terminating a long running attached function
271
+ - FIX: Reimplement Isolate#idle_notification using idle_notification_deadline, API remains the same @ignisf
272
+ - Account for changes in the upstream V8 API @ignisf
273
+ - Support for libv8 6.7
274
+
275
+ - 0.1.15 - 23-08-2017
276
+
277
+ - bump dependency of libv8 to 6.3
278
+
279
+ - 0.1.14 - 23-08-2017
280
+
281
+ - libv8 erroneously bumped to beta, reverted change
282
+
283
+ - 0.1.13 - 23-08-2017
284
+
285
+ - Fix: amend array buffer allocator to use v8 6.0 compatible allocator @ignisf
286
+
287
+ - 0.1.12 - 18-07-2017
288
+
289
+ - Feature: upgrade libv8 to 5.9
290
+ - Fix: warning when running with ruby warnings enabled (missed @disposed initialize)
291
+
292
+ - 0.1.11 - 18-07-2017
293
+
294
+ - Feature: upgrade libv8 to 5.7
295
+
296
+
297
+ - 0.1.10 - 13-07-2017
298
+
299
+ - Fix leak: memory leak when disposing a context (20 bytes per context)
300
+ - Feature: added #heap_stats so you can get visibility from context to actual memory usage of isolate
301
+ - Feature: added #dispose so you reclaim all v8 memory right away as opposed to waiting for GC
302
+ - Feature: you can now specify filename in an eval eg: eval('a = 1', filename: 'my_awesome.js')
303
+
304
+
305
+ - 0.1.9 - 09-03-2017
306
+
307
+ - Perf: speed up ruby/node boundary performance when moving large objects
308
+
309
+ - 0.1.8 - 06-02-2017
310
+
311
+ - Fix: Include math.h to fix use of undeclared identifier floor with rbx. See #51
312
+
313
+ - 0.1.7 - 02-11-2016
314
+
315
+ - Fix: if for some reason an isolate was forked don't free it and raise a warning instead to avoid hanging process
316
+
317
+ - 0.1.6 - 25-10-2016
318
+
319
+ - Fix: timeout behavior was incorrect, in some cases stop could be called on already stopped contexts
320
+
321
+ - 0.1.5 - 10-10-2016
322
+
323
+ - Support for snapshots, shared isolates, runtime flags thanks to @wk8
324
+ - Fix timeout behavior when it occurs in an attached Ruby method
325
+
326
+ - 0.1.4 - 19-05-2016
327
+
328
+ - Set upper bound for libv8 inclusion @ignisf
329
+ - Support conversion of Date, Time and DateTime from Ruby to JS @seanmakesgames
330
+ - Support conversion of large numbers back from Ruby to JS @seanmakesgames
331
+
332
+ - 0.1.3 - 17-05-2016
333
+
334
+ - Support more conversions from Ruby back to JS (Hash, Symbol, Array)
335
+ - Support attaching nested objects
336
+
337
+
338
+ - 0.1.2 - 17-05-2016
339
+
340
+ - Gemspec specifies minimal version of Ruby (2.0)
341
+ - Implement #load on Context to load files
342
+
343
+
344
+ - 0.1.1
345
+
346
+ - Added unblock function so SIGINT does not lead to a crash
347
+
348
+
349
+ - 0.1.1.beta.1 - 14-05-2016
350
+
351
+ - First release
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at sam.saffron@gmail.com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016-2019, the mini_racer project authors.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.