►
From YouTube: Node.js N-API Team meeting - June 17 2019
Description
A
So
welcome
to
the
napi
team
meeting
for
June
17
2009
teen
we're
going
to
start
out
with
a
little
bit
of
a
different
approach
for
today's
meeting,
as
opposed
to
going
through.
Like
our
current
milestone,
we
have
a
li
and
uh-huh
from
Google
who
are
gonna.
Tell
us
a
little
bit
about
some
work
that
they've
done
to
investigate
how
an
API
and
wasum
sauce
was.
A
B
Sure
hi
everyone,
my
name,
is
Adi
and
I'm
working
with
ohad
he's
an
intern
on
our
team,
and
he
has
been
looking
at
making
webassembly
works
better
for
Needham
worth
of
authors
up
to
date,
like
what
we've
discovered.
Is
that
not
not
too
many
modules
native
modules
are
written
with
webassembly
in
mind
because
and
there's
lots
of
barriers
there
so
so
has
been
spending
some
time
investigating
those
and
understanding
those
and
and
to
be
clear.
B
The
the
benefit
we
see
is
that
native
add-ons,
even
with
any
PR
NEPA,
solve
the
problem
that
you
need
to
write
the
mounts,
but
you
still
need
to
compile
it
for
all
different
binary
targets
and
node
API
and
different
distributions
of
node
or
node
h,
things
like
electron,
and
there
is
still
quite
a
bit
of
a
burden
on
ad
module.
Authors
and
the
banner
we
see
in
web
assembly
is
that
it's
really
a
portable
binary
format,
so
I
think
it
would
be
great
if
native
module.
B
Authors
could
actually
just
write
one
slate
with
what
somehow
and
then
distribute
once
using
web
assembly.
So
so
what
some
of
the
things
we
discovered
were?
First
of
all,
so
webassembly,
the
the
compiler
support
is
coming
along
really
well,
but
the
biggest
barrier
for
module
authors
is
getting
the
bindings
written
right,
so
the
so
the
code.
So
let's
take
libsass
as
an
example,
so
combining
lips
has
to
webassembly
it's
not
too
difficult.
You
just
need
to
do
some
make
fellowship
edits
and
you're
done.
You
have
an
assembly,
but
how
do
you
actually
talk
to
JavaScript?
B
Now
there
that's
the
difficult
part,
so
there's
projects
like
Emscripten
and
I'm
bind
but
they're
designed
with
the
browser
in
mind,
and
they
require
you
to
actually
modify
your
source
code
in
order
to
work.
Well,
there's
other
technologies
like
web
IDL
that
are
one
not
quite
mature
yet
and
second,
there
seem
to
be
designed
with
more
of
a
sort
of
browser.
Ish
use
case
in
mind,
so
we
do
not
think
web
is
a
web.
Idl
would
serve
for
the
nose
work
for
the
node
native
module
ecosystem
and
and
that's
I,
think,
a
discussion.
B
We
should
probably
start
having
with
webassembly
working
groups
to
make
sure
that
the
the
JavaScript
platform
doesn't
end
up
with
the
ideal
story.
That
is
very,
very
focused
on
the
browser
use
case
and
doesn't
address
the
node
media
module
use
case,
but
anyway,
that
that's
more
of
a
digression.
So
so
right
now,
what
we
discovered
was
there's
no
real
do
that
exists.
That
makes
it
easy
for
later
module
authors
to
just
target
web
assembly
and
node,
so
so
so
so
so
hard
actually
came
up
with
an
idea
and
it
turns
out
independently.
B
C
But
the
approach
that
I
think
is
the
most
straightforward
for
having
all
the
features
and
keeping
up
with
like
what
the
actual
an
API
does
is
to
essentially
like
give
access
directly
to
an
API
from
webassembly.
So
the
way
I'm
doing
that
I
guess
I'll
point
to
it
with
the
mouse.
So
basically,
we
have
node,
which
exposes
the
N
API
and
it's
pretty
simple
to
just
hook
into
that
from
an
8-bit
module.
But
hooking
into
that
from
webassembly
is
obviously
gonna
not
be
straightforward,
because
there's
no
way
to
do
bindings
easily.
So
essentially
without.
C
C
B
In
a
nutshell,
I
think
what
this
enables
is
that
if
some,
if
a
module
has
been
written
against
any
API,
then
what
we
will
do
is
expose
some
any
bi
imports
that
could
be
built
into
node.
So
in
NN
API
you
could
say
it's
important.
So
in
your
web
assembly
code
you
could
say
import
any
bi,
something
from
any
bi
and
that
basically
allows
gives
you
access
to
all
of
the
any
API
functions
and
nav
is
an
abstraction
about
over
on
top
of
the
VM
right.
B
So
so
that,
basically,
is
your
way
of
talking
to
JavaScript.
So
the
idea
is,
if
you,
if
you
have
a
Moneta
module
that
can
all
it
is
already
written
against
an
ABI,
then
you
don't
actually
need
to
modify
anything.
You
can
simply
compile
it
to
Val,
'some
and
node
will
provide
some
of
these
boxes
at
runtime,
so
you
can
import
directly
from
them
and
that's
it
like
your
module
works
as
a
web
assembly
module.
If
no
provides
these
API
and.
A
C
Right
so
it's
basically,
this
is
kind
of
focused
on
like
how
we
can
do
things
with
cross-platform
libraries,
because
webassembly
isn't
really
gonna
ever
solve
like
calling
like
a
windows
api
function,
just
because
how
like
separated
it
is
from
like
the
native
platform
and
so
essentially
like
modules
that
would
fit
into
this
well
or
like
things
like
libsass,
which
are
like
pure
compute
based
right.
Okay,.
A
B
So,
for
example,
if
you
wanted
SQLite
working
then
three
other,
then
that
all
could
be
webassembly
and
that
could
work,
including
the
I/o
part,
which
was
he
would
write.
But
if
you
have
in
compute
strictly
speaking,
you
don't
even
need
wuzzy
right,
because
what
you
need
was
he
for
the
iOS
and
the
system
calls.
And
if
you
might
use
that,
then
yep
then.
A
A
However,
if
you,
if
you're
using
small,
you
know
if
you're
not
using
anything
special,
you
can
potentially
even
just
compile
it
down
to
something
that
will
run
everywhere
through
us
right,
which,
which
sounds
like
a
great
story
to
meet
and
and
consistent
right
as
opposed
to
well,
if
you
want
to
do
something
here,
go
do
something
completely
different
than
what
you
were
doing
before
all
right.
Yeah.
C
So
the
goal
of
this
is
really
to
make
it
like
straightforward
for
someone
to
start
porting
libraries
to
web
assembly
without
really
having
to
put
like
a
lot
of
planning
into
how
to
execute
it.
And
it's
bending
like
right
months,
worrying
about
everything.
Ideally,
it
should
be
pretty
much
like
one
to
one
compatible
with
just
the
normal
and
API
you.
C
Basically,
unscripted
is
built
on
top
of
LLVM
and
a
lot
of
the
features
from
unscripted
have
been
back
ported
into
LLVM
so
that
you
can
just
use,
claimed
and
compiled
to
webassembly
the
difference
being.
That
Emscripten
is
very
much
built
for
like
compiling
things
to
JavaScript
browser
code
in
general,
and
it
has
a
long
kind
of
like
history
of
doing
that.
I
guess,
which
has
created
some
like
leaky,
abstractions,
I,
guess
into
how
a
lot
of
the
interaction
with
the
browser
works.
C
So
what
that
means
is
that
the
api's
are
generally
designed
for
JavaScript
and
don't
really
work
great
inside
of
web
assembly,
and
so
one
way
of
getting
around
that
is
really
just
to
cut
out
the
middleman
there
and
do
everything
directly
through,
like
the
web
assembly
API
and
just
compiled
to
like
straightforward
web
assembly
code.
To
do
that.
You
can
just
use
claim
as
normal
and
just
a
couple
like
build
step
changes.
Yeah.
B
D
B
What
do
you
do
to
it
to
get
it
to
JavaScript
lines?
Krypton
has
lots
of
non-standard
sort
of
conversions
that
it
does
that
are
sort
of
very
browser
specific
in
my
opinion,
and
also
sort
of
non-standard
things,
and
it
just
has
its
behaviors
that
may
you
may
not
necessarily
want
in
a
native
add-on
right,
so
so
yeah
I'm
Krypton
seems
like
like
a
dead
end.
From
that
point
of
view
to
me,
okay,.
A
C
C
So
I
don't
think
GCC
has
a
webassembly
back-end
right
now,
but
in
theory
you
could
pretty
much
use
em
script
in
instead
of
claim.
For
example,
if
you
just
disabled
some
of
the
like
extra
code
generation
and
in
theory
like
any
c
compiler
that
compiles
to
Wasson
should
work
as
long
as
it's
fairly
like
standard.
C
B
I
personally
have
been
using
the
huazhi
SDK,
but
which
is
like
packaging
of
LLVM
yeah
with
the
wall
GC
suit,
which
means
that
if
it
actually
makes
the
life
really
simple
and
getting
anything
compiled
because
your
function
does
any
it
uses
any
functionality
from
Lib.
C
then
was
he
provides.
It
means
that
you
don't
actually
have
to
figure
out
how
to
get
your
print
working.
It
just
works
with
the
least
amount
of
resistance,
possible
and
I
said.
D
B
Compare
work
right
so
in
the
anything
up
till
the
Cisco
is
provided
by
the
system
like
the
header
files
and
what
he
provides
yeah
and
then
the
rest
is
provided
at
runtime,
there's
a
experimental
PR
from
def
snik
that
adds
wali
supporter
node,
so
we've
been
playing
with
that
and
that
actually
works
really
well.
Okay,.
A
C
A
C
Where
I
am
right
now
is
I,
have
most
of
the
like
wrapper
functions
already
written
and
that
just
all
pretty
much
auto-generated
code
and
those
are
just
finding
directly
into
you.
You,
like
the
actual
API,
there's
a
couple
of
things
that
I
still
have
to
add
to
that
like
for
more
specific
cases
where
I
can't
just
auto,
generate
the
code
and
then
I
have
the
headers
written.
B
A
C
In
the
near
term,
like
some
of
the
features
that
we
require,
aren't
landed
in
node
yet
so
this
is
probably
going
to
be
built
on
top
of
the
like
node
CI
build,
which
has
like,
though,
one
of
the
like
newer
versions
of
v8
since,
like
basically,
we
have
to
back
port
the
Waze
and
C
API
for
this
to
really
work.
But
that's
already
in
the
node
C
I
build.
So
right
now
is
probably
going
to
be
built
on
top
of
that
and
then
we'll
take
those
changes
out
and
migrate
them
to
node
as
needed.
Yeah.
B
It
makes
sense
for
node
to
provide
so
it
doesn't
ultimately
becomes
a
node
pull
request,
so
it
will
probably
be
called
nappy
unstable
in
in
the
spirit
of
our
episode
is
doing
things
like
modules
are
a
call
away.
So
then
the
namespace
they
put
a
unstick
unstable
suffix
on
the
namespace
so
that
until
it's
really
stable.
C
Yes,
the
wrappers
are
just
gonna,
be
like
it's:
it's
not
a
lot
of
code.
That
really
has
to
be
added,
just
like
one
small
wrapper
for
every
function
in
nappy
and
then
all
that
it's
doing
is
basically
like
overriding
how
node
passes
in
or
I
guess.
In
this
case
it
would
have
to
override
how
v8
passes
in
imports
to
webassembly.
C
Just
because
we
have
to
add
some
default
ones
and
that'll
just
be
like
a
simple
change
to
be
it,
and
then
node
will
automatically
pass
these
in
as
long
as
the
like
feature
flag
is
enabled,
but
like
in
terms
of
how
the
code
will
be
it'll,
be
like
a
separate
file
from
the
actual
nappy
stuff,
it'll
share
the
same
headers,
most
likely
and
yeah.
So
basically
just
a
couple
like
extra
functions
and
then
something
that
passes
that
into
web
assembly
code.
C
Yeah
and
then
I
guess,
if
you
look
at
the
diagram,
you
can
kind
of
see
like
where
these
different
parts
are.
So
the
rapper
is
just
going
to
be
like
doing
what
nappies
doing
and
it's
kind
of
parallel
to
huazi
support,
because
they're
accomplishing
the
same
kind
of
goal
of
exposing
like
a
native
API
to
webassembly
modules.
Right.
C
C
So
I
don't
think
that
it
will
take
very
long
to
be
at
a
point
where,
like
the
code
works,
but
there
are
a
lot
of
changes.
I
have
to
do
to
the
build
system.
I
guess
like
JIP,
won't
really
work
here
out
of
the
box,
and
so
I'm
still
gonna
have
to
look
into
that.
But
I
don't
think
that,
like
the
actual
rapper
code
and
headers,
and
all
that
should
be
done
by
the
end
of
this
week
at
the
latest,
I
think
unless
there's
like
some
big
thing,
we'll.
B
A
C
Yeah
so
I
think
this
is
pretty
near-term
having
it
like
work
out
of
the
box
is
probably
gonna,
take
like
the
remainder
of
the
summer
and
just
because
there's
a
lot
of
kind
of
like
changes
that
I'm
gonna
have
to
make
so
that,
like
when
everyone
ever
you
build
a
native
module.
It
knows
like
to
build
with
the
huazi
SDK
and
to
like
enable
the
yz6
route
and
stuff
like
that,
but
yeah.
What.
A
What
like,
once
you
know
something
like
we
do
we're
doing
for
HTTP
3
is
we
have
a
separate
repo
with
a
fork?
B
A
B
A
B
C
Yeah
so
because
I
guess,
the
needs
of
a
web
assembly
module
on
node
versus
the
browser
are
gonna,
be
so
different.
I
think
it
makes
a
lot
of
sense
to
kind
of
pick
like
a
node
specific
solution
here,
yeah
so
yeah.
That's,
basically
the
reasoning
behind
happy
and
just
the
fact
that
it's
so
easy
to
you.
But
you
gives
us
all
the
information.
We
really
need
to
write
bindings
right.
The.
B
I
think
that
that's
that's
an
important
but
I
think
it's
still.
It's
I
think
it's
something
worth
considering,
but
I
think
that's
something
we
should
take
up
with
the
web
assembly
working
groups
to
make
sure
that
the
solutions
being
designed
they're
actually
serving
the
need
of
both
the
web
and
and.
B
I
think
we
need
to
start
so
we're
actually
meeting
with
some
of
us
have
any
folks
on
this
problem.
The
fact
that
the
by
DL
is
not
it's
not
sufficient
for
for
the
needs
of
the
native
modules
for
this
use
case,
but
ideals
doesn't
work
right.
So
so,
if
you
are
creating
something
like
an
API
binding
through
web
assembly
for
node,
now
the
browser's
never
going
to
have
it
so
so
that
tells
us
that
I
think
there's
some
problem
that
we're
not
solving
in
a
general
way
on
the
web
assembly
side.
B
So
it's
possible
that
there's
a
more
generic
solution.
That
can
be
like
this
that
we
agree
with
that.
Everybody
can
have
this
API
that
just
works
universally
everywhere
or
we
take
an
API
as
a
starting
point
and
iterate
from
there
or
we
say
actually
an
API
is
pretty
good
and
that
that
probably
would
works
even
in
the
browser
side.
I
think
those
conversations
need
to
be
started,
I'm,
not
sure.
B
A
Yeah
no
be
interesting
to
see
some
of
those
discussions
like
I'd
mentioned,
like
actually
an
API.
The
implementations
already
split
out
into
like
a
node
specific
piece,
and
the
piece
we
think
is
a
generic
JavaScript
set
of
API
is
because
there
was
like
another
implementation
that
wanted
to
use
an
API,
but
wouldn't
necessarily
had
to
note
that,
so
it
might
be
that
that
subset
would
be
the
thing
that
would
make
sense
for
browsers
versus
the
whole
thing,
but
and
yeah
so
B
I'll
be
interested.
B
Actually
talked
to
at
climbed-
and
he
noticed
this
issue
as
well
so
and
we're
talking
to
some
more
folks
at
Google
who
were
working
with
assembly
on
get
their
take
on
it
and
figured
out
how
like
what
are
the
right
channels
to
talk
about
this,
so
I
think
it
makes
sense
to
look
people
like
to
get
you
all
looped
into
those
discussions
so
once
I
know,
some
names
that
you
can
talk
to
I
can
share
them.
Okay,.
A
Let's
talk
to
see
if
we
could
understand
the
the
sort
of
overlap,
synergy,
non
synergy-
and
you
know
this-
what
you've
described
it
kind
of
been
pitched
so
to
say,
is
like
there's
that
at
all
within
the
the
sort
of
approach.
How
does
it
line
up
with
you
know
the
future
that
they
see
or
not
right,
yeah.
B
A
B
B
All
right,
yeah
that
that
was
all
from
our
side.
We
wanted
to
get
this
introduced
to
people
and
if
you
have
any
thoughts
or
questions
or
comments,
do
send
them
our
way
and
as
soon
as
we
have
something
that
we
didn't
share,
that
people
knew
people
can
play
with
employed
feedback,
we'll
post
it
to
the
the
the
working
group.
A
A
A
A
A
Think
so
I
haven't
spent
enough
time.
Thinking
about
it
myself,
but
I
think
that
the
number
of
parameters
like
you
would
basically
say:
I'm
telling
that
I'm
creating
a
parameter,
I'm,
creating
a
function
and
I
know
that
the
number
of
parameters
is
two,
for
example,
all
right
I'm,
not
quite
sure
how
that
gets
set
behind
the
scenes.
Now,
yeah.
F
A
A
But
I
think
I
think
you
know
before
I
could
properly
answer
your
question.
I
need
to
do
some
more
research
myself
as
well.
Okay,.
A
E
A
G
A
G
D
G
G
G
A
G
E
A
G
F
A
A
H
A
H
G
G
G
E
G
A
G
G
A
G
G
F
E
B
A
Yeah,
which
do
we
okay,
so
the
date
thought
now
is
right:
okay,
cuz
right!
That's
basically
giving
you
the
current
time,
Millie's
not
related
to
what's
inside
of
it.
Okay,
all
right,
good,
good
point
to
time
string
to
you
to
string
value
of
so
really
it's
only
if
you
cast
it
as
an
effort,
it
gives
you
the
yeah.
F
G
A
A
H
H
A
H
F
A
H
F
A
E
A
E
F
A
Was
just
trying
to
ask
if,
like
everybody,
it
sounded
like
everybody
likes
to
number
the
best
and
that's
what
we
should
suggest
yeah
I
like
that?
Okay,
so
this
is
the
comment
I
had
like
from
discussion.
Any
guides
meeting
we
suggest
a
number
it's
similar
to
some
of
our
other
conversion.
Functions
is
similar
to
help
casting
to
to
a
number
best
conversion
on
the
JavaScript
side,
mm-hmm.