►
From YouTube: Node.js Node-API Team Meeting 2021-04-02
Description
No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).
A
Hello,
everybody
and
welcome
to
the
april
2nd
meeting
of
the
node
api
working
group.
We're
gonna
do
the
usual
thing
today,
but
before
we
do
that,
if
anybody
has
any
announcements,
then
please
share.
A
B
A
Okay,
so
here
we
go
milestone,
milestone,
11.,
all
right,
renaming
api
or
an
api
to
know
the
api.
Do
we
have
any
any
news
on
this
front?
I
don't
know
jim
is
not
here
today,
so
I
don't
know
if
anybody
else
has
done
anything
on
the
front.
If
not,
then.
A
Oh
yeah,
it's
a
good
idea
all
right.
So
if
not,
then
let's
move
on.
B
Yeah
we
merged
both
the
pr
that
we
we
made
and
yeah
for
another
done
api.
We
are
okay
with
the
the
image.
C
Yeah
so.
A
A
A
D
A
It's
still
there,
let's
see,
okay,
so
that
was
this
guy
all
right.
Stale
issues
have
we
had
any
more.
A
No,
we
haven't
all
right
tracking
issues
for
modules.
We've
noticed
are
ported.
I
don't
think
there's
been
anything
new,
but
if
you
oh
wait,
oh
yeah,
this
is
still.
This
is
still
the
same
report
from
you
nick
all
right.
Well,
let's.
A
Oh
man,
we're
still
not
back
to
4
million
what
all
right.
Well,
it
is
what
it
is.
They
don't
have
the
graph
strange,
maybe
they're,
updating
it
or
something.
Oh,
no!
Yes
there!
It
is
just
take
me.
It
takes
me
a
while
with
my
internet
connection,
all
right.
Well,
we're
not
doing
poorly.
So
that's
great!
A
Equally
nope,
okay,
all
right
yeah!
It's
it's
been
a
really
busy
week,
at
least
for
me,
but
let's
see
debug
testing.
That's
on
michael
we'll
wait
for
him
for
next
week:
module
owner
issues,
let's
see
if
we
have
any
new
ones.
A
D
There
has
been
some
discussion
on
that
error,
throw
as
javascript
exception
on
node
add-on,
api,
okay,.
A
Yeah
yeah
yeah
yeah,
but
I
could
use
some
help
with
the
actual
issue.
Number
yeah.
D
A
Okay,
so
wait
a
minute
fix
a
crashing
issue,
all
right,
let's
see
what
which
fix,
because,
unfortunately,
we
have
several
right,
yeah,
exactly
yeah.
This
is
also
michael's
idea
right
and
then
the
test
right.
D
Okay,
so
what
we
ended
up
last
week
saying
is
that
we
were
going
to
have
a
compiler
flag
like
a
define
or
whatever,
to
say
whether
it
would
remain
to
have
the
old
behavior
of
crashing
or
in
the
new
behavior
of
swallowing
the
exception.
E
E
A
But
the
the
idea
to
to
have
this,
this
terminating
flag
is
not
a
bad
one,
because
because
because
that
would
give
us
the
opportunity
to
distinguish,
however,
the
I
don't
know
if,
if
they
intended
this
terminating
to
be
a
static,
variable
or
or
an
instance
variable,
because
both
options
have
downsides.
If
it's
a
static
variable,
then
it's
it's
not
thread
safe
and
if
it's
an
instance
variable
then
then
the
instance
isn't
really
substantial.
Like
you
know,
we
don't
have
one
instance
per
environment.
A
E
A
D
A
Yeah,
because,
like
think
about
it,
when,
when
when
when
and
when
the
core
calls
a
callback
right
it
it
gets
a,
it
adds
a
a.
What
does
it
get
an
api
end
and
it
gets
an
api
callback
info
right
right.
E
A
So
when,
when
when
control
reaches
know
that
on
api,
we
simply
construct
an
api
call
and
call
an
end
object
from
whatever
we
get
right.
So
we
don't
reuse
the
same
object
because.
D
Right,
could
it
be
then,
a
flag
on
the
underlying
in
nappy
environment?
We
get,
can
happy.
D
A
The
the
the
instance
data
anymore
right,
we've
we've
it's
all
I
I
could
almost
say
that
it's
overbooked
as
it
is.
You
know
right,
but
yeah.
We,
we
definitely
can't
use
that.
A
A
Yeah,
I
think
I
think
yeah
I.
I
honestly
think
that
that
this
needs
to
be
fixed
in
core,
and
I
think
the
solution
that
that
michael
suggested,
which
is
to
have
a
flag
on
the
environment
that
you
can
set
during
startup.
That
says,
I
want
the
more
expressive
status
codes.
I
think
that's
the
way
to
go,
and
then
we
can
go
from
there
and
and
see
see
how
the
solution
evolves,
but
that
is
the
fundamental
runtime
api,
stable
solution.
Like
you
know,
you
opt
in
at
runtime
for
like
you're,
basically
saying
at
runtime.
A
Right
because
that
means
you
are
ready
at
runtime
to
to
to
accept
the
new
status
codes
so
yeah,
it's
that
that's
a
pr
against
core
and
I
haven't
had
a
chance
to
write
it.
It
it
shouldn't,
be
too
complicated,
but
it
needs
to
be
done
so
so
that
that's
where
that's
where
this
is,
I
don't
know
do
we
have
a
pointer
here
too.
A
A
A
I
wish
I
could
link
to
the
solution
yeah.
It
needs
to
be
done
in
core.
Okay,
all
right.
This
should
be
sufficient
holy
cow.
What
the
heck,
let's
just
render
really
strangely
for
a
second
there,
all
right,
so
we've
got
that
all
right.
Let's
see!
Okay,
we
have
a
bunch
of
tests
to
review
jack.
You've
been
you've
been
really
productive.
Thank
you
for
that.
We'll
try
to
get
to
all
of
them.
Meanwhile,
are
you
stuck
on
anything?
Is
there
anything
that
you
need
help
with.
F
Not
not
particularly
stockpile
just
like.
I
was
just
like
a
question
about
like
how
we
run
our
tests
like
when
we
write
something
we
like
when
we
write
like
or
making
channing
changes.
The
test
we
run
like
mprm
npm,
run
tests
under
the
root
folder
to
basically
run
through
everything
like.
Is
there
a
way
to
just
like
selectively
like
okay?
I
just
want
to
run
like
let's
say
like
object
test
suites
or
like
I
just
want
to
run
external
tests.
A
On
yeah
not
easily,
no,
we
don't
have
a
mechanism
for
that.
If
you
want
to,
if
you
want
to
propose
one
and
create
one,
then
by
all
means,
because
it
would
be
very
useful,
but
generally
generally
there's
no
good
way
except
you
know
to
to
to
just
have
like
the
things
commented
out,
and
so
you
and
you
need
to
do
that
in
several
places.
A
Depending
so
you
know,
one
one
step
would
be
to
just
comment
out
the
list
or
you
know,
comment
out
parts
of
the
list
in
like
test
slash
index.js,
but
that
will
still
cause
all
the
tests
that
you
don't
end
up
running
to
be
built
right.
Yeah,.
E
A
The
sub
objects
to
be
created
and
that
you
may
or
may
not
want
right,
because,
unfortunately,
our
tests
are
not
orthogonal,
especially
since,
since
all
the
sub-objects
are
inside
the
same
so
right,
sometimes
the
tests
interfere
with
one
another,
so
you
may
want
to
intentionally
still
build
them,
but
not
run
them.
A
However,
if
you
do
not
wish
to
build
them
either,
then
you
need
to
comment
out
all
the
init
this
in
it
that
in
it
the
other
thing
functions
and
the
calls
to
them,
and
then
you
know,
then
they
won't
even
get
built.
Okay,
oh
and
as
if
that's
not
enough,
if
you
do
not
wish,
because
you
know
they
they
will
still
get
compiled,
but
they
will
get
sort
of
not
linked
because
they're
not
being
called
from
anywhere
right
so
so
like.
A
If
you
comment
out
the
init
you're
still
building
all
the
files
and
then
the
linker
says:
nope,
don't
want
you
don't
want!
You
don't
want
you,
so
that's
kind
of
a
waste
of
of
cycles
right.
So
then,
the
third
step
you
need
to
do
is
to
do
the
same
thing
in
bindings.jib
and
and
then,
and
only
then
will
you
have
the
tests
that
you
want
and
nothing
else
so
yeah.
It's
it's
not
super
simple.
A
I
I
don't
know
if
you
can
capture
this
level
of
granularity
with
any
sort
of
scripting
mechanism,
but
you
could,
with
like
environment
variables
and
like
even
npm
config
like,
for
example,
you
could
do
like
npm
test,
minus
minus
and
then
a
list
of
tests
right
and
then
you
could
write
a
script
that
that
that
creates
a
bunch
of
like
npm
config
variables,
which
you
can
check
from
binding,
jip
and
then
and
then
have
have
like
a
myriad
conditions,
one
for
each
test.
A
That
says
you
know:
sources
equals
whatever
it
was
plus
this
stores.
You
know
so
it's
possible
and
if,
if
you
feel
there's
value
in
it,
then
then
please
by
all
means
have
a
look
at
it
because
it
it
would
be
useful.
I
think
in
many
cases.
D
Okay:
okay,
one
thing
that
I
also
wanted
to
mention
is
that
sometimes
you
can
just
run
the
specific
javascript
file
inside
the
test
directory,
so
yeah
and.
A
B
A
F
A
All
right,
okay,
so
issues
issues,
issues,
yeah.
B
B
Michael
michael
proposes
to
create
two
new
release:
the
last
three
dot
x,
release
for
the
for
for
april
before
before
the
end
of
life,
one
or
just
a
and
yeah,
then
the
the
the
new
release
in
may
yeah,
where
we
removed
the
support
for
former
js8.
B
So
I
want
to
know
what
do
we
need
to
to
keep
in
in
the
release
3?
And
what
do
we
need
to
remove
in
four.
A
So
so,
let's
see
here
in
I
mean,
are
we
gonna
make
four
like
a
like
a
breaking
release?
I
mean
yes,
it's
somewhere
major,
but
it
does
not
necessarily
need
to
break
anything
like
do.
We
have
any
any
sort
of
pending
things
I
mean
we
can
always
look
at
the
deprecated
stuff
right.
A
Right
so
these
accessors
yeah,
okay,
these
these
accessories
that
have
memory
leaks
yeah.
I
guess
this
is
a
good
candidate
right
because
I
mean
all
of
these
leak
memory
intentionally
kind
of
so
you
know
this
would
be
like
for
for
any
any
given
major
release,
just
removing
an
api.
It
will
deprecated
is
good,
but
let
me
see.
D
Would
we
need
to
make
a
a
really
saying
that
we
will
remove
it
or
is
the
fact
that
we
say
that
it
is
deprecated
enough
to
give
people
enough
warning?
Because
it's
been
deprecated
for
a
long
time,
long
long
long
long
time?
But
I
believe
it
is
still
being
used,
because
I
vaguely
remember
a
an
issue
that
tobias
created
recently
to
update
the
documentation
on
those.
D
D
I
don't
know
if
it's
worth
and
that
I
don't
even
know
if
that
means
he's
still
using
it.
Maybe
he's
just
looking
at
the
docs.
I
don't
know,
but
if
we
do,
we
have
to
give
an
explicit
warning
to
say
this
is
being
removed
or
is
the
deprecating
the
deprecation
fact
enough
for
sember
to
say
that
we'll
remove
it
at
four
is
my
question
then
yeah.
D
And
then
I
guess
we
have,
we
can
decide
for
the
the
error
exception.
Throne
fix
whether
that
should
house
it
yeah.
A
A
A
D
B
I
think
that
if
we
have
a
flag
and
our
developer
can
decide
what
they
want
to
use,
it's
only,
but
for
me
have
these
in
both
in
three
and
in
four.
D
So
then,
okay,
I
can
try
working
on
that
solution.
Then,
and
hopefully
we
can
get
this
done
by
to
have
it
out
for
both
of
those.
D
That
makes
sense.
Sorry,
I'm
kind
of
talking
about
two
different
things:
there's
that
not
be
deprecated
and
then
this
the
902
fix.
B
That,
if
that
should
be
nine
zero
six,
the
issue
that
refers
to
the
nine-
I
don't
know
because
my
goal
in
this
issue
set
the
issue
906
before
as
requirements
to
create
the
the
new
new
new
release.
So
I
don't
know
what
is
the
906.
A
Oh
yeah,
right
yeah,
it's
interesting.
I
I
ran
I
I
ran,
I
I
think,
against
the
latest
node.js
and
I
haven't
seen
a
single
failure,
but
I
have
seen
a
hang
in
in
asting
progress
worker.
A
So
if
you
just
run,
if
you
just
run
no
test
in
a
loop
like
while
true
semicolon
do
npm
test
semicolon
done
like
from
the
command
line,
then
sooner
or
later
it
will
hang
so
we
do
have,
and-
and
so
that
hang
also
happened
on
on
on
the
ci,
when
I
was
trying
to
land
one
of
the
pr's
and
I
had
to
restart
the
job,
I
had
to
stop
the
job
and
restart
the
job
because
it
hung
so
so
yeah
we
do
have
an
issue
and-
and
it
is
with
threats-
a
function
because
I
believe
acing
progress
worker
is
implemented
using
threat
safe
function.
A
So
it's
it.
I'm
I'm
I'm
assuming
it's
in
the
way.
It's
it's
the
threats.
A
function
is
used
rather
than
in
the
way
it
is
written,
but
we
would
have
to.
We
would
have
to
be
able
to
tell
for
sure,
because
I
mean
there
may
well
have
to
be
a
fixing
core
if,
if
not
in
an
api,
know
that
on
api
alone,
so
yeah-
I
I
haven't
gotten
to
the
bottom
of
that
yet,
except
to
reproduce
the
the
hang
edge
so
by
my
next
step.
A
If
and
when
I
have
time,
for
it
would
be
to
just
add,
like
print
devs
to
all
the
all
the
core
functions
when
they
enter
when
they
exit
and
then
hope
hope
that
the
act
of
adding
the
printf
doesn't
change
the
timing
in
such
a
way
that
it
doesn't
happen
anymore.
So
because
you
know
these
these
deadlocks,
they
tend
to
be
like
heism
bugs
you
look
at
them.
They
disappear.
A
A
That's
that's
where
that's
at
so,
but
I
mean
here
it's
talking
about
crashes
right
so
like
I'm,
I'm
not
a
hundred
percent
sure.
A
If,
if
any
of
these
are
fixed,
it
looked
to
me
that
they
were
fixed,
because
I
I
didn't
see
any
crashes
when,
when
I
ran
with
with
like
the
the
branch
of
of
core,
where
we
have
all
the
ref
fixes,
which
I
think
is
master
and
soon
to
be
14,
though
I
don't
know
if,
if
lucas
had
a
chance
to
to
to
take
a
look
at
at
the
branch
but
we'll
get
to
that
later
so
yeah.
I
I.
A
It
might
be
worth
continuing
this
discussion
before
before
we
before
we
decide
what
to
put
and
what
not
to
put
in
a
release
but
yeah.
Let
me
let
me
mention
that
in.
A
A
There
we
go
okay,
anything
else
related
to
releases,
because
it's
good
to
it's
good,
to
record
everything
here
and
then
we'll
have
we'll
have
guidance
for
how
and
when
to
release.
A
A
B
B
Oh
okay,
I
don't,
I
didn't
understand
what
he
wouldn't
so.
D
D
Go
like
oh
he's
like
he
wants
to
have
some
way
to
maybe
object,
wrap
and
inherit,
or
something
but
or
like
this
specifically,
because
I
had
originally
thought
it
was
like.
Oh
maybe
he
wants
to
inherit
from
the
javascript
side,
which
was
going
back
to
how
you
created
that
napi
defined
subclass
or
whatever,
but
that's
a
different
use
case
than
this.
A
Well,
okay,
this
tells
me
this
tells
me
that
that
that
they're
doing
improper
inheritance,
meaning
meaning
that
they
are
doing
nappy
defined
class
for
the
super
class
and
the
same
thing
for
the
subclass
and
and
they
are
expecting
that
a
call
to
the
javascript
to
a
javascript
object
will
pass
through
to
the
subclass
right,
but
but
the
the
this
value
ends
up
being
an
instance
of
the
superclass
and
because
because
on
the
on
the
native
side,
they
are
not
related.
A
You
get.
An
illegal
invocation
is
this.
This
is
this
is
a
this
is
a
v8
specific
issue
right
this
illegal
invocation
because
both
classes,
you
know
the
the
the
advantage
here
with
this
one,
where
both
classes
are
c
plus
plus,
is
that
if
you
could
call
v8
directly,
then
you
could,
then
you
would
have
access
to
both
to
both.
A
What
is
that
function
templates
right,
because
both
classes
are
defined
using
using
v8,
ultimately
vi
and
api,
and
so
so
then
you,
you
know
it
would
be
possible
to
to
do
the
inheritance
here,
because
we
do
have
access
at
some
point
to
the
function
template.
A
So
this
is
the
special
case
where,
where
you
you
define
the
class
in
in
using
node
api
right
and
so
technically,
you
could
attach
the
function
template
as
a
as
a
persistent
to
the
constructor
right
using
a
private
field
on
the
on
the
constructor.
And
so
then,
when
you,
when
you
try
to
when
you
try
to
mark
them
as
being
as
being
as
one
inheriting
from
the
other,
then
you
can
retrieve
that
function.
A
Template
right,
but
I
I
don't
remember
anymore,
whether
it's
even
possible
to
store
a
function
template
inside
a
persistent
in
v8.
First
of
all,
and
and
second
of
all,
I
don't
remember
if
it's
possible
to
to
perform
the
inheritance
after
you've
retrieved
the
constructor,
so
so
when
you've
instantiated
the
constructor
afterwards.
It
may
not
allow
you
to
do
that
so
in
in
that
case,
it's
kind
of
impossible,
because
you
have
to
return
the
constructor
before
the
person
can
call
the
the
the
inherit.
A
So
so
that's
that's
where
that
stands
yeah,
the
the
other.
The
other
possibility
now
that
I
think
about
it,
is
to
have
something
like
node
api
defined
class
hierarchy,
where
you
pass
in
a
whole
bunch
of
constructors
and
a
whole
bunch
of
property
descriptors,
and
it
just
creates
a
whole
hierarchy
for
you.
You
know
and
and
then
you
you,
like,
you
basically
pass
in
a
really
big
structure
and
and
it
sort
of
visits,
the
structure
and,
and
it
just
creates
all
the
all
the
classes.
A
That
would
be
another
possibility
either
way
this
would
have
to
be
done
in
in
core
and
and
that
that,
obviously,
you
know
wouldn't
take
care
of
the
the
the
attempt
to
subclass
a
javascript
class
that
was
defined
in
javascript.
That
ditches
wouldn't
work,
but
it
seems
like
there
might
be
enough
demand
for
creating
native
backed
class
hierarchies
that
we
might
want
to
do
this.
A
A
D
A
C
A
Somebody's
already
filed
it:
okay
to
map
the
inheritance,
okay,.
A
E
How
about
that,
but
it's.
A
D
A
A
So
but
process,
okay,
so
here.
A
That's
interesting
like
so
it's
strange
that
this
is
the
is
the
innermost
frame
like
you
would
think
it
dies
somewhere
and
finalize,
but
it
doesn't
even
get
to
finalize
so
then
what
that
means
is
that
we're
attempting
to
de-reference
this
this
data
get
parameter,
but
that
is
already
freed.
So
that
sounds
like
a
double
free.
A
A
Okay,
all
right!
Well,
yes,
yes,
yet
another
thing
to
look
at
all
right:
okay,
let's
add
node
api
to
this
because
it
is
node
api.
So
we
have
this
track
properly.
A
Yeah
and
it's
it's-
it's
fun
that
it's
it's
like
on
a
on
an
arm
mac,
it's
gonna,
be
fun
to
reproduce
what,
with
the?
What
with
the
hordes
of
arm
max
in
my
back
pocket
that
I
have.
A
Yeah
so
yeah,
maybe
maybe
we
can
request
access
to
one
of
the
ci
machines,
because
it
is
that
is
a
process
that
we
have
if
we
don't
have
any
rmax
at
our
disposal
but
yeah,
okay,
okay,
thanks
for
bringing
that
up,
I
don't
know
if
there's
anything,
we
can
do
about
this
immediately
other
than
to
test
with
well,
you
know
he
doesn't
know
on
on
on
on
which
branch
it
happens
so
step.
Zero
would
be
to
to
see
this
to
check.
E
A
Brands,
I
don't
know
when
it
started
exactly
okay,
so
I
guess
he's
it's
probably
a
master
then
because
he
doesn't
know
when
it
started,
but
it
is
there
now.
So
then
it
sounds
like
it's
a
master.
So
it's
a
it's
a
good
chance
that
it
started
when
we
when
we
landed
those
those
reference
fixes
yeah,
which
which
makes
me
wonder
why?
Oh
wait
a
minute.
A
We
are
well
we
we
okay,
so
I
don't
see
why
you
know
what
it
could
be
it.
It
could
be
that
our
worst
fears
have
come
true
right.
Like
remember
when
we
were
landing
that
that
final
fix,
we
said
that
you
know.
We
trust
that
if
we
remove
the
the
the
weak
callback,
when
it's
already
queued,
then
v8
will
do
the
right
thing
and
remove
the
weak
callback
from
the
queue.
Otherwise,
we
need
to
use
yet
another
flag.
A
V8
may
not
be
removing
the
weak
callback
from
the
queue
right,
because
if
you
know,
if
we
assume
that
it
has
removed
the
weak
callback
from
the
queue
then
later
on
this,
this
second
pass
callback
happens,
and
you
know
we
we
already
destroyed
the
reference
using
environmentary.
Oh,
let
me
write
this
down
before
we
forget,
but
before
I
do
that,
I
need
to
go
to
node.
Get
log
wait,
get
branch.
What
am
I
on
here?
Oh,
that's!
A
back
port
check
out,
wait
get
diff.
Am
I
blowing
anything
away?
A
No
get
check
out
master
hello,
get
log,
stop
refgc
during
environment
teardown.
No,
it's
the
one
that
comes
after
right
or
wait
that
was
yeah.
No,
it's
this
one,
three,
seven,
two,
three:
six!
What
the
hey.
A
A
A
A
Right:
okay,
okay:
this
may
be
an
indication
that
the
weak
callback
once
queued
is
not
now
that
v8
is
not
removing
the
weak
callback
once
once
cued,
even
though
we
are
calling
clear
weak
from
the
environment
environment
tear
down
induced
finalization
loop,
we
may
want
to
consider
the
alternative
solution
mentioned
in
here
to
see,
if
that
prevents
this
problem
problem.
A
A
A
I
think
I
think
michael's
michael's
remains
valid
in
that
you
know
you
don't
remove
it
if
it's,
if
it's
not
weak,.
A
But
then
again,
if
we
don't,
if
we
don't
trust
v8
at
all,
then
we
wouldn't
even
try
to
clear
weak
at
all.
So
then
we'll
see,
but
either
way
we
may
need
to
go
for
the
alternative.
Let's,
let's
talk
about
this
next
week
with
michael
as
well,
because
he
he
he
has
a
pretty
good
grasp
of
references
as
well.
So
we
can,
you
know
more
eyes
to
see
more
okay,
all
right,
so
any
other
issues,
because
we're
approaching
the
time
for
today.
A
So
I
think
maybe
if
there
are
any
more
issues
in
the
repos,
then
we
should
talk
about
them.
Otherwise
we
can
close
out.