rusty_racer 0.1.13 → 0.1.15
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/README.md +13 -8
- data/ext/rusty_racer/Cargo.toml +1 -1
- data/ext/rusty_racer/src/lib.rs +365 -205
- data/ext/rusty_racer/src/marshal.rs +155 -124
- data/ext/rusty_racer/src/ops.rs +410 -272
- data/ext/rusty_racer/src/stack.rs +383 -106
- data/ext/rusty_racer/src/watchdog.rs +8 -2
- data/lib/rusty_racer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2052676ce336d8412181c10d56a95561ed80badd1c2226062ca3dedb2d863136
|
|
4
|
+
data.tar.gz: 64298a10bcd1defc2af1385c56a95d3f61c9c5200667b3d3cf8bd0e12e9ba641
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6a3d5c55a61a3743e0c361e833d2842be76a2f67c6224a7979abe1ec5b5e82ab242c963808d4be860f49e2318807a419140207efca60367cb1d92d90ef3a0f9d
|
|
7
|
+
data.tar.gz: c40ff24e7b8924fa70e51d87a77f797180bbac84c66ef03155daa8c23373ae1369ca8413311edadcfd17ceb00878a10edaf695bffb6e26f2bb26d7feb467e56a
|
data/README.md
CHANGED
|
@@ -252,14 +252,19 @@ In-thread V8 runs on whatever stack the calling Ruby code is on — including a
|
|
|
252
252
|
**Fiber**'s separate stack (a plain `Enumerator` is a Fiber, so this is common:
|
|
253
253
|
`Capybara::Result#find`, lazy enumerators, …). This works on the **main thread**,
|
|
254
254
|
where the process stack is the highest address and every Fiber sits below it.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
main thread
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
255
|
+
That includes a Fiber entered *underneath* a running JS call — a host function
|
|
256
|
+
that resumes a Fiber which evals again — since each operation describes its own
|
|
257
|
+
stack to V8 and restores the enclosing one when it returns.
|
|
258
|
+
|
|
259
|
+
On a **non-main thread** it does not. V8 decides "is this the central stack?" by
|
|
260
|
+
testing the stack pointer against a window that ends at the thread's native stack
|
|
261
|
+
top — a pthread value it caches, with no API to retarget on POSIX. Only the
|
|
262
|
+
window's *lower* edge follows the per-operation stack limit, so a Fiber allocated
|
|
263
|
+
*above* that top — the usual case off the main thread, whose own stack sits below
|
|
264
|
+
later Fiber mmaps — is outside the window whatever we do, and V8 aborts the
|
|
265
|
+
process on the next GC or thrown exception. So **don't call into an isolate from
|
|
266
|
+
inside a Fiber on a worker thread**; drive isolate ops directly on the thread, or
|
|
267
|
+
keep Fiber/Enumerator-mediated JS calls on the main thread.
|
|
263
268
|
|
|
264
269
|
## Installation
|
|
265
270
|
|