►
From YouTube: Node.js N-API Team meeting - May 13 2019
Description
A
B
B
D
B
B
D
E
E
B
D
E
B
D
Yeah
I
I
put
all
my
notes
on
a
different
issue.
Probably
I
put
a
bunch
of
notes
on
the
workshops:
okay,
so
a
red
link,
yeah,
okay,
just
look
there!
So
so
now,
when
I
did
the
submission
to
note
comp
II
you
I
listed
I
listed
Michael,
Gabriel
and
Nicola
as
co-presenters
I
put
your
email
in
and
I
was
under
the
impression
they
were
gonna
contact.
You
directly
that
you
that
that
the
submission
system
is
going
to
send
you
a.
B
D
B
D
Okay,
very
good,
very
good,
okay,
so
we
we
are
set
there,
there's
nothing.
We
can
do
there
and
until
they
make
their
decisions,
I
think
that's
open
until
the
end
of
May
and
yes
and
they'll
start
making
their
decisions
and
then
I
noticed
no
js'
interactive
opened
up
last
week.
So
do
we
want
to
make
this?
We
can?
We
could
submit
a
workshop
and
we
can
submit
a
birds
of
a
feather
I.
B
Think
if
we
can
submit
the
same
workshop,
that
makes
sense
to
me:
okay,
we'll
be
ready
and
probably
a
different
audience
right.
That's
you
know.
No
comp
will
likely
have
more
people
from
Europe
and
no
Plus,
yes,
interactive
more
from
North
America,
of
course,
some
overlap,
but
I
think
it's
different
enough,
though
sense
yeah.
B
D
B
D
B
D
B
A
D
F
A
B
Of
a
feather
I
think
covering
some
of
the
things
that
Gabriel
hiding
is
in
his
blog
post,
yeah
yeah,
you
don't
talk
talking
about
these
are
some
of
the
things
that
the
project
has
worked
on,
which
are
not
any
PII
specific,
but
you
know
in
the
version
of
feathers
like
hey.
Does
that
resonate
with
people?
Are
there
other
ones
like
that?
And
then
we
can
also
talk
about
you
know
any
PR
and
adoption
and
all
that
kind
of
stuff.
C
A
I
think
I
think
if
we
do
a
workshop
on
on
on
add
ons,
then
we
should
definitely
emphasize
not
only
an
API
itself,
but
also
also
the
sort
of
the
advent
of
worker
threads
and
and
how
that
influences
state
management
in
an
add-on.
Yeah
I
think
that's
very
important.
It's
becoming
ever
more
important,
so
basically
we're
both
static
variables
are
a
big
no-no
because
of
that
people
need
to
get
used
to
that
and
also
proper
cleanup
at
the
end.
Yeah.
B
B
B
B
B
A
I
haven't
I,
haven't
yet
I'm
I'm
kind
of
I'm
kind
of
snowed
in
right
now,
I'm
gonna
try
to
find
time
for
it.
Okay,
so
maybe
we.
A
B
B
B
And
I
think
related.
There
was
there
was
an
issue
this
week,
which
I
don't
know
last
week,
I,
don't
know
how
it's
gonna
turn
out
in
the
end,
but
there's
like
some
functionality.
It
looked
like
there
was
a
place.
You
know
a
bug
in
the
async
worker
implementation,
and
you
know
Ana
put
a
PR
to
fix
that.
But
then
it
ended
up
breaking
eat.
B
More
we've
had
a
few
PRS
to
try
and
fix
memory,
leaks
and
stuff
around
that,
but
the
the
mate
the
reason
I
mentioned
it
here
is
I.
Think
that
actually
pushes
us
towards
the
approach
we've
taken,
which
is
sort
of
minimal
wrapper,
because
the
more
you
have
in
the
wrapper
the
higher
the
likelihood
that
there's
a
bug
there
and
I
think
bugs.
There
might
then
force
you
to
have
to
recompile
versus,
if
there's
a
bug
in
an
API
itself,
and
we
fix
it
in
the
VM.
B
F
E
A
B
B
A
Exactly
yeah
yeah
and
besides
you
know,
if
we,
if
we,
if
we,
if
we
start
rapping
one-to-one,
especially
a
big
enough
chunk
of
libuv,
then
we
are,
you
know,
committing
ourselves
to
the
same
shortcomings
that
libuv
itself
has
which
your
reason
for
breaking
it.
Right,
though,
you
know
we
rap,
we
need
to
rap
carefully
yeah
I.
B
A
Yeah,
but
the
thing
is
like
I
mean
you
know
that
that
becomes
ever
more
granular
right
like
at
some
point.
You
end
up
with
that
with
a
situation
where
you
are
essentially
duplicating
every
single
API
and
assigning
a
number
to
every
single
API,
and
at
that
point
you
know
you,
you
you're
you're,
just
you're,
just
trying
to
deal
with
the
complexity
by
reintroducing
the
complexity.
You
know
at
that
point
you
might
as
well
just
let
the
a
don't
crash,
and
let
that
tell
you
that
that
there's
a
that
there's
an
ABI
incompatibility.
You
know
well.
A
F
A
It's
just
not
worth
implementing
that.
You
know
because
you
get
so
many
numbers
I
mean
you
know.
Do
we
do
we
do
we
sort
of
section
off
UV,
Polti
and
a
sign?
It's
a
number.
You
know
because
I
mean
because
then,
if
we
don't,
then
even
though
UV
pull
te
it
broken,
you
know
the
atom
will
need
to
be
recompiled
because
it'll
refuse
to
load
because
the
version
of
libuv,
which
happens
to
be
perfectly
compatible
with
the
atom
because
the
add-on
only
uses
you
can
be
faulty.
It's
now
different
yeah.
B
E
A
And
even
even
even
if
it
does,
even
if
a
new
somber
major
is
released,
it
does
not
break
the
entire
API.
You
know
so
so
so
you
know
it's
basically
a
case-by-case
situation
right.
Thank
you.
Some
modules
will
continue
to
be
ABI
compatible
right,
whereas
others
will
not,
and
so
so
so
so
then
the
only
your
only
choice
is
to
be
reactive
about
it.
A
C
A
D
A
Yeah
yeah
I
mean
yeah
that
we
are
sort
of.
We
are
sort
of
approaching
that
inflection
point
as
well
right
where,
where
you
don't
really
need
the
versions
anymore,
you
know
and
you
don't
need
to
intentionally,
throw
upon
trying
to
load
the
module,
because
chances
are
that
it'll
be
far
more
stable
than
than
it
was
in
the
past.
So
yes,
that's
true.
B
A
A
B
A
Because
we
introduced,
we
introduced
the
the
module
version
numbers
precisely
to
sort
of
keep.
These
like
right,
keep
health
an
ecosystem
up;
okay,
but
now
they
are
no
longer
relevant
because
well,
we
have
version
numbers
now,
but
they
change
much
much
much
more
slowly
and
and
the
major
version
you
know.
Unless
there's
a
break
in
the
language,
it
is
unlikely
to
change.
You
know
so.
B
Yeah
so
right,
yeah,
that's
interesting.
Okay,
so
we
could
I
think
we
still
need
to
figure
out
the
strategy
on
that
front.
Yeah
yeah
because,
like
I,
would
have
been
thinking
that
well,
you
know
we
still
say
to
be
safe.
You
shouldn't,
but
it
there
is.
An
argument,
like
you
said
to
say
well
is,
is:
is
that
being
safe
costing
you
more
than
the
value
of
avoiding
the
crash
or
something
yeah.
A
B
A
G
A
You
know,
and-
and
you
know
we
could
have
a
formalism
for
for
for
ABI
versioning,
but
I
mean
that's
beyond
the
scope.
I
mean
that's
just
beyond
the
scope.
You
know
right
yeah.
That
would
that's
something
that
would
belong
in
a
library
load
there,
honestly
yeah
yeah,
ok,
so
that's
interesting
and
I
think
I
think
we
are.
We
are
already
kind
of.
We
are
we
already
kind
of
have
a
little
bit
of
a
graceful
degradation
in
the
sense
that
you
know
it
will
fail
with
an
exception.
A
B
A
Yeah
yeah
yeah
yeah,
no,
no
they're,
the
the
worst,
the
worst
yeah
and
the
original
reason
for
having
this
this
versioning
system
is
is
the
is
the
subtle,
the
subtle
crash,
where
you
just
get
a
sec
bolt
and
you
don't
know
why
all
of
a
sudden,
yeah
and
and
yeah
so
basically
for
those
for
those
you
know,
given
that
we've
adopted
this.
Is
this
a
bi-stability
commitment
and
given
that
we
are
placing
much
more
value
on
ABI
stability
in
general,
even
outside
of
an
API?
A
G
A
B
A
Yeah
yeah
yeah,
okay
yeah,
then
you
wouldn't
have
any
information
about
that,
except
except
to
know
that
you
crash
okay,
so
then,
okay,
so
then
you
need
to
okay.
I
see
you
need
to
inform
app,
rebuild
and
note
free
to
create
two
different
versions,
and
this
arbitrary
point
in
there
in
the
version:
history,
yeah,
okay
and
there's
no
way
to
inform
them
of
that.
B
A
Well,
presumably,
presumably,
if
there's
going
to
be
a
new
major
release
of
libuv,
it's
going
to
coincide
with
a
new
major
release
of
nodes.
So
at
that
point
the
tool
the
tool
would
be
able
to
handle
that
right
because
like
well,
no,
it
wouldn't
right.
It
wouldn't
be
able
to
handle
that,
because
you're
only
keying
on
an
API
right.
B
A
A
B
D
The
the
code
I
added
would
permit
you
to.
Let's
see,
let
me
let
me
think
here
it
would
it
it
would
it
would
fire
off
multiple
builds
one
for
each
n
API
version
and
then
it
would
communicate
the
N
API
version
into
the
code
using
a
macro
defined
right,
so
the
it
might,
and
there
there
has
been
some
question
about
the
ability
to
support
an
API
and
man
build
simultaneously,
so
that
it's
something
that
I
need
to
research,
but
I
felt
confident
that
there
was
a
way
to
do
that.
D
So
if
we
could
support
that,
then
we
might
be
able
to
support
multiple
builds
based
on
the
the
node
version
right.
So
then
the
node
version
and
the
N
API
version
B
could
be
communicated
into
the
C
code
and
then
the
C
code
could
do
conditional
builds
based
on
that.
So
it
seemed
to
me
at
one
point:
when
I
looked
at
it,
that
you
could
simultaneously
do
a
series
of
an
API
build
and
an
an
build
okay.
So
since
I'm
looking
at
this
for
no
chip
yeah,
it's
something
else,
I
can
look
at
okay.
A
D
B
That
makes
sense,
cuz
yeah
I
mean
I.
Think
it's
almost
like
you
want
to
say
between
these
node
versions,
then
I'm
going
to
use
the
API
version,
all
right,
basically
say:
okay,
when
I
hit
this
note
version
I'm
using
WV
I'm
using
Lib,
Evie
and
I
know
that
I
know
outside
of
the
protection
of
the
number
that
hey
there's
a
new
thing
in
the
BB
which
breaks
me
yeah.
It's
at
this
point,
that's
not
a
hard.
You
know
if
there
is
a
new
little
UV
that
doesn't
break
you,
you
don't
worry
about
it.
B
B
D
C
D
What's
going
on
I'm
having
difficulties
making
that
work
and
so
I'm
thinking
Michael,
it
might
be
good
if
we
were
able
to
schedule
a
time
where
we
could
brainstorm
I
I,
don't
know
that
when
you
were
working
with
Anisha
and
Samson
yeah
I,
don't
know
how
hands-on
you
were
with
them,
but
what
I?
What
I
need
help
is
getting
my
development
system
set
up,
so
I
can
debug
why
these
handful
of
unit
tests,
sure
yeah
I
know
we
should
be
able
to
get
the
break
the
debugger
to.
B
Break
okay,
I
yeah:
we
should
be
able
to
do
that,
like
the
module
needs
to
be
compiled
in
debug
mode
yeah,
and
then
there
are
I
have
had
some
tricky
stuff,
but
I.
Think
if
you
basically
like
start
the
debugger
and
then
say
run
the
program
like
set
the
breakpoint
and
then
run.
We
should
be
able
to
get
that
working
right.
D
F
B
A
G
And
is
that
I
I
was
kind
of
thinking
when
you
guys
were
kind
of
talking
about
how
you
would
already
have
two
kind
of
different
versions,
one
for
the
N
API
version
and
one
for
the
Lib
UV
version
to
me.
It
was
kind
of
sounding
like
would
it
be
possible
just
to
have
two
like
a
assembler
versioning
of
an
API
instead
of
having
just
this
one,
scalar
single
version
that
we
currently
have?
G
A
Already
have
we
already,
we
already
have
versioning
for
an
API
right
like
we
have
an
API
version,
1,
2,
3
and
4
out
right
now
and
and
those
are
actually
the
fully
qualified
member
mirja
version
of
those
will
be.
Like
one
point,
one
point:
one
point:
zero.
One
point
two
point:
zero.
One
point
three
point:
zero
one
point
four
point:
zero
yeah.
A
B
You
know
you
you.
It
is
in
cember
so
like
if
you're
just
using
an
API,
there's
no
semper
major.
You
just
continue
to
use
it.
It's
additive.
What
we're
you
know
well,
we're
trying
to
trying
to
figure
out
is
the
well
okay.
Lavie
B
doesn't
change
that
often.
So,
if
you
do
use
libuv,
maybe
a
second
number
would
make
sense
so
that
you
could
say
he's
kind
of
like
each
each
add-on
could
opt
into
the
additional
things
they
use.
B
G
A
E
A
B
A
And
even
even
with
that
large
number
of
numbers,
you
still
force
people
to
rebuild
their
thing,
even
though
it
even
though,
in
their
particular
use
case,
it
hasn't
really
broke.
Okay,
so
there's
still
there's
still
that
unnecessary
turn
right
and
and
the
more
stable
things
become
in
general,
the
fewer
libraries
break
and
the
less
often
they
break
the
more.
The
churn
is
something
you
want
to
avoid
because,
because
the
price
you
pay
in
terms
of
these
in
terms
of
these
subtle
SEC
fault,
is
ever
smaller,
with
increasing
API
stability,
mm-hmm.
G
G
G
A
Know
having
having
that
having
the
wrapper,
give
an
opportunity
to
to
keep
things
constant
while
things
underneath
change
in
theory,
but
but
on
the
other
hand,
you
know
bottlenecks
which
which
which
stem
from
the
design
of
the
underlying
API
we
will
face
if
we
simply
propagate
the
underlying
API
and
we
just
add
one
layer
of
indirection
above
it
which
which
it
just
calls
through
you
know.
So
we
don't
want
to
inherit
the
bottlenecks
and
we
don't
know
the
bottlenecks
ahead
of
time
right.
A
So,
okay,
we
could
add,
we
could
add
sort
of
a
relief
valve,
but
but
ultimately,
ultimately
that
comes
with
its
own
price.
You
know,
so
you
have
to
make
a
very,
very
careful
decision.
You
know,
and
so
correct
me
correct
me
if
I'm
wrong
so
far,
what
we've
been
doing
is
that
we've
sort
of
wrapped
we've
wrapped
commonly
used
concepts
rather
than
yeah
yeah.
B
D
B
B
Ask
me
earlier
like
well:
is
it
one
API
or
is
it
like
thirty
api's,
because
for
me
that
makes
one
of
the
is
part
of
the
biggest
decision
as
to
whether
it
would
make
sense
to
pull
it
in
or
not
and
I
said,
I
suspect
that
one
with
pole,
because
you
know
you
can
pull
sockets,
you
can
pull
file
handles.
It's
probably
going
to
be
quite
a
big
number
of
functions.
B
Okay,
so
I
think,
just
while
you
were
on
the
call
Gabriel
I,
don't
know
if
you
caught
it,
but
Jim
is
gonna,
think
a
little
bit
about
what
we've
done
in
pre
dip
and
pre
pre
build
since
he
was
already
volunteered
to
look
at
that
in
terms
of
no
Jim
just
to
see.
If
we
think
that
what's
already
there
would
let
you
do
the
right
thing.
If,
for
example,
you
decided
to
depend
on
the
Vivi
and
there
was
a
breaking
change
like,
could
you
could
you
use
the
existing
information
to
generate?
A
Yeah
yeah
yeah
yeah.
That's
that's
that!
That's
that's
definitely
worth
looking
at
because
I.
That
libuv
also
has
like
a
like
that,
like
a
version
declared
in
its
headers
and
stuff.
So
so
then
so
then,
if
that
can,
if
that
can
be
harvested
and
interpreted
as
part
of
the
build
process,
the
pre
build
or
note
project
process,
and
then
then
that
could
also
be
used
to
key
to
key
the
the
name
of
the
module.
Well,
you.
B
It
then
is
it,
can
you,
can
you
actually
come
up
with
a
mechanism
using
the
information?
That's
there
so
that
you
get
binaries
only
you
know
you.
It's
sort
of
like
this
range
of
any
of
node
versions.
I
want
to
use
the
an
epi
version
within
yeah,
but
at
the
next
one
I
want
to
use
a
different
I
want
to
create
it
for
one
and
I'm,
not
sure
the
tools
can
do
that,
but
sort
of
that's
what
Jim's
gonna
figure
out
for
us.
Okay,.
A
Yeah
I
mean
like
if
the,
if
the,
if
the
you
know
realistically,
if
we,
if
we
do
key
by
by
napi
version,
which
we
already
do,
and
we
also
key
by
libuv
version,
then
realistically,
the
libya
v
version
is
not
going
to
change
very
soon
and
very
awesome.
So,
even
if
we
do
that,
we
are
we
are.
We
are
as
stable
as
we
are
now
right
and
we
will
be
able
to
respond
to
to
to
an
incoming
breaking
libuv
in
the
future,
using
tools
that
everybody
is
already
familiar
with.
A
So
there's
definitely
value
in
that,
even
if,
even
if,
even
if
we
have
this
extra
term,
where
the
module
that
is
currently
going
through
node,
free
chipper
or
node
pre-build
is
one
that
wouldn't
really
be
broken.
If
we
didn't
have
the
concept
of
tracking
libuv,
even
if
it's
one
of
those
modules,
you
know
actually
one
of
those
you
know
like.
If,
even
if
it's
one
of
those
modules
it
will,
you
know
it's
still
a
smaller
price
to
pay.
You
know
because
the
newbie
doesn't
change
that
often
right
well
and
based.
B
On
your
argument,
you'd
really
want
to
be
able
to
just
say:
I
want
a
breakpoint
at
this
node
first,
because
then
you
could
decide
whether
it
had
broken
you
or
not.
True,
true
yeah,
yeah,
exactly
right.
So,
basically
I,
you
know
between
this
version.
This
version
I
won't
use
any
PR
to
decide
what
you
need
to
build,
but
there's
a
break
point
and
then
for
the
next
range
and
that's
you
can
look
at
it
and
say:
yeah:
okay,
I'm
using
live
EB
I'm
using
open
SSL,
but
even
with
the
new
versions.
A
It's
fine,
that's
an
excellent
idea.
Actually,
that's
an
excellent
idea:
let's,
let's
let
the
module
declare
the
breakpoints
rather
than
rather
than
try
to
try
to
infer
the
breakpoints
right.
That's
that's
a
great
idea.
Yeah.
A
A
Isn't
the
only
thing
that
advances,
because
you
know
you,
you
have
like
the
electron
scenario
and
you
have
like
the
Debian
scenario,
where
it's
with
a
bi
incompatible,
even
though
it's
the
same
node
version
right
so
so,
but
but
still
being
able
to
provide
a
description
of
the
breakpoints
in
terms
of
all
node
versions.
Like
would
be
really
useful,
like
basically
make
me
a
binary
four
node
module
version,
X
and
API
version,
Y,
libuv
versions,
then
you
know
and
then
and
then
that's
one
descriptor,
and
then
you
have
another.
A
You
have
another
descriptor
for
for
for
this,
you
know
and
for
another
combination
of
version
and
and
then
basically
basically
you
you
tailor
your
binaries
to
your
audience
right
now
and
you
know
which
binary
covers
which
which
which
interval
and
we
to
dimension
well,
so
so
yeah
yeah,
being
able
to
fully
specify
this
using
using
note,
rebuild
and
and
Note
3
tip
would
be
absolutely
useful.
I
think
I
mean
you
could
even
I
mean
thinking.
Thinking
ahead,
you
you
could
even
like
break
at
a
minor
version.
A
A
If
we
had
complete
descriptors
that
that
that
these
tools
understood
and
then
and
then
basically
that
would
there
would
also
motivate
developers
to
use
these
tools
because
otherwise
you
know
they
would
they
wouldn't
be
able
to
do
to
handle
this
as
well,
because
you
know,
if
you
don't
use
pretty
build,
then
then,
whatever
binary,
you
know
your
users
build
from
sources.
The
binary
they're
stuck
with
and
if
they,
if
they
move
across
one
of
these
breakpoints,
it's
gonna
break
for
them.
Yeah
yeah.
E
B
Mean
we
had
several
discussions
on
that
worked
through
a
number
of
the
issues
that
we
just
have
to
get
time
to
push
some
of
those
forward
know
if
there's
any
more
okay,
I,
don't
see
anything
too
much
on
that
you
probably
need
to
maybe
next
I,
where
we
only
have
four
minutes
left,
but
maybe
next
time
we
have
more
time.
We
can
take
a
look
at
that
one
again
and
see
what
what
our
next
steps
are.
C
B
A
We
closed
the
issue
with,
with
with
calling
navigation
cue
like
an
epic.
You
async
work
more
than
once,
with
with
the
documentation
fix.
Okay,.
B
A
G
If
we
have
a
little
bit
of
time,
I've
been
working
with
Jane
Howe
with
thread
safe
functions,
Gabe.
If
you
have
some
time
to
look
over,
that,
we
kind
of
came
we're
stuck
at
a
point
where
how
you
mentioned,
like
the
the
object
itself,
cannot
be
responsible
for
knowing
whether
or
not
it
has
to
be
aborted.
G
So
we
we're
stuck
at
this
point
where
the
thread
safe
function.
If
you
have
a
reference
for
it,
and
then
you
overwrite
the
reference,
then
you've
kind
of
lost,
this
open
thread
safe
function,
and
you
don't
know
whether
it's
like
nodes
still
has
the
reference
for
it.
So
the
thread
safe
function
is
still
open
and
but
you've
over
wrote
the
reference.
So
we
were
wondering
like
I,
don't
know,
I
was
looking
at
the
other
things.
G
I'd
use
this
sort
of
suppress,
destruct
and
whatnot,
where
the
programmer
explicitly
states
whether
or
not
to
destruct
it
on
destruction.
But
the
problem
is
we
don't
know
if
it
would
be
the
same
as
abort.
You
know,
because
for
a
thread
safe
function,
you
can
either
release
it
or
abort
it
and
I,
don't
know
if
it
makes
sense.
If
you
would
have
this
suppressed
destruct
functionality,
mimic
mimicking
this
abort
or
not
like
that.
That's
currently
we're
where
we
stand.
So,
if
you
have
some
time
to
to
look
at
that
where
any.
A
A
Lifecycle
is
entirely
managed
by
the
the
napi
implementation,
and
maybe
it's
a
shortcoming
of
the
implementation
that
that
that
the
instance
that
it
it
doesn't
give
you
a
callback
for
for
when
the
instance
is
about
to
be
like
destroyed.
You
know
it
just
kind
of
assumed
that
that
that
that
the
node
takes
care
of
that
or
or
the
napi
implementation
takes
care
of
that,
so
so
that
that
actually
may
be
something
that
we
should
do
for
for.
G
A
G
A
G
A
G
G
A
A
So
so
you
know,
if
you
yeah,
if
you
don't,
if
you
don't
do
the
thing
where
you
like
track,
has
it
been
awarded
and
so
forth,
because
and
you
track
that
in
a
non-threatening
fashion,
if
you
don't
do
that,
then
yeah,
you
should
be,
you
should
be
able
to
store
State
on
there.
You
know
in
a
non
threaten
in
your
own
object,
so
so
the
rapper
can
have
state
of
its
own
as
long
as
the
state
has
read-only
to
all
the
other
threads.
You
know
right.
Okay,.
G
A
A
B
Okay,
great,
that's
it
then
we'll
call
it
for
today
and
maybe
I'll
catch
up
with
you,
some
other
time
or
or
I
guess
Gabriel.
Maybe
you
want
to
try
like
just
starting
up
a
meeting
and
see
if
you
can
start
the
video
going,
because
I
won't
be
here
next
Monday,
okay,
so
if
you
just
want
to
validate,
then
if
you
have
any
problems,
let
me
know
so.
We
can
make
sure
that
you're
up
and
running
for
next
Monday,
okay.