►
From YouTube: SES Meeting: Mass revocation of proxies
Description
Alex presents a draft of mass revocation of proxies and Jack Works proposes a higher fidelity module source virtualization, capable of emulating initialization of hoisted functions.
A
All
right
today
is
august
24th,
and
this
is
a
cess
meeting
today
on
the
agenda.
We
have
a
few
topics
we're
going
to
try
to
get
through
at
least
one
today,
we've
set
aside
for
alex
to
discuss
mass
revocation
of
proxies,
has
he's
volunteered
to
champion
that
proposal
as
an
invited
expert
with
the
support
of
jack
and
mark,
and
hopefully
we
can
get
some
paperwork
through,
so
that
alex
can
present
it
at
a
nearby
plenary.
A
So
after
that,
we
have
a
couple
of
topics.
Jack
has
brought
up
an
issue
with
module
virtualization,
specifically
that
there
is
a
particular
form
that
we
can't
of
javascript,
that
it
is
not
currently
capable
of
virtualizing
and
karate
has
some
some
conversations
and
clarifications
you'd
like
to
make
regarding
the
spectex
for
layer
0
around
the
the
shape
of
the
module
constructor
that
we're
converging
upon.
So
with
that,
please
alex
take
it
away.
B
Okay,
just
to
emphasize,
I
do
believe
that
actually
jack
and
mark
are
the
champions
and
I'm
just
the
author,
slash
invited
expert
trying
to
deliver
this
idea.
B
Proxies
currently
take
two
arguments:
there's
a
shadow
target
for
tracking
the
various
properties
and
the
frozen
state,
sealed
state,
I'm
sorry
extensible
state
of
a
proxy
and
the
proxy
handler
which
implements
the
traps.
B
B
So
when
it
comes
to
membranes
and
apologies,
gentlemen,
this
is
reiterating
some
of
the
things
that
we
have
seen
but
have
not
been
presented
to
tc39
in
probably
quite
some
time.
The
first
model
of
membranes
that
mark
and
dr
tom
van
cutsem
came
up
with
was
of
a
cell
membrane.
Hence
where
the
name
membrane
came
from
you're,
either
inside
the
membrane
or
outside
it.
B
B
Well,
when
I
got
to
thinking
about
this-
and
I
I
was
presenting
actually
in
july
2018
at
the
tc39
plenary
in
redmond
washington-
and
there
was
a
question
that
came
up,
saying:
hey
is
biology
required
to
understand
this
and
on
the
fly
I
responded.
No,
you
really
don't
need
that,
but
we're
going
to
get
to
a
three-dimensional
way,
it's
more
three.
It's
a
three-dimensional
model
that
we're
gonna
get
we're
gonna
get
to
at
the
time.
Even
I
didn't
understand
fully
what
I
was
saying.
B
Two
months
later,
I
came
up
with
a
geometric
model
to
illustrate
this
better,
where,
instead
of
either
inside
a
cell
membrane
or
outside
now,
I'm
using
object
graphs
as
two
dimensions
as
a
as
a
two-dimensional
plane
and
the
the
connection
and
they're
parallel
to
each
other.
The
planes
are
parallel
to
each
other.
B
B
B
So
why
are
we
here
for
this
conversation
well
in
april,
2021
mark
pitched
this
idea,
where
I'm
sorry,
I'm
getting
a
little
ahead
of
myself.
Let
me
back
up.
B
When
it
comes
to
shutting
down
one
object
graph,
you
want
to
shut
down
both
the
proxies
in
that
object,
graph
and
proxies
two
objects
in
that
object,
graph
that,
where
the
proxies
live
in
other
object,
graphs
mark
came
up
with
this
idea
of
revoking
having
a
revoked
method
on
a
shadow
realm
which
would
handle
the
first
of
those
revocations
proxies
in
the
same
shadow
realm.
But
it
wouldn't
necessarily
cover
proxies
in
other
shadow,
realms.
B
Which
is
what
this
slide
was
about,
so
the
idea
I
had
was
what,
if
we
had
a
revocation
controller
or
revocation
mechanism
where
we
could
pass
that
in
as
a
third
argument
to
new
proxy
and
to
proxy
that
revocable
and
to
make
sure
that
the
api
was
as
extensible
as
possible,
we
would
pass
it
in
as
a
property
of
an
options.
Dictionary
and
the
options.
Dictionary
would
be
that
third
argument.
B
If
the
signal
itself
is
revoked,
you
clear
the
slots
and
throw
when,
when
invoking
the
proxy,
when
invoking
the
handler
trap,
when
garbage
collection
comes
along
and
sees
a
proxy
with
a
dead
signal
revoked
signal,
it
can
treat
it
as
a
dead
proxy
and
clear
the
slots
right
away.
B
One
of
the
things
that
chris
brought
up,
I
believe,
was
that
this
would
mean
proxy
that
replicable
could
be
considered
a
mistake.
I
don't
think
it
was.
I
think
it
was
a
good
idea.
I
think
it
still
is
a
good
idea
and
that
we
want
to
keep
it
around.
B
B
Less
memory
allocation,
you
don't
have
much
garbage
collection
pressure,
as
bradley
pointed
out
when
I
first
presented
this
idea
to
this
group
as
a
result,
instead
of
hundreds
or
thousands
of
revoker
functions
that
have
to
be
a
created,
be
held
in
a
weak
map
when
c
held
weekly,
I
should
say
no
held
weekly
related
to
the
shadow
target
and
c
invoked
when
you're
trying
to
clean
up.
B
You
have
at
most
one
for
each
element
of
the
power
set
of
object,
graphs,
which
means,
if
you
have
three
object,
graphs
you
have
at
most
eight
revoker
functions.
Actually
technically
seven.
If
you
have
four
object
graphs,
you
have
at
most
16
technically
15
revoker
functions
and
in
most
cases,
you'll
have
n
times
n
minus
1
revoker
functions
at
most,
because
those
are
going
to
be
your
I'm
sorry,
n
times,
n
minus
1
divided
by
2
for
the
number
of
object
graphs.
B
So
in
cross-cutting
concerns
there
have
been
questions
raised
about
cancel
about
the
cancellation
proposal,
which
is
currently
stage
one.
I
believe
I
have
no
objection
whatsoever.
I
think
it's
actually
worth
exploring
whether
the
cancellation
api
that's
been
proposed
is
what
the
shape
of
the
revocation
signal
could
be.
I
think
that's
if
we
can
get
that
proposal
to
move
along
and
get
it
in.
I
think
that's
perfectly
fine.
B
I
don't
remember
off
the
top
of
my
head
if
cancellation
is
synchronous
or
asynchronous,
but
I
do
think
that
we
can
work
around
that
in
one
way
or
another
in
the
javascript
code
base,
as
I'm
sorry,
javascript
client
code,
I
should
say
regarding
the
shadowrealm.prototype
the
revoked
idea
that
spawned
all
this.
I
think
that
we
still
want
to
keep
that
around
and
that
the
two
proposals
actually
complement
each
other.
B
If
you
want,
we
can
take,
I
I'll,
I
can
take
a
few
moments
for
questions
or
we
can
look
at
the
current
proposal.
Spec.
C
Bring
up
what's
an
odd
idea
in
the
weak,
refs
and
finalization
system.
We
did
something
odd
with
regard
to
revocation
and
agorik
since
then
had
a
need
to
revoke
something
with
regard
with
regard
to
a
timer
api
and
we
adopted
the
same
mechanism
and
it
was
surprisingly
good
right.
C
So
the
idea
is
that,
rather
than
having
a
revocation
token,
be
a
thing
with
behavior,
it's
just
an
arbitrary
object
that
you
provide
as
an
additional
optional
argument
and
then
there's
also
a
separate
revoke
api,
where
you
can
revoke
and
provide
the
same
identity
that
you'd
provided
earlier,
and
then
it
revokes
everything
for
which
that
identity
had
been
provided.
As
an
argument,
the
thing
that's
surprising
about
it
is
just
that
you
know
by
reusing
the
same
identity.
C
You
can
revoke
many
things
by
just
revoke
by
just
revoke
and
and
using
that
token,
and
that's
it
that
way.
We
get
that
way.
We
can
avoid
the
entire
issue
about
cancellation
apis
and
the
the
difficulty
of
getting
that
to
move
forward.
Much
as
I'd
like
to
see
it
move
forward,
and
we
are
sitting
on
the
existing
precedent
that
has
succeeded
getting
through
tc39.
B
Yeah,
the
one
pushback
I'll
give
you
on
that
mark
is
that
act
is
based
on
my
own
experience
with
weak
ref
and
finalization
registry,
particularly
the
fact
that
when
you
call
the
finalize
when,
when
the.
B
How
do
I
put
this,
I'm
worried
about
the
lack
of
synchronicity?
It's
okay!
If
you
have
a
synchronous
function
that
causes
the
finalization
and
also
does
marks
a
flag
synchronously
so
that
it
can
be
picked
up
by
a
component
of
the
proxy
handler
to
handle
that
when
someone
else
accesses
that
proxy
handler
through
another
proxy.
C
C
A
The
ron
buchtens
proposal
does
is
explicitly
synchronous
for
what
I
swear
to
alex.
I
see
carrie's
hand.
D
Yeah,
so
the
comments
that
I
have
and
related
to
this
part
of
the
conversation,
so
the
can
you
go
to
the
last
slide
that
you
showed
this
one
here,
yeah
this
one.
So
a
couple
of
notes
on
these.
D
We
don't
we
we
do
have
a
pointer
back
to
back
pointer
back
to
the
actual
function
or
wherever
that
function
live,
but
we
don't
keep
track
of
what
roms
has
that
function
in
the
first
place,
so
how
to
add
more
thanks
to
the
equation
in
order
to
get
any
sort
of
pointer
back
to
a
thing
that
eventually
will
be
revoked.
So
you
can
revoke
this
function
that
you
have
the
term
revoked.
D
D
In
that
case,
I
I'm
not
sure,
I'm
not
sure
about
what
what
what
would
be
the
mechanics
that
we
use
to
be
able
to
say
this
particular
shadow
wrong,
let's
shut
it
down,
and
now
all
the
things
that
were
leaked
out
of
this
shadow
rom
as
functions
like
wrap
functions
or
collaborate,
make
them
useless.
D
The
revolt
case
there
is
tricky,
because
not
only
what
I
explained,
but
also
the
function
is
still
useful.
You
can
add
things
to
it.
You
can
do
all
kind
of
things
that
will
not
trigger
any
any
of
the
things
that
you
trigger.
If
it
was
a
proxy
that
was
revolved,
because
the
proxy
revoked
has
a
lot
more
annoyances
around
it
that
when
you
interact
with
that
object
or
function,
you
you
you
do
get
certain
things
that
will
just
fail
in
the
case
of
the
wrath
function,
you
don't
have
those
constraints,
so
it
doesn't
fail.
D
It
only
fails.
You
actually
call
it.
That's
the
kind
of
thing
that
we
might
we
might
we
we
might
have
a
hard
time
figuring
it
out.
So
the
fact
that
the
the
wrap
function
doesn't
know
where
the
target
function
is
coming
from
makes
it
a
little
bit
more
difficult.
So
that's
one
one.
One
note
on
that
on
the
the
callable
boundary
being
able
to
share
the
cancellation
itself
is
also
problematic,
because
I
suspect-
and
you
go
up
maybe
once
like.
D
One
more
where
you
have
the
example
here
so
for
what
I
can
see
here,
the
style
is
actually
callable,
so
you
can
call
it
to
kill
the
proxies.
B
To
answer
your
first
point:
karate,
I
think
that
I
would
want
to
defer
to
mark,
because
again
the
shadow
realm
revocation
proposal
was
his
idea
and
he
can
explain
to
that
in
more
detail.
I'd
like
to
pump
that
to
a
later
discussion.
If
you
don't
mind.
D
C
Agree
with,
I
agree
with
kurtie's
recommendation.
I
do
think
that
that
there
are
good
engineering
answers
to
the
questions
that
kirk
is
raising,
but
I
think
that
for
what
alex
is
doing,
it's
best
not
to
eat.
You
know
just
to
mention
that
historically
and
not
to
raise
the
idea
that
we
want
to
push
that
actively
alex
in
general.
C
Just
being
being,
you
know
more
minimalist
that
they're
trying
to
to
to
figure
out
what's
sort
of
the
minimal
proposal
that
that
that
satisfies
the
goals
you're
setting
out
to
and
in
particular,
even
if
there
are
good
engineering
solutions
to
the
shadow
realm,
revocation,
which
I
believe
there
are
once
I've
got
good
revocable
membranes.
I
don't
care
because
I'm
never
going
to
use
a
shadow
realm
without
a
membrane
anyway,
and
I
can
just
use
good
membrane,
revocation
to
accomplish
whatever
I
could
have
accomplished
with
shadow
realm.
Revocation.
B
Okay,
I
threw
that
in
last
night
anyway
and
if,
if
you
guys
think
it's
not
worth
having,
I
I'm
perfectly
fine
dropping
it.
Let
me
ask
you:
okay,.
D
Can
you
go
back
to
the
sign
up
because
I
think
they're,
it's
a
cross-country
with
to
what
marx
was
saying
before
about
making
the
sign-on
more
like
a
hand-waving
thing,
like
an
object
that
you
pass
around,
so
the
two
issues
that
I
have
with
this
so
first
of
all,
sign
up
on
itself
is
not
a
thing
that
you
can
share.
D
So
let
me
see
how
can
I
say
this
so
if
you
share
that
sign
up
with
the
shadow
wrong
across
the
call
of
a
boundary
on
the
other
side,
you
will
not
be
able
to
revoke
that
sign
up.
You
can
only
I
mean
you
would
not
be
able
to
use
that
sign
up
for
things
on
the
other
side,
so
that's
an
important
distinction,
I
believe
so.
Basically,
oh.
B
D
See
what
you're
getting
at
we
created
a
sign
out
here.
That
sign
was
not
useful
beyond
the
current
rom
that
you
are
on
okay,
okay,
so
you
will
not
be
able
to
do
the
second
line:
new
proxy
yada
yada,
with
the
sino
that
you
receive
across
the
membranes
that
that's
just
announces,
but
we
need.
We
need
to
clarify
that
or
at
least
have
it
somewhere.
So
it's
basically
it's
per
wrong,
so
you
can
only
use
it
in
that
realm
itself.
Okay,.
D
The
second
thing
is
that
the
the
sign
on
itself,
which
is
callable
here,
you
will
be
able
to
share
it
with
another
rom
and
call
it
at
the
other
rom
and
it
will
trigger
the
kill
of
the
proxies.
So
that
works
fine.
So
I'm
giving
that
thing
to
you,
you
you
don't
know
what
it
is,
but
if
you
call
it
it
kills.
D
My
proxies
fine
now
that
you
will
have
to
do
that,
but
it
will
work
that
way,
because
the
wrapping
will
just
call
the
underlying
sign
up
and
that
kills
the
proxy
the
making
that
thing
arbitrary
object.
I
don't
know
if
it's
more
useful
or
not.
D
You
still
will
be
able
to
maybe
use
like
imagine
that
you
use
like
a
symbol,
because
it
could
be
anything
so
you
could
use
a
symbol
and
then
you
can
share
that
symbol
between
different
realms
and
use
these
things
to
create
to
create
new
proxies
on
the
other
side,
with
the
same
symbol
and
now
suddenly
you
can
revoke
that
symbol
in
one
side
and
what
are
the
implications
of
doing
so?
Is
it
going
to
kill
every
every
proxy
that
was
created
with
that
symbol
across
the
board?
Even
if
it
is
across
the
realms?
D
I
believe
it's
doable
because
the
same
memory
space,
but
it
might
it
might.
What
I'm
trying
to
say
is
that
mark's
idea
of
using
an
arbitrary
object
might
actually
work
better
than
a
callable
for
these
cases
of
across
realm
membranes,
and
when
I
say
across
around
membrane.
E
D
B
Yeah,
let
me
take
a
moment
to
unpack
what
you've
said
here:
carrie,
because
we
you
kind
of
ran
two
or
maybe
three
ideas
together
there
in
that
answer.
B
Regarding
whether
signal
is
a
callable
function
or
a
symbol
or
whatnot,
I
personally
do
not
care
that
much.
I
am
simply
throwing
this
idea
out
there
to
see
what
sticks
and
I
think
that
that's
something
we
can
determine
as
we
evolve
this
proposal.
B
I
reviewed
the
video
last
night
in
preparation
for
this
conversation,
so
we
may
need
to
go
back
and
revisit
that.
D
That
in
january
I
was
more
opposed
now,
not
that
much
of
a
posties.
It
seems
like
a
good
idea,
but
we
need
to
clear
these
little
things.
B
Right
regarding
options
being
a
dictionary
object
containing
properties.
I
did
that
deliberately
because
I
was
worried
about.
If
we
made
the
revocation
signal
a
top
level
argument,
then
we
might
risk
getting
the
api
wrong
more
than
anything
and
worried
about
breaking
things
in
forward
compatibility
and
affordable.
D
I
agree:
I
agree
with
that,
a
good
so
the
way
I'm
looking
at
this
is
basically
can
I
have
an
option
that
sign
up
to
the
proxy
that
the
handler
should
be
read
once
during
creation
time
rather
than
keep.
It
then
live
something
like
that,
so
to
make
it
faster
things
like
that,
we
might
be
able
to
add
it
later
on
in
the
option
box.
D
B
Okay
and
then
your
last
point,
charity
or
actually
your
first
point
was
about
the
relationship
between
the
membrane
and
the
realms,
and
this
has
been
a
point
that
we've
had
a
little
bit
of
cross
chatter,
on
where
in
one
in
my
scenario,
the
realms
are
child
realms
of
the
realm
that
the
membrane
is
running
in
and
in
the
scenario
you're
posing
the
membrane
is
inside
one
of
those
realms
and
the
other
realms
are
siblings.
B
That
is
an
important
distinction
it's
worth
thinking
about,
but
I
think
that
really
depends
on
the
design
of
the
membrane
itself
and
not
on
the
proposal
here.
I
think
that
both
ideas
should
inform
this
proposal
conceptually,
and
I
cannot
give
you
a
better
answer
than
that
at
this
point.
A
You
are
going
to
go
on
back
to
slide
eight.
I
believe
to
ask
a
question
about
this.
This
point,
I
I
concur
that
this
could
be
a
this.
Could
this
this
particular
it
does.
A
To
be
mentioned
that
that
this
might
make
the
the
existence
of
proxy
revocable
duplicative
with
a
new
api,
that's
that's
not
a
concern.
It's
equip
more
than
anything
else
and
certainly
would
do
nothing
to
give
energy
to
this
proposal
so
yeah,
I
figure
you
should
take
it
out.
C
B
Okay,
I
mean
drop
this
slide.
A
Yeah
it's
kind
of
here
nor
there
it's
yeah
sure
it
may
have
been
a
mistake,
but
that
doesn't
affect
whether
this
is
a
good
fix
and
it
doesn't
affect
whether
we
can
remove
proxy
replicable.
It's
it's.
It's.
It's
not
possible.
Yeah.
A
Yeah,
so
there
yeah
there's,
there's
no
reason
to
mention
it
is
in
terms
of
additional
for
additional
feedback
for
bringing
this
to
plenary.
I
think
that
it
with
the
time
you
save
from
omitting
those
slides.
I
think
that
it
would
be
great
to
lead
this
presentation
with
a
recap
of
not
just
what
is
a
membrane
or
why
we
need
a
more
sophisticated
model
for
membranes
or
why
we
need
we
need,
but
it
would
be
good
to
talk
about.
Why
would
you
use
this?
A
What's
the
motivating
use
case
say
why?
Why
have
revocation
at
all
and
then
how
do
membranes
exacerbate
the
problem
and
how
does
having
mass
replication
address
the
problem
created
by
large
amounts
of
membranes
or
large
cardinality
membranes.
B
I
have
thought
about
that
and
I
have
not
rejected
that
chris.
I'm
thinking
about
this
in
terms
of
that's
what
these
first
five,
these
five
slides
here
were
about
was
trying
to
reintroduce
membranes
and
you're
saying
I
haven't
gone
deep
enough
into
that.
Okay,
I'll.
Take
that
point.
A
Yeah,
I
guess
to
be
explicit.
I
think
that
the
reason
why
you
need
a
membrane
is
so
that
you
can,
you
is,
is
very
I.
I
agree
that
there's
thing
there
are
things
to
worry
about.
Is
that
it's
part
of
the
object
capability
model
that
that
that
motivates
the
need
for
this.
The
ability
to
revoke
an
authority,
that's
imbued
by
a
capability
and
the
capabilities
transitively
received
from
it,
which
might
not
be
a
popular
stance.
But
it
is
an
honest
one
about
the
motivation.
B
I
guess
what
I'm
coming
from
is
trying
to
see
how
much
of
this
is
material
that
the
current
map,
delegates
and
members
of
tc39
are
familiar
with,
because
again,
the
speech
that
mark-
and
I
gave
was
four
years
ago
and
there's
been
quite
a
lot
of
evolution
since
so
it
may
be
good
to
add
more
slides
before
slide
three
here,
borrowing
from
my
more
general
presentation-
that's
better
written
in
my
opinion,.
C
B
Okay,
all
right
well
that
that
that's
a
very
important
thing
to
keep
in
mind:
here's
what
I'll
do
I'll
edit
this
to
add
in
a
lot
of
those
introductory
slides
mark,
but
I'm
worried
about
taking
this
from
a
30-minute
talk
to
a
60-minute
talk.
If
you
know
what
I
mean.
C
Oh
absolutely
absolutely
you're
much
better
off
with
the
30
crimes
for
a
30
minute
time
slot
all
together,
including
qa.
I
definitely
think
you
should
go
for
that,
even
though
they
hadn't
seen
your
previous
membrane
talk.
I
think
you
can
assume
that
everybody
on
the
committee
knows
what
a
membrane
is.
So
I
I
I
don't
think
this
talk
is
is
is
miscalibrated
in
terms
of
that,
I
don't
think
a
lot
needs
to
change
because
of
the
the
committee
turnover.
I
just
wanted
you
to
keep
in
mind.
A
B
Let
me
take
that
thought
offline.
I
hear
what
you're
saying
I
just
don't
know
how
to
answer
right
now
off
the
off
the
cuff.
C
C
I
think
I
mean
at
this
point:
membranes
are
just
one
of
the
programming
patterns,
people
use
in
javascript,
it's
entrenched,
it's
established
and,
and
the
idea
of
it
being
a
boundary
for
imposing
some
kind
of
policy
about
what
crosses
the
boundary.
I
think
is,
I
think,
that's
maybe
I
miss.
Maybe
I'm
overestimating
the
degree
to
which
people
already
understand
that,
except.
E
Not
knowledgeable
with
the
concept
of
membranes
until
sometime
2020,
I
think
when
I
started
reading
about
more
about
proxies
and
their
use
cases.
B
Yeah,
I
will
probably
add-
I
I
will
probably
add
a
few
slides.
I
hope
to
keep
it
down
to
two
between
slides
two
and
three,
but
that's
a
big
assumption
at
this
point
guys
because
and
the
counterpoint
is,
if
I
have
to
explain
membranes
every
single
time
that
I
present
this
idea.
That's
gonna
be
annoying
to
everybody
in
the
room.
Not
just
me.
D
Is
to
find
other
use
cases
that
use
a
membrane
but
are
more
close
to
what
people
are
doing
these
days
in
frameworks
and
libraries,
for
example,
you
look
at
libraries
like
vue.
They
use
the
reactive
proxies.
You
look
at
libraries
like
a
few
of
them
that
I
can
send
you
a
link
that
are
you
do.
D
Yeah,
I
don't
know
if,
for
them
this
will
be
useful,
but
they
definitely
use
a
membrane
approach.
We
use
it
one
sulfur's,
it's
called
observable
membrane,
which
is.
D
D
For
for
those
cases,
we
use
sort
of
an
estate
machinery
there
where
we
say
okay,
this
proxy
is
useful,
is
not
useful
anymore
and
what
we
we
drop
all
together
from
the
weak
map,
and
we
remove
the
thing
from
the
scheduler.
Basically
that
updates
the
ui,
but
nevertheless
this
is
a
case
where
you
have
multiple
proxies
that
has
to
work
in
in
a
in
in
a
coordinated
manner,
and
you
want
to
drop
all
these
proxies
at
once.
D
A
I
think
this
would
be
a
good
time
to
segue
to
our
next
topic,
alex.
What
do
you
say,
yeah.
B
B
Yep,
I
will
probably
want
to
run
this
by
this
group
again
in
about
a
month
and
then
possibly
also
before
fry
a.m
and
take
the
roasting.
At
that
event,.
A
Excellent
jack,
you
still
with
us.
A
Yeah
jack,
you
brought
up
a
topic
about
virtual
module
sources
not
being
sufficiently
advanced
to
virtualize
javascript
itself.
E
E
No
just
in
the
issue,
so
I
think
we
should
make
some
change
in
the
virtual
module
format
so
because
I
am
actually
using
it
in
our
production.
So
it
somehow
will
be
a
problem.
E
So,
as
you
can
see
in
the
issue,
if
we
have
a
code,
yes,
module
that
writes,
exports
a
function
declaration
and
it
will
not
be
expressible
in
the
current
virtual
module
format,
because.
A
So
let's
talk
a
little
bit
about
about
scope
so
with
the
original
compartments
proposal,
when,
when
mark
pitched
virtualizable
modules
to
me,
part
of
the
it
was,
it
was
a
well-known
caveat
and
limitation
that
it
wouldn't
be
suitable
for
emulating,
javascript,
and
that
was
in
a
in
a
prior
form.
That
was
much
much
farther
from
being
able
to
emulate.
Javascript.
C
C
The
you
know
live
javascript
is
the
only
thing
that
needs
live
bindings.
You
know,
wasm
does
not.
Jason
obviously
does
not,
and
I
think
that
you
know
any
language
that
that
might
seem
to
to
need
live
findings.
You
can
do
the
kind
of
the
wasm
the
tricks
that
wasm
does
to
emulate
them
by
other
means,
so
so
yeah
the
and
the
the
what
it
would
take
to
do.
A
virtual
module
api
that
did
support
live
bindings.
I
just
felt
it.
E
A
And
at
that
time
the
virtual
module
api
was
substantially
less
ready.
It
was,
but
so
what
has
changed
is
that
moddable
implemented
a
modable
proposed
an
adjustment
to
the
compartments
api,
where
in
instead
of
having
well
in
any
case
to
this,
where
there's
a
first
argument
to
initialization.
A
That
is
an
object
representing
the
the
essentially
the
shallow
properties
of
the
module
environment
records,
the
the
the
the
values
that
are
bound
both
exported
in
and
imported,
such
that
you
could
just
do.
A
You
could
address
the
properties
of
that
in
anywhere
in
javascript
where
and
a
bound
name
was
mentioned,
and
that
puts
us
much
closer
to
being
able
to
emulate
javascript,
and
it
seems
like
this
is
just
one
more
that
we're
just
one
more
step
away
from
being
able
to
do
it,
but
it
does
come
with
a
complexity,
cost
that
we
might
or
might
not
want
to
pay
so,
but
first
off
jack,
totally
recognized
that
this
is
a
useful
api
for
our
purposes.
E
A
E
I
want
to
share
our
use
case,
so
I
am
working
on
a
plugin
system
that
is
fully
visualized
and
so
and
and
we
cannot
use
a
vowel
in
our
environments,
so
system
cannot
be
used
and
my
answer
to
this
is
I
made
a
compiler
to
compile
all
es
modules
into
the
virtual
module
format.
So
it's
important
to
me
that
this
format
should
be
able
to
emulate
fully
emulate
the
es
module.
E
E
I
think
we
should
have
some
way
to
fix
this
problem.
C
D
E
D
A
A
Yeah
the
the
problem
is
that
if
you
have
two
functions
as
jack
said,
if
you
have
two
modules
that
are
using
function
hoisting
by
current
esm
semantics,
regardless
of
which
of
those
modules,
is
the
entry
point
in
a
cycle,
both
of
them
should
be
immediately
available
able
to
access
a
reference
to
the
to
each
other's
functions
because
they
got
hoisted
to
it
to
initialization
time
which
preceded
execution
time
for
both
of
the
modules.
D
Somehow,
and
in
in
that
case,
there
might
be
some
issues
with
modules,
depending
on
that
virtual
module
is
that
it.
A
A
Another
way
of
looking
at
it
is
that
there
is
potentially
one
way
of
looking
at
virtual
modules
is,
is
that
there
is
possibly
a
way
to
d
to
look
at
them
as
de-sugared
modules
right
the
the
idea
is
that
there's
a
mapping
from
a
syntactic
module
to
a
virtual
module
that
the
question
is:
does
that
need
to
be
fully
faithful
to
javascript
so
to
the
extent
if,
if
you're,
linking
webassembly
or
json
or
an
html
web
component,
or
something
like
that,
this
issue
is
not
in
is.
A
It
is
not
necessary
for
virtual
modules
to
be
a
to
support
a
full
de-sugaring
of
javascript
javascript
modules,
but
for
jack's
use
case.
It
is
necessary.
C
Yes,
let
me
mention
that
the
this
pre
this
early
export
of
function
is
actually
a
a
distinct
complexity,
then
from
the
live
bindings
they're,
both
kind
of
in
the
same
area,
but
but
I
hadn't,
even
you
know
when
I
decided
to
reject
my
bindings
to
avoid
the
complexity.
I
wasn't
even
really
thinking
about
this
early
export
of
function
of
hoisted
functions.
That's
also
just
a
very,
very
odd
and
very
javascript
specific
semantics.
C
So
jack
is
is
yours?
Do
you
have
a
suggested?
You
know
minimal
addition
to
the
virtual
modules
api,
yeah.
E
I'm
not
sure
if
it
is
minimal,
but
the
form
I
suggested
in
the
the
top
top
thread
and
possible
to
support
life
binding
and
functional
hoisting.
It
is.
It
is
also
like
how
system.js
support
for
esm
module
semantics,
but
it
brings
a
lot.
I
believe
it
brings
a
lot
complexity
in
the
individualized
environment
stage,
because.
D
D
Can
we
wait
until
we
get
to
that
api
because
we
haven't
really
see?
I
haven't
seen
that
the
relationship
or
the
intersection
semantic
between
these
and
the
work
that
we're
doing
for
module,
source
and
module
instances
and
reflection
and
data.
It
seems
too
early
for
me
to
comprehend
what
the
problem
is.
A
We,
it
seems
that
your
suggestion
is,
is
mandatory
actually
since
we're
over
time
by
a
few
minutes,
and
this
is
obviously
a
topic
that
we're
going
to
revisit.
Thank
you
for
bringing
this
jack.
C
A
So
essentially
taking
the
virtual
module
protocol
that
we
have
and
then
adding
a
new
phase
to
it
by
partial
application.
Essentially.