►
From YouTube: Node.js N-API Team meeting - 12 July 2018
Description
A
So
welcome
everybody
to
the
napi
tea
meeting
for
July
12
2018
and
we're
just
going
to
go
through
the
current
milestone
that
we're
working
on
and
talk
about
the
issues
that
are
in
there.
So
our
first
issue
is
the
blog
to
coincide
with
6x
+
8
X
back
board
availability.
I
have
Runa,
send
me
an
email
earlier
today
saying
he's
working
on
that
and
we're
planning
to
get
together,
hopefully
to
sort
of
finish
it
off.
I
think
it's
next
Monday
or
Tuesday.
A
B
B
Just
just
a
question
of
policy:
is
it
okay
that
if
I
initiate
the
back
part
of
something
that
I
think
is
important
to
have
there
because
I
one
of
my
back
ports
is?
Is
a
reaction
to
to
miles
asking
me
to
back
port
it
because
it
didn't
land
cleanly,
but
the
performance
one?
He
didn't
ask
yeah.
A
I
know
that
that's
that's
fine
I
think,
like
normally
more
things
would
be
backported,
but
there's
sort
of
a
big
backlog
and
eight
dot,
X,
okay,
and
so
the
approach
he
took
this
time
was
to
sort
of
ask
people
what
they
thought
was
important.
So
if
you
think
that
that
one's
important
and
I
think
that
you
know,
I
I
saw
that
I
agree
if
it.
If
we
can
get
better
performance
and
you
can
get
a
backported,
you
know
much
work,
it's
definitely
worth
it
right.
A
So
yes,
okay,
good,
so
yeah
yeah
and
that's
anybody
else.
If
there's
something
you
think
we
need
to
back
port,
you
know
feel
free
to
tag
it
there.
So
I
think.
That's
all
there
is
to
say
on
that
one.
The
next
one
is
to
create
the
workshop
for
node
summit,
as
Jim
mentioned
last
week,
he's
not
able
to
make
it
this
week,
but
still
working
on
it.
He
did
send
us
an
email
saying
that
the
third
one
is
complete.
I
mean
he
has
some
time
to
comment
and
review
on
Monday.
A
So
you
know
I
think
we
should
all
have
an
action
to
take
a
look
at
the
latest.
One
I
I
left
him
some
comments
in
the
issue,
some
some
minor
things:
okay,
but
yeah.
So
if
we,
if
anybody
who
hasn't
looked
at
it
yet
if
there's
time
that
would
be
great
I
think
other
anything
else,
I
think
other
than
that.
You
know
we
pretty
much
have
our
deck,
although
hit
I
think
we
needed
you
to
fill
in
your
about.
You
slide
yeah.
A
C
A
A
A
A
C
D
B
B
B
A
Okay,
so
then
I
guess
we'll
leave
the
other.
This
one
blank
still
here
in
terms
of
I,
think
he'll
that
hopefully
will
have
it,
but
if
not
we'll
just
take
it
off
the
day
out
excellent
right,
so
I
think
there
yeah.
We
should
discuss
I,
see
that
Nicola
and
hit
s.
You
guys
put
together
a
list
of
modules
which
is
good.
Do
we
think
that's
that's
enough
modules,
I!
A
A
D
A
E
E
Implemented
in
native
at
dawn
right,
so
this
is
my
my
my
concern
for
dress
in
are
all
good
candidate
to
use
in.
B
A
B
E
A
What
I
was
thinking
so
I,
but
I,
don't
know
how
easy
it
is
to
get
a
list
of
24
good
candidates.
The
other
thing,
too,
is
like
the
one
you
mentioned.
That's
hard
I
think
we
could
have
a.
We
could
break
out
like
a
second
here's,
a
here's,
a
hard
like
an
advanced
list
like
unless
we
think
it's
one
like.
If
there's
one
I
think
there
was
one
that
was
like
hey
this
uses
stuff
that
we
don't
expose
in
the
API.
It's
like,
okay!
A
Well,
if
that's
the
case,
it
definitely
wouldn't
be
one
that
I
want
on
the
list,
but
if
there's
some
that
are
like
gonna
be
harder
than
others,
but
still
doable.
Maybe
we
have,
like
you,
know:
here's
the
regular
set
and
here's
like
Oh
for
advanced
users.
If
you
think
you
already
know
what
you're
doing
on
on
native
modules,
yeah.
A
C
Know
do
you
have
any
thoughts
on
so
there
were
at
least
some
modules
on
the
original
list
of
like
most
popular
modules
or
whatever
that
Jason
had
compiled,
yeah,
which
don't
seem
to
be
maintained
anymore,
but
there
were
certainly
some
candidates
over
they
were.
It
looked
like
you
know
the
fairly
trivial
module
that
could
be
easy
to
port
I.
D
A
B
A
That's
a
good
problem
to
have
yeah
I
mean
I,
think
you
know
the
bigger
the
list.
We
can
get
I
think
we
could
cope
like
if
we
had
half
the
number
we
needed.
We
could
say.
Well,
you
know,
we've
only
got
us,
you
know
either
find
your
own
or
maybe
work
on
one
that
somebody
else
is
porting
as
well
as
an
exercise.
Ideally.
B
B
B
There
is
one
that
that
is
interesting
enough
for
the
nodejs
ecosystem
and
it
doesn't.
He
isn't
yet
exposed
I
mean
I,
I,
don't
know
it's
a
long
shot
much
much
longer
than
then
then
the
existing
add-ons,
which
simply
needs
to
be
ported,
because
they've
already
proven
that
they
are
interesting.
Otherwise
they
wouldn't
be
around
at
all
yeah.
A
A
To
basically
get
us
to
the
point
where,
like
okay,
here's
the
ones
that
aren't
obviously
too
hard
I
think
like
I
said
before
is
good,
if
we
at
least
just
fire
an
email
off
to
the
maintainer
saying
hey,
this
is
what
we
plan
to
do.
Let
us
know
like
I,
don't
think
we
may.
We
may
not
want
to
wait
for
you
and
okay,
but
if
the
email
just
says
you
know,
let
us
know
if
you
prefer,
we
didn't
do
that.
A
D
C
A
F
C
A
C
A
C
C
A
Yeah
I
mean
that
that's
yeah,
like
I,
think
prioritizing
those
makes
sense
to
me,
but
some
of
the
others,
if
they're
really
still,
you
know
if
they're
high
up
on
the
usage
list,
it's
still
something
that
you
know
us
getting.
Somebody
to
take
over
would
be
important.
Yep
I
buy
that
okay,
so
I'm
gonna
go
back
to
so
we're
talking
about.
A
C
G
G
A
A
A
B
Yeah
I
actually
landed
that
today
in
cash,
that's
in
there
I
I
squashed,
I
squashed,
doctor
commits
and
and
just
mention
the
original
commit
IDs
in
the
commit
message
sounds
good.
Is
there
anything
else
we
think
we
should
get
in
before
we
do
a
release?
I
I
do
have
a
small
PR
which,
which
I
just
realized
this
morning,
that
that
I
should
have
done
in
the
previous
PR,
which
was
to
to
backport.
This
note
note
persistent,
which
we've
been
using
for
a
while.
B
Now
it's
an
old
internal,
because
I
had
to
change
the
the
way
the
the
callback
bundle
is
done
to
use
a
class
rather
than
a
structure,
because
we
needed
destructor
for
it,
but
we
don't
really
need
a
destructor
if
we
had
no
persistent,
because
that
was
the
only
reason
for
the
destructor,
so
I.
So
by
copying
note
note
persistent
out
of
the
no
tree
and
into
our
copy
of
node
internals
I
was
able
to
put
like
reduce
the
Delta
between
between
what
the
bundled
version
and
the
entry
version.
Okay.
D
B
A
B
B
In
general,
I
mean,
as
as
the
impetus
for
for
a
shipping,
a
version
of
napi
fades
right
yeah.
Do
we
intend
to
back
port
all
the
new
api's
that
we
add
cuz?
You
know,
like
you
know,
I,
like
I,
mean
I
just
landed
thread-safe,
not
so
long
ago
like
do
we
really
want
it
to
bring
that
in
or
or
is
that
going
to
be
just
like
just
like
the
sugar
and
no
implementation
so
well.
A
A
So
when
know
that
NEP
I
would
then
have
to
be
smart
enough
to
say:
okay
well,
I,
guess:
we've
got
it
guarded
by
the
the
node
versions
right,
so
it
would
basically
be
you
know
if
you
want
to
compile,
you
would
use
the
right
node
version
and
an
API,
no
doubt
on
API
has
to
like
not
not
depend
on
the
things
that
weren't
available.
If
we
haven't
back
ported
them
everywhere,
right,
yeah,.
A
B
A
Exactly
no
doubt
on
an
API,
well
Noda,
an
API
can
have
wrappers
for
experimental
things,
but
they
are
tagged.
They
need
to
have
the
same
experimental
if
deaths,
yeah,
yeah
right,
so
that
that
I
think
we
can
continue
to
do
I'm
in
terms
of
something
where
and
then
you
know,
we've
already
got
the
model
that
if
we
release
a
like
new
API
is
they'll,
go
into
a
new
node
version
and
we'll
need
note,
add-on,
API
to
again
respect
the
node
version
in
terms
of
hiding
things
you
shouldn't
be
using
right
and
then
separately,
like
I.
A
B
A
B
A
Yeah
yeah
I
would
be
I,
think
I'd
be
more
reactive
on
that
part.
Yeah,
okay,
okay,
like
it's!
It's
because
you
know
they're
using
they're
using
that
they're
already
not
getting
advantage
of
the
full
they're,
still
not
getting
the
full
benefits
and
they
have
sort
of
the
if
they
want
to
compile
across
versions,
they
can
use
the
you
know
the
node
version
has
the
guard
yeah.
That's
kind
of
my
thought.
It's
like
unless
people
are
saying,
hey,
I,
that's
causing
me
grief,
I
can't
I'm
not
being
able
to
migrate
or
whatever.
A
A
And
actually,
in
fact,
I'd
almost
argue
that
we
don't
want
to
put
anything
in
there
that
hasn't
been
back
ported
all
the
way,
true
right,
because
then
you
could
get
into
a
case
where
it's
like
well,
okay,
this
works
for
me
on
sex.
If
I
use
the
non
an
API
version,
but
then
it's
not
available
for
it
anyway,
yeah
yeah,
you.
B
H
A
F
F
C
A
No
okay,
I
think
that's
everything.
That's
in
our
current
milestone
are
there
other
things
that
people
wanted
to
talk
about
this
week,
yeah.
B
I
have
one
regarding
these,
these
non-validated
versions
of
the
of
the
api's.
So
it
seems
that
it
seems
that
for
performance
reasons
we
may
want
to
have
a
version
of
of
the
of
those
api's
which
take
javascript
values
and
convert
them
to
native
values.
Where,
where
we
don't
type
check,
we
go
straight
to
the
conversion
and
if
it
fails
and
if
it
SEC
faults,
we
take
no
responsibility,
because
it
seems
that
that
the
the
validation
is
taking
a
chunk
out
of
the
out
of
the
performance.
And
so
we've
had
one
person
complaining
about
this.
B
I
mean
they
are
working
on
a
hash
table.
So
I
guess
that
is
a
pretty
chatty
application.
But
I
have
found
that
that
if,
if
they
switch
from
using
node
buffer
to
using
v8
array
buffer-
and
we
we
give-
we
provide
versions
of
our
API-
is
like,
for
example,
like
an
app
you
get
value,
Ewing
32,
and
that
we
get
array
buffer
info.
Where
we
don't
first
check,
is
it
a
number
or-
and
we
don't
first
check?
Is
it
an
array
buffer,
but
we
simply,
we
simply
cast
it
and
go.
B
Then
we
can
match
the
performance
of
what
they're
at
what
they
have
now,
which
is
v8
findings
straight
and
using
node
buffer.
Of
course,
if
they,
if
they
kept
using
v8
and
array
buffer,
it
would
be
way
faster
than
anything
we
can
provide.
But
at
least
if
we
force
them
to
use
array
buffer
or
if
we
advise
them
to
use
array
buffer
and
give
them
these
non-validated
ones,
we
can
match
the
performance
of
v8
plus
node
buffer,
so
so
this
this
is.
B
A
B
Yeah
I
I
put
a
charge,
so
basically
we
have,
let's
see
napi
yeah.
So
if
you
look
at
an
API
array
buffer
fast,
that
means
that
means
we
do
not.
We
don't
so,
basically,
where
we're
sending
we're
sending
two
buffers
and
to
64-bit
integers
from
JavaScript
into
the
native
add-on.
That's
the
that's!
The
measure.
B
A
A
Trying
to
get
a
sense
of
his
like
is
you
know,
for
if
it's
a
five
percent
improvement
to
sort
of
like
well,
not
so
interesting.
If
it's
a
hundred
percent
like
it
sounds
like
we're
talking,
25
percent,
possibly
because
if
it's
like
fifty
percent
of
the
time
is
just
calling
in
like
making
the
call
in
in
the
first
place
right
so
and
that's
not
gonna
go
away
yeah.
So
if
it
was
a
hundred
before
that,
we're
optimizing,
it
best.
A
B
B
Well,
okay!
Well,
let
me
see,
one
is
what
they
have
now,
which
is
blue
and
then
and
then
orange
would
be
if
they
convert
it
straight
and
and
this
sort
of
greenish
yellow
would
be
if
they
switch
to
array
buffer,
but
still
we
didn't
make
any
API
changes
so
that
which
is
greenish
yellow.
That
is
the
third
last.
A
A
D
D
B
Is
is
what
could
be
achieved
if
only
the
the
add-on
maintainer
made
changes
from
using
buffer
to
using
array
buffer
right,
but
otherwise
no
changes
on
our
part
right
and
then
the
last
one
is
what
we
could
achieve
if
we,
if
we
provided
a
validation,
free
functions
for
for
for
both
array
buffer
and
for
for
n64
right.
So.
A
B
D
A
B
Free
or
not
they
do
for
buffer,
because
because
the
the
nodejs
implementation
of
buffer
uses
something
called
array
buffer
view,
and
it
does
the
is
array
buffer
view
first,
so
so
you,
the
node
API,
does
it
but
but
yeah
I
mean
if
they
did
v8,
then
it
would
be
up
to
them
to
do
to
validate
yeah,
whereas.
A
B
B
B
What
type
it
is!
No!
No!
No,
not
necessarily
because
remember
that
that
that
every
every
native
module
is
usually
fronted
by
by
a
JavaScript
module
in
the
same
package
that
the
same
maintainer
brain
controls.
So
so
they
can
do
the
validation
on
the
JavaScript
side
and
make
sure
that
the
binding
always
gets
like
clean
values.
Oh
I.
A
Was
yeah
I
was
trying
to
say
you
know,
for
the
is
for
the
conversion
to
like
you
know,
get
nappy
get
value
in
64
yeah.
They
have
the
same.
You
know
if
they're
using
not
they're,
not
using
nappy,
they're
using
then
or
or
or
v8,
if
they,
if
they
don't
I'm,
just
trying
to
assess
like
if
they
don't
add
the
check
themselves
and
they
try
and
convert
will
they
crash?
Yes
right.
B
A
B
A
A
A
B
D
F
D
B
B
This
need
single
quotes,
nappy
get
and
then
I
don't
know
if
this
works
dot
star
info,
so
we
get
nappy,
get
CB
info,
that's
that
doesn't
do
validation
buffer,
even
if
we
don't
do
validation.
Actually,
we
don't
do
validation
in
app.
You
get
buffer
info
because
we
know
that
no
does
it
on
our
behalf.
All.
E
B
B
If
four-string
you
you'd
want
to
remove
validation
like
mm-hmm
I,
suppose
you
might
I'm
not
sure
what
what
the
general
use
case
is
for
Strings
like
if
you
know,
if
there's
like
lots
of
bulk
string
transfers
going
on
from
js2
native
in
some
module,
but
okay,
let's
in
the
worst
case,
we
have
1
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
so
11
more
api's,
all
of
which
do
exactly
what
these
do
except
eject.
That's.
A
B
Version,
oh!
No,
because
because
the
the
the
whole
reason
why
we
create
them
is,
is
that
performance
is
an
issue,
and
so
we
don't
want
the
stack
construction
destruction
at
that
point.
I,
don't
think
of
another
function.
Call
yeah
I
was
thinking
for
the
for
the
non
safe
for
the
safe
ones
yeah,
but
but
if
the
safe
one,
if
the
safe
one
made
and
made
a
function,
call
to
the
unsafe
one,
then
then
that
that's
a
function
called.
That's
that's
setting
up
a
function,
call
yeah.
A
B
B
True
yeah
I'm,
not
sure,
I'm,
not
sure
how
heavy
that
the
check
is
on
the
on
the
v8
side,
I'm,
just
thinking
more
on,
like
the
maintenance
side
of
things
right
like
well,
my
idea
what
my
idea
was
to
just
to
just
the
in
line
in
line
right,
it's
and
and
just
just
have
a
common
function.
Yes,
but
it's
in
line
so
yeah.
A
H
B
B
Yeah
I
mean
it's,
it's
I
mean
I,
I,
don't
exactly
know
what
what
it
is,
but
but
the
fact
that
this
person
came
out
and
pointed
out
that
this
particular
thing
is
a
bottleneck
for
them.
I
assume
that
this
particular
thing
is
a
bottleneck
for
them,
and
since
it
is
a
hash-table
right,
the
the
hash
table
doesn't
really
do
much
it
just
you
know
it's
mostly
just
set
get
set,
get
a
if
from
from
what
they're
saying
at
least
so.
D
B
A
B
D
B
The
problem
with
the
problem,
with
doing
it
that
way
for
this
module
was
that
that
there
are
two
array
buffers
involved
and
their
data
cannot
be
contiguous
because
of
you
know
the
structure
of
the
module.
So
you
know
the.
What
do
you
call
that
the
application
doesn't
doesn't
allow
those
two
buffers
to
be
contiguous?
So
that's
why
that
that
that
idea
didn't
work
and
it
it
also
has
to
be
zero
copy.
A
A
B
B
Exactly
yeah
I
mean
if
it
were,
if
it
were
normal
data
like
in
thirty
twos
and
and
and
boolean
z'
and
strings
and
stuff,
then
I'm
not
sure
about
strings,
but
at
any
rate
integers
you
could
easily
used
an
array
buffer
versus
like
like
an
array.
If
somebody
came
and
said
you
know,
accessing
a
race
is
slow.
I
would
immediately
tell
them
using
array
buffer
to
transfer
this.
D
B
B
A
B
B
D
B
A
A
Be
like
that
would
be
the
clear
okay.
How
much
is
the
overhead?
You
know?
How
much
are
we
if
you,
if
you
use
this
this
method
instead
of
the
other
one,
you
know
I'd
almost
be
interested
like
for
each
call:
what's
the
Delta,
maybe
it
should
be
the
same
like,
but
if
it's
like
30%
faster
and
then
like
here's
for
a
typical
one,
where
we
have
four
parameters
and
we
have
to
get
it,
you
know
we
have
to
get
those
four
parameters.
B
Parameters
you
have
as
well
right.
Yes,
yes,
in
fact,
we
we
have.
We
already
have
a
benchmark
for
that
for
for
various
combinations
of
parameters
right
and
III.
When
I
wrote,
this
benchmark,
I
basically
used
that
and
just
added
another
case
where
we
have
this
particular
combination.
So
yeah
we
were
already
we're
already
looking
at
things
like
I,
don't
know
like
sending
a
hundred
numbers
across
and
and
stuff
like
that,
right.
A
A
Oh
yeah
I
like
trying
to
show
the
compare
it
like.
What's
the
benefit,
if
we
provide
these
these
eleven
unsafe
functions,
yeah,
okay,
they
don't
necessarily
have
to
write
the
benchmark,
but
if
you
ran
it
on
both,
though
like,
if
you
just
gather
the
data
and
then
present
it
as
the
here's,
the
Delta
benefit
you
get
sort
of
in
the
the
one.
A
You
know
that
the
degenerate
case,
where
you
pass
in
a
single
parameter,
don't
do
any
work
and
return
yeah
and
then
I
guess
the
more
typical
one
of
like
you
know,
couple
parameters
and,
and
then
I
guess
it's.
The
other
thing
is
like
well.
If
you
actually
do
some
work,
you
know,
does
it
actually
matter
and
the
answer
might
be?
Yes,.
A
Yeah,
so
it's
it's
clear
like
we're
really
this
these
things
would
be
to
serve
these
really
chatty
things.
Were
you
doing
nothing
but
hey
if
the
benefits
big
enough?
Maybe
it's
just
worth
it
right,
yeah,
yeah,
yeah,
so
I
think
I.
Just
think,
like
you
know
putting
it
like
that,
it
would
be
a
very
concise
here's.
What
we
might
change,
here's,
what
the
benefit
might
be,
and
here's
specifically
the
case
is
where
it
matters
right
and
then
you
know,
yeah
getting
I
mean
I.
Think
we
just
want
to
we'll
need
to
just
meet.
I
D
A
I
I
I
What
should
ultimately
would
mean
that
we
in
part
of
this
working
group
will
have
to
take
some
of
those
easy
eyes
and
promote
them
to
an
API
right.
So
if
there's
an
intersection
between
tears,
oh
so
small
and
meet
something,
something
is
a
tier
1
thing
for
know
to
support
I.
Think
anyway,
I
should
have
yeah.
A
B
I
A
Yeah
I
hadn't
answered
the
question.
Gabriel
I
had
a
gist
which
was
a
draft
that
I'd
shared
with
a
few
people,
but
my
next
action
is
to
create
a
PR
so
that
we
could
give
you
that
link
okay,
but
it
won't
list.
The
API
is
it'll,
be
it's
like,
like
Ali
said,
it'll
basically
be
like
you
know:
profilers
debuggers,
it's
it's
the
sort
of
higher
level
tools
right,
but
I
think
it
can
be
used
as
one
of
the
things
that
you
would
pry.
B
B
Just
trying
to
figure
out
like
who
would
who
would
write
applications
against
these
api's,
and
why
would
they
and
I
mean?
Would
they
consider
it
important
that
they
be
a
bi-stable
or
are
those
folks
writing
applications
against
these
api's
such
that
they
are
already
fairly
committed
to
know
Jess
and
therefore
committed
to
maintaining
whatever
they
write
to
the
point
where
they
do
not
necessarily
need
this
API
stability?
So
you
know
what
what
is
our
audience
for
these
api
is
basically
I.
Think.
A
A
Yeah
so
yeah
I
think
Ali,
that's
that's
a
good
thought
of,
like
you
know,
I
think
we
we've
already
had
the
thought
of
an
API
could
be
broader.
You
know
we
focused
on
the
module
needs
to
start
with,
but
it's
sort
of
the
place
to
put
address
the
same
issues
in
a
broader
scale
and
that's
probably
a
good
way
to
think
about
prioritization
on
that
front.
A
I
So
at
this
point,
I
just
wanted
to
get
people's
thoughts
and
opinions
on
this.
One
I
think
both
working
groups
probably
need
issues
on
this
topic.
I
think
the
intersection
goes
both
ways
right.
So
what
we
as
part
of
this
working
group,
what
API,
we
should
probably
add
for
nted
to
any
API.
Probably
this
would
be
good
input
but,
on
the
other
hand,
for
diagnostic
working
group
I
think
whether
or
not
something
is
Tier
one.
We
should
probably
think
about.
A
I
B
A
Yeah
absolutely
but
I
think
that's
a
longer-term
thing
like
today,
we're
still
fairly
focused
on
getting
adoption
for
what
we
have.
There
they'll
certainly
be
a
point
where
we
then
say:
okay,
if
we've
achieved
that
what
else
should
we
start
adding
right,
and
this
would
be
a
good
way
to
drive
some
of
that
I
think
so.