►
From YouTube: Node.js N-API Team Meeting April 6 2020
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
Okay,
so
welcome
to
the
node.js
napi
team
meeting
for
april
6
2020.
we'll
follow
our
standard
approach
of
looking
at
what
we
have
in
the
milestone.
A
Okay,
so
the
first
one
we
have
in
the
list
is
next
the
next
node
add-on
api
release
nicola.
Do
you
know
how
we're
doing
on
that.
B
I
think
that
we
we
yeah,
I'm
working
on
the
the
six
to
eight,
and
I
don't
know
if
gabriel
ended
with.
B
B
This
is
mine
power
cast
and
I'm
yeah,
I'm
just
ending
the
the
the
work
and
later
or
tomorrow
I
will
push
the
new
things.
B
Yeah,
I
I
I
I'm
I'm
trying
to
to
do
this,
but
yeah.
I
have
to
think
how.
B
Yeah,
but
this
is
not
a
blocking
bar
request
and
maybe
yeah
it
could
be
moved
on
possibly
and
yeah
in
in
the
in
this
list,
and
it's
not
a
block.
It's
it's
only
a
new,
a
a
api
that
yeah
it's.
It
depends
on
all
what
we
did
in
our
last
power
requests
that
introduced
the
breakage
yeah.
So
this
this
new
method
use
only
method
that
we
already
yeah
it
now.
A
B
C
D
B
And
there
is
the
the
last
bar,
I
guess.
B
Yeah,
the
yeah,
the
the
last
one,
okay,
it's
the
first
in
in
the
list
yeah
here.
Okay,
I
don't
know,
maybe
for
me
it's
all.
B
Yeah,
I
just
asked
to
remove
the
the
comments,
because
now
they
are
not
necessary,
that's
it
I
can.
I
can
approve
and
we
can
move
on.
Okay,.
B
A
That's
good,
so
then
this
one.
D
I
think
this
one
should
be
good
to
go,
because
I
I
did
change
the
guards
for
for
to
to
say
an
api
greater
than
five
yep
and.
A
A
A
Release:
okay:
let's
flip
back
the
sql-8
port,
any
update
on
that
jim.
E
Yes,
so
the
the
issue
we've
been
having
that
I've
been
seeing
has
been
with
the
the
threading
model,
which
was
originally
based
directly
on
libyuv,
and
so
I.
E
There's
an
implementation
that
uses
the
napi
wrapper
for
the
threading
when
I
reverted
back
to
directly
using
liblev
all
of
the
issues
I
was
seeing,
went
away,
so
I'm
focusing
now
on
just
getting
getting
something
landed,
that's
based
on
napi,
and
then
we
can
revisit
the
threading
model
after
we
get
that
get
that
initial
pr
landed.
I
I'm
not
at
this
point
certain
whether
it's
in
the
napi
wrapper
or
in
the
code
itself,
because
the
threading
model
is
spread
entirely
throughout
it's
it's
not
like
centralized
in
one
location.
E
Okay,
so
it
could
easily
be
one
line
of
code.
That's
not
the
way
it
needs
to
be,
but
anyway,
I'm
focusing
now
on
getting
the
basic
functionality,
I'm
seeing
ci
issues,
but
the
vast
majority
of
them
are
build
issues.
So
I've
got
to
see
what
that's
all
about
it'll
run
under
certain
versions
of
windows,
but
other
other
versions.
It
it
it's
weird,
but
I
feel
good.
I
feel
good
for
the
first
time
in
a
long
time
that
that
we
might
actually
be
able
to
get
this
done.
A
E
E
A
E
E
Okay,
so
sqlite
3
is
built
on
node
pre-chip,
and
so
what
we'll
do
is
we'll
still
continue
to
use
the
old
signatures
based
on
the
node
version
and
and
the
lib
uv
version,
so
it
will
still
have.
We
won't
have
abi
stability
right.
A
E
But
the
other
issue
that's
come
up,
is
they
want
context,
awareness
and
okay,
so
at
least
that'll
give
us
an
avenue
to
that,
and-
and
I
don't
I
don't
think
the
lib
uv
thing
is
going
to
be
we'll
see
it.
It's
going
to
be
pretty
that
those
changes
are
going
to
be
pretty
focused,
and
I
think,
given
time
that
can
be
resolved
right
in
time.
E
A
E
A
E
A
D
So
sorry
to
interrupt,
I
was
just
looking
at
this
removing
the
guards
thing
and
it
turns
out
that
bigint
is
not
the
only
one
that
that
has
to
have
guards
changed
to
to
a
nappy
version
greater
than
five.
It's
also
the
the
begin,
typed
array
stuff,
so
basically
all
the
so
this
this
expands,
the
scope
of
the
pr
from
just
snap
from
just
begins
to
just
removing
this
whole
concept
of
of
guarding
with
node
major
version,
because
all
the
ones
that
we're
guarding
with
no
major
version
are
really
just
bigint
related.
B
D
A
Just
let
us
know
yep
sounds
good.
The
next
issue,
then,
is
transfer.
Then
api
tutorials
to
the
opengs
foundation.
E
Yes,
so
I
am
still
working
on
my
survey.
I
have
I
have
a
question
for
the
group.
If
we
look
at
the
current
tutorials,
they
they're
actually
deployed
on
an
actual
website
with
html
pages
and
css
and
all
of
that
stuff.
E
So
for
this
project,
as
a
group,
are
we
open
to
say
using
github
pages
to
recreate
a
new
tutorial
site
based
on
markdown,
or
are
we
going
to
stick
primarily
with
markdown,
more
plain,
vanilla,
mark
down
and
not
have
a
separate,
say,
say
website.
B
In,
in
my
opinion,
we
can
use
github
pages,
but.
B
Continue
to
render
the
markdown
file
so
yeah,
so
we
can
use
any
system
like
gasby
or
or
similar
and.
B
Static
yeah
a
static
site,
but
I
prefer
to
render
the
the
the
mark
down,
because
we
can
move
the
mark
down
in
any
place
easily
and
yeah
in
the
future.
We
if
we
want,
we
can
continue
to
maintain
the
markdown
and
change,
maybe
all
the
the
system
that
we
use
to
to
expose
the
the
markdown.
B
This
is
my
my
my
idea.
E
A
E
E
Yeah.
The
thing
is,
is
that
we
we
may
with
the
tutorials
over
time.
We
may
want
to
take
more
of
a
topic-oriented
approach
as
opposed
to
a
tool-oriented
approach,
so
we
may
want
to
add
tutorials
that
say.
E
Here's
a
particular
problem
you
need
to
solve
here
are
the
collection
of
tools
that
you
use
together
to
solve
that
problem,
and
that's
markdown
that
may
not
be
associated
say
with
a
particular
tool
or
particular
example,
and
so
the
process
of
generating
the
pages,
whether
it's
gatsby
another
tool
could
be
automated
through
ci
say
when
prs
are,
are
merged
or
that
sort
of.
A
Thing
that
certainly
like
the
the
node.js
website,
the
current
version
and
the
new
one.
I
think
that
you
know
that's
along
the
lines
of
what
they
do.
You.
D
B
E
B
And
jim,
what
I
can
see
is
that
node.js.dab
use
gas
b.
B
E
B
If
you
go
on
on
the
ripple
yeah
you
can,
you
can
see,
and
maybe
we
can
use
this
pattern,
no,
the
same
same
approach,
right
yeah,.
A
E
Yeah,
okay,
perfect,
okay!
This
is
this-
has
been
really
helpful
and
I'll
continue
working
on
this.
A
A
Okay,
let's
go
back
so
the
next
thing
is
any
issues
that
we've
seen
reported
on:
node
add-on,
api
or
napi
any
that
people
want
to
bring
to
the
top
of
the
list.
D
I
I
have
one,
let
me
see
if
I
can
find
the
number
it's
right
here
in
the
core
repo
thirty
two
six
one,
five.
A
D
So
it
looks
like
when
you
call
when
you
call
the
threat
say
function
from
the
main
thread
and
the
queue
is
full,
then
that
deadlocks
the
thread
safe
function
because
it
waits
for
well.
You
make
a
blocking
call
to
the
threat,
saying
function
from
the
main
thread
right
and
that
obviously
causes
a
deadlock,
because
because
you
know
it's
going
to
wait
for
a
q-slot
to
become
available,
but
the
threat
responsible
for
making
q
slots
available
is
the
main
thread
right.
The
only.
D
D
So
so,
basically,
there
are
two
solutions
here:
either
we
synchronously
remove
an
item
from
the
queue
and
then
insert
the
item
in
question,
or
we
we
we
throw.
We
don't
throw.
D
We
return
napping
cue
full
as
if
it
were
a
non-blocking
call,
just
as
just
as
we
would
on
any
thread
if
it
were
an
unblocking
call,
and
then
we
document
that
this
is
a
special
case
that,
because
normally,
if
you
make
a
blocking
call
it,
it
cannot
return
an
api
queue
full
right
because
well
it's
it's
non-blocking,
so
it'll
it'll
stay
locked
until
a
q
slot
becomes
available.
D
But
I
think
I
think
it's
sensible
to
make
a
special
case
for
the
main
thread
and
to
document
that
that
is
a
special
case,
because
right
now
that
would
change
the
behavior
from
it
being
a
deadlock
to
it
being
an
error
report
and-
and
we
can
document
that
that
it
makes
sense
to
throw
an
error
and
that
it.
It
does
return
an
error
in
that
case,
but
only
from
the
main
thread
right.
A
D
Yeah,
that's
another
option
is
to
find
a
new
to
define
a
new
error
code
instead
of
reusing
nappy
queue
full
but
yeah.
So
yeah.
That's
that's
yeah,
because.
A
D
Yeah
exactly
yeah
yeah
yeah
that
okay
yeah
yeah,
we
can
do
that.
I
either
way
to
to
to
synchronously,
remove
an
item
and
then
insert
this
item
the
the
the
the
person
who
originally
posted.
It
gave
a
good
reason
why
we
shouldn't
do
that
and
that's
because
removing
an
item
causes
a
call
into
javascript,
which
itself
may
cause
an
item
to
be
inserted,
synchronously
sure
so
again,.
B
D
Then
that
that
could
be
any
number
of
recursions
might
even
cause
a
loop
like
an
infinite
loop.
That
will
eventually
run
out
of
stack
right.
So
so
then
it
would
be
easiest
to
just
return
an
error,
yeah
and
then.
D
Yeah,
so
about
this
new
error,
we
can
then
document
that
it's
only
returned.
If
you
call
the
thread,
save
function
from
the
main
thread
and
the
queue
is
full
right.
Otherwise,
you
will
block
right
and
wait
till
there's
space
yeah,
and
I
think
I
think
it's
good
except
yeah
yeah.
It
would
be
somewhere
minor
because
we
would
be
adding.
D
We
would
be
adding
a
new
status
because
we
are
using
nappy
status
for
all
this.
So
this
would
add
a
new
status.
A
D
Yeah
yeah,
we
are
breaking
people
a
lot
less
than
we
were
before
yeah.
That's
that's!
Basically
the
upshot,
okay!
So
so
then,
so
then
this
entails
two
things
or
we
need
to
be
able
to
detect
that
this
is
the
main
thread
so
that
that's,
that
needs
to
be
added
to
the
implementation
of
thread,
safe
function
and
then,
and
then,
after
that
it
become,
becomes
pretty
easy
to
just
throw
this
new
error
code
yeah.
Basically,.
D
Yeah
so
before
we
we
before
we
call
cond
wait,
we
say
you
know
is:
is
this
the
main
thread,
then?
Don't
call
can't
wait,
but
rather
return.
So
it's
basically
go
into
like
non-blocking
mode,
except
with
a
different
error
code.
That's
all
yeah,
okay!
D
So
yeah!
That's
that's!
That's
the
only
one
I
had
to
report
on-
and
this
is
this
seems
like
a
like
a
real
issue
so
needs
to
fix
it.
A
D
Yeah,
I
mean
you
know
the
original.
The
original
point
poster
does
point
out
that
this
only
happens
if
you
call
from
the
main
thread.
So
if
you
call
from
any
other
thread,
then
it
works
fine.
D
F
I
I
can't
remember:
did
you
say
that
you
would
return
this
error
only
if
it
was
blocking
it
and
the
queue
was
full
or
yeah?
Okay,.
D
D
So,
on
on
thread
safe
related
news,
I
just
tried
to
build
this.
I
tried
to
build.
I
know
that
on
api
just
to
to
run
a
test
before
I
I
changed,
I
I
said
I
send
the
the
changes
that
also
include
the
rest
of
the
guards
and
I'm
I'm
having
a
compilation
issue
for
which
I'm
about
to
file
an
issue
because
my
might
be
with
like
might
be,
because
I
have
like
a
new
version
of
gcc
or
something
so
just
wanted
to
have.
A
D
A
D
E
A
D
D
Yeah,
well,
it
could
be.
It
could
be
that
we
upgraded
our
infrastructure
to
a
new
compiler
which
no
longer
likes
something
that
we
wrote.
I'm
not
sure
that's.
A
D
A
A
That,
okay,
let's
know
that
on
an
api.
B
A
Yeah
otherwise,
I
don't
see
any
new
issues
since
last
week.
Anything
else
that
people
would
like
to
talk
about
or.
F
Yes,
so
I've
been
working
on
the
pull
request
for
the
let's
say
function
context
and
I
am
stuck
I'm
having
trouble
wrapping
the
the
call
js
function
to
I'm
not
even
sure
how
to
to
explain
where
I'm
stuck
so.
Basically,
what
I
need
to
pass
to
the
nappy
create
bread,
safe
function
is
a
static
callback,
but
the
callback
that's
given
to
new
is
not
static.
F
F
D
Yeah
we
have,
we
have
examples
of
that
of
how
to
how
to
data.
Basically,
the
idea
is
that
you
you
you
pass.
You
pass
the
this
pointer
as
as
like
the
data
item,
but
of
course
you
want
to
preserve
the
data
and
the
context
right.
D
A
F
C
C
F
F
That
h,
if
we
go
to
line
two
two,
three
six,
okay.
F
Right
and
so
basically,
what
we
want
to
do
is
transform
this
to
be
node,
add-on,
api
and
and
function,
and
then
context
and
data
be
templated
right.
But
this
would
this
callback
actually
comes
in
as
a
parameter
to
mute
in
that
in
new
on
222.
B
F
So
the
reason
okay,
so
the
reason
it's
not
listed
here
is
because
this
is
the
old
thread
safe
function,
api,
where
you
pass
the
callback
to
each
call
right.
But
now
what
we
want
to
change
is
have
the
the
call
js
be
a
parameter
right.
F
So
if
I,
if
it
might
be
easier,
if
we
go
to
the
poll
request.
C
D
So
so
you
want
this,
you
want
this
to
be
like,
like
a
member
function,
rather
than
a
static
member
function
of
the
subclass,
you
want
to
be
able
to
accept
a
member
function
of
the
subclass
rather
than
a
static
member
function.
Is
that
correct.
D
F
F
F
F
D
My
first,
my
first
reaction
is
that
you
could
you
could
pass
it
yeah.
Actually,
you
can
probably
do
that
with
with
either
with
either
a
a
member
function
or
a
static
member
function.
I
think
you
can
pass
it
as
a
as
a
as
a
template
parameter,
and
then
you
don't
need
to
wrap
it,
and
and
it's
it's
just
a
matter
of
how
you
call
it
so
so
if
you
pass
it
as
a
template,
because
this
is
static
right
this
this
this
can
be
statically
resolved
right.
D
What
that
function
will
be,
it
doesn't
have
to
be
stored
at
runtime
right.
So
when
you
build
the
code,
it'll
it'll
it'll
always
go
back
to
the
same
actual
function
when
it
actually
runs
right.
So
so
then,
so
then
the
way
you
would
do
it
is
you
would
use
a
you
would
pass
it
as
a
template
parameter
rather
than
as
a
as
a
function
parameter
and
then
then
inside
and
then
you
would
create
a
wrapper
right
and
inside
the
wrapper.
You
would
just
call
this
param.
D
This
function
that
was
passed
as
a
template
parameter
and
the
way
you
call
the
function
depends
on
whether
whether
you
accept
a
member
function
or
whether
you
accept
a
static
member
function.
If
you
accept
a
static
member
function,
then
your
job
is
a
little
bit
easier.
But
if
you,
if
you
accept
a
regular
member
function,
then
you
have
to
pass
the
instance
to
to
the
the
callback.
So
you
have
to
to
to
the
actual
callback
that
you
give
to
to
to
the
core.
D
D
So
and
then
you
you
leave
it
up
to
the
application
to
to
to
store
the
the
instance
in
in
one
of
their
parameters
in
an
application
specific
way,
or
you
give
up
the
idea
that
that
you
can.
You
know
you
can
call
it
both
both
in
a
raw
fashion
and
in
well
wait
a
minute.
No,
let
me
think
wait
a
second
you.
D
You
don't
sacrifice
that
so
so,
if
we
wrap
the
context
right,
if
the
context
pointer
is,
is
no
longer
transparent
to
to
the
to
the
to
the
caller
right,
then
then
you
can
still
call
nappy,
call
threats
a
function
directly,
because
the
the
call
js
callback
will
have
been
that
we
that
that
was
given
to
core
when
the
function
was
created,
is
the
wrapper
right.
D
Oh
yeah,
yeah,
okay,
yeah,
that
you
wouldn't
be
able
to
use
you're
right,
but
yeah,
yeah
you'll
be
able
to
use
nappy
call
threat,
save
function,
but
you
wouldn't
be
able
to
use
yeah
the
get
context.
You're
right,
yeah.
You
wouldn't
be
able
to
use
that
yeah.
If
we
don't
wrap
the
context-
okay,
okay,
so
then
so,
then
the
only
the
only
way
the
only
way
would
be,
I
believe,
to
to
pass
the
call
js
as
a
template
parameter
and
have
it
required
to
be
a
static
function.
A
D
B
I
have
a
curiosity
to
to
ask
if,
if
I
can
yep
so
if
okay,
I
have
a
nod
node.js
installation
that
usually
is
built
using
a
compiler,
for
example,
in
windows.
B
Not
just
is
built
using
microsoft
compiler,
but
if
I
will
build
my
native
addon
using
zcc
glue
compiler
on
windows,
my
native
addon
will
continue
to
work
or
not.
D
It
should
it
should,
because
I
mean
as
long
as
they're
abi
compatible
right,
and
they
should
be
because
I
mean
you
know
that
there
are
standards
right.
So
so
so
there's
like
c
plus
has
has
a
standard
right,
c,
plus,
plus
11.,
and
and
if
the
microsoft,
compiler
and
gcc
both
adhere
to
c
plus
plus
11
as
a
standard,
then
they
should
work
together.
D
B
Yeah
yeah
because
yeah,
if
you
use
an
api,
yes,
yes,
sure,
yeah,
yeah,
okay,.
D
But
those
those
would
be
linked
right
and
and
they
are
they
are-
they
are
resolved
against
the
the
add-on.
So
those
are
local
to
the
add-on.
They
they
do
not
influence
the
interaction
between
between
node
and
the
add-on,
because
we
never
pass
any
standard
library
stuff
to
node,
because
the
the
interface
is
c
right.
D
So,
if
you're
talking
about
like
the
the
stl,
then
then
then
we
don't.
We
only
use
those
internally
right.
We
don't
actually
pass
them
to
node
so
that
there
is
no
chance
that
you
pass
a
pointer
to,
let's
say
a
standard
vector
to
know.
Js
and
node.js
is
a
different
implementation
of
standard
vector
and
therefore
it
crashes
that
doesn't
happen
because
we
don't
pass
pointers
to
standard
anything
to
node.js.
We
just
play
as
plain
c
pointers.
B
A
There
are
some,
like
you,
still
need
compatible
options,
potentially
like
link
options,
because
I
know
there's
different
like
on
windows.
I
think
like
different
threading
model
kind
of
options.
I
forget
the
the
names
of
them,
so
I
think
you
might
still
need
some
compatibility
on
that
front,
but
not
necessarily
related
to
the
compiler
you
could.
You
could
do
the
same
in
compatibility
with
the
same
compiler,
too.