queueMicrotask
it doesn't crash)process.deferTick
to try & resolve this problemnextTick
today or do they use queueMicrotask
now instead?queueMicrotask
nextTick
(?)nextTick
as an internal thingprocess.deferTick
setImmediate
is significantly later, we should probably document thisnextTick
and queueMicrotask
doesn't work, setImmediate
works but is slowprocessTicksAndRejections
(?)setImmediate
for event emitters returned in a promise/async functionemitDeferredEvent(eventListener, name, value)
? demosfs.createReadableStream
, do we use this new deferred event method?MakeWeak
methodJoyee: use v8's c++ gc library, oilpan, as it can create c++<->js references which v8 knows how to track
Joyee: there are patches which bootstrap this already
Joyee: starting migration plan to make use-after-frees less common
Joyee: oilpan removes the divide of v8 heap vs node heap
Joyee: v8 understands previous case study fine now, no need for annotation of v8 objects for it to understand
Joyee: accidental performance bump for crypto.createHash()
Joyee: entire hashing operation is up to 10% faster, unexpected
Joyee: some blockers due to external memory tracking in heap snapshots and small regressions in some apis which allocate large buffers. probably due to previously underreporting, investigating
Joyee: wip upstream v8 patch to support tracing v8::Data
Robert: will oilpan end up in n-api too?
Joyee: if we do not use it internally, it is difficult to see if it actually works
Joyee: requires a trace-based c++ gc library on user end to hook into it
Joyee: n-api is supposed to be engine-agnostic and not all js engines may provide a gc api like oilpan
Joyee: better use it first internally before any pattern possibly exposed to n-api to make sure they work together
Joyee: we already have a helper in node.h to create a reference which works with node objects creating a reference to a js wrapper from a c++ thing, because it needs a specific layout to work in the same heap
Wes: does anyone else know this?
Joyee: @legendecas (Chengzhong) as well, and addaleax
11:00-11:15 Coffee break
npm test
12:15-13:45 Lunch break
15:00-15:15 Coffee break
Module._*
and Module.prototype._*
would break prople. Official hooks can help us set up boundaries.