Because of the way The Ruby Racer handled references for Ruby objects embedded into V8, where JavaScript is the only runtime that holds a reference, there many GC edge cases that were hard to get right. This lead to persistent instabilities relating to memory and garbage collection.
Because of the way The Ruby Racer handled references for Ruby objects embedded into V8, where JavaScript is the only runtime that holds a reference, there many GC edge cases that were hard to get right. This lead to persistent instabilities relating to memory and garbage collection.
Newer versions of V8 make this easier to track by letting the embedder do book-keeping at the both the
Isolate
andContext
levels, so that https://github.com/cowboyd/therubyracer/pull/348 his able to handle these issues.Create a testcase and verify that the following tickets are resolved by https://github.com/cowboyd/therubyracer/pull/348
https://github.com/cowboyd/therubyracer/issues/153 https://github.com/cowboyd/therubyracer/issues/169 https://github.com/cowboyd/therubyracer/issues/176 https://github.com/cowboyd/therubyracer/issues/187 https://github.com/cowboyd/therubyracer/issues/201 https://github.com/cowboyd/therubyracer/issues/206 https://github.com/cowboyd/therubyracer/issues/260 https://github.com/cowboyd/therubyracer/issues/265 https://github.com/cowboyd/therubyracer/issues/274 https://github.com/cowboyd/therubyracer/issues/345 https://github.com/cowboyd/therubyracer/issues/330 https://github.com/cowboyd/therubyracer/issues/328 https://github.com/cowboyd/therubyracer/issues/326 https://github.com/cowboyd/therubyracer/issues/320 https://github.com/cowboyd/therubyracer/issues/317 https://github.com/cowboyd/therubyracer/issues/316 https://github.com/cowboyd/therubyracer/issues/309 https://github.com/cowboyd/therubyracer/issues/300 https://github.com/cowboyd/therubyracer/issues/299