►
Description
Wherein ZB from MetaMask/Consensys and Peter and Patrick from Moddable meet to discuss options for the timing of the importMetaHook and also how to overload the module descriptor object.
A
A
May
the
force
be
with
you
all
the
today
we
have
a
topic
that
zibi's
going
to
present
on
the
compartment
api.
We
have
some
open
questions
and
wanted
to
talk
with
our
friends
at
moddable,
patrick
and
peter,
about
the
value
type.
Pj
is
finishing.
C
Yeah,
so
let
me
start
by
sharing
the
screen.
C
Maybe
I'm
not
sure
if
I
want
to
start
here,
but
maybe
let's,
since
this
is
the
least
important
stuff,
so
I
was
experimenting
with
some
means
to
inject
node
internals
into
what
endo
is
building
so
that
it
it
would
actually
get
accepted
because
just
giving
it
a
a
bunch
of
key
values
didn't
work,
and
that
means
there
needs
to
be
a
static
model
record,
and
that
is
one
of
the
places
where
we
might
think
of
slightly
changing
the
api
so
that
the
the
modules
entry
that
we're
providing
to
the
compartment
would
not
require
going
through
the
actual
compartments
internals.
C
I
think
I
have
some
bookmarks
here
where
there
is
there's
this
concept
of
an
exit
module
in
import
hook,
at
least
for
endo,
and
these
are
the
modules
that
we're
passing
from
the
outside,
but
for
them
to
actually
work,
they
need
to
be
found
in
the
module
aliases
and
the
only
way
to
get
there
is
to
actually
go
through
their
the
ferret
exports
being
created
first
and
being
the
thing
that
is
becoming
the
namespace
for
the
module.
C
So
that's
that's
one
thing.
I
was
considering
putting
into
the
design
of
any
changes
we
want
to
make
to
the
static
module
record,
so
it's
not
going
to
be
necessary
anymore
to
do
this,
but
this
is
just
a
bunch
of
context
and
I
think
what
we
want
to
focus
on
is
more
about
introducing
stuff
like
import,
meta
and
the
hook.
C
The
most
important
thing
is:
how
do
we
even
figure
out
what
the
url
is
and
even
worse,
how
do
we
provide
the
result
function?
So
there
is
import
meta.resolve,
which
is
going
to
be
expensive
to
create
so,
instead
of
creating
it
for
every
module,
we
should
create
it
for
the
ones
that.
C
Actually
needed
and
there's
this
part
that
analyzes
the
whole
thing
analyzes
the
the
module
being
loaded
and
it
can
already
find
what's
sitting
on
the
import
as
a
keyword,
so
any
member
expression,
so
import
dot,
meta,
dot.
Something
is
going
to
land
in
import
matter
priorities
and
then
I'm
wrapping
it
into
these
temporary
flags
uses
import
meta
and
a
list
of
properties
that
are
actually
being
used,
and
based
on
that,
I
can
know
if
I
want
to
yeah,
let's
find
github
you're
trying
to
be
helpful.
C
D
C
We
can
call
that,
so
this
is
only
one
of
them.
D
C
A
A
B
Yeah
yeah,
I
want
to
clarify
if
you
were
only
detecting
import
meta
or
are
you
trying
to
do,
detection
of
which
properties
of
import
meta
are
used,
and
how
would
you
ever
be
able
to
do
that.
C
I'm
not
a
hundred
percent
sure
this
is
working,
but
the
thing
you
saw
is
attempting
to
detect
the
properties
from
import
meta
and
I
had
I
had
two
different
implementations.
This
is
just
one
of
them,
so
I.
A
It
can't
be
done
reliably
and
we
probably
shouldn't
do
it
as
part
of
the
compartment
standard.
Api
zb's
already
doing
static
analysis
for
heuristic
static
analysis
for
common
js.
So
there's
we
have
a
certain
amount
of
comfort
doing
that.
Okay.
So
this
is
your
stakes.
C
D
C
This
is
the
one
that
we're
doing
for
the
standard
modules,
and
here
I
implemented
the
rewrite
from
import.meta
into
the
hidden
variable
dollar,
h,
underscore,
etc,
and
since
it
was
already
here
and
each
other's
element
had
the
analyze
step,
I
thought
let's
see
how
much
I
could
do
with
the
analyze
step.
So
this
draft
has
an
implementation
of
detecting
some
fields
that
happen
to
be
on
the
meta.
C
So
we
can
use
that
and
make
it
a
bit
more
specific,
because
I'm
pretty
sure
we
will
want
to
differentiate
between
import.metadot,
static
fields
versus
import,
meta,
resolve
usage.
A
Let's
continue
to
see
what
the
rest
of
your
proposal
is.
I
know
that
we're
not
going
to
well
suspect
that
we're
not
going
to
want
to
pursue
that
too
deeply,
but
let's,
let's
see
how
it
gets
hooked
up
toward
with
the
rest
of
your
proposal.
C
Not
much
to
be
honest,
but
there's
two
places
where
I
started,
considering
putting
the
use
of
this
information.
So
currently,
if
I'm
using
import
meta,
an
import
meta
hook
is
available,
I'm
trying
to
get
it
either
at
the
time
the
module
is
loaded
because
that's
when
we're
awaiting
things-
and
that
means
invert
meta
hook-
could
be
awaited.
C
D
C
Yes
and
eventually,
the
resolve
function
as
well.
D
A
A
There
there's,
let
me
allow
me
to
clarify.
As
far
as
tc39
is
going
to
be
concerned,
there
will
be
nothing
on
import
meta,
it's
it's!
It's
a
the
contents
of
import
meta
are
beyond
anything
except
empty
is
host
defined.
A
There
are
three
hosts
of
interest
today,
one
of
which
is
the
web,
which
does
provide
import
meta,
earl,
there's
node,
which
provides
import,
meta,
earl
and,
I
think,
is
going
to
add
import
meta,
resolve
and
resolve
it's
already
there
yeah
import
meta
resolve
is,
is
node
specific
and
there's
a
chance
that
it
could
end
up
on
the
web,
but
it
would
have
to
be
driven
by
an
import
import
map
to
in
order
to
have
a
meaningful
result.
A
B
By
default,
no
following
last
discussion
about
that
import
meta
is
an
empty
object.
Okay,
for
like
everything,
except,
if
you
add
something
to
it,
when
you
are
returning
from
the
load
hook
or
the
module
map
hook
and
so
on.
So.
B
There
is
nothing
inside
meta
the
in
time
we
populate
the
ufi
property
of
import
meta
in
it
for
some
for
some
time
that
that
are
using
it.
But
but
it's
not,
there
is
nothing.
It's
really.
It's
so
platform
specific
that
even
from
access
point
of
view
it
it's
really
depending
on
the
the
us
and
everything
and.
B
A
Yeah,
I
hope
that's
clarifying,
go
ahead.
Zd.
C
Yeah,
I'm
actually
more
interested
in
digging
deeper
in
what
it
currently
is
in
excess.
So
my
question
would
be:
where
is
the
import
meta
object
coming
from,
so
that
it's
surfaced
to
the
loader
and
loader
can
add
stuff
in
there?
B
B
Object
of
the
module,
so
the
the
I
can
easily
so.
B
C
You
yeah
yeah
every.
B
Time
every
time
you
load
a
module,
you
have
the
possibility
to
provide
an
object.
The
object
is
copied
into
the
import
metal,
with
the
object
assign
semantic
so
going
I
mean
exactly
that,
calling
in
fact
that
and
and
so
the
and
I
mean
that
that
works
well,
and
I
I
think
I
know
I'm
sure
I
commit
several
examples
of
that
in
the
in
the
x-nap
example,
and
yes,.
D
Before
you
unshare
the
current
screen
line,
172
is
a
comment
that
has
this
highlighted
very
strange
identifier.
New
va.
D
B
You
want
you
want
me
to
share
my
screen.
I
can
try,
my
bandwidth
can
fail,
but
let's
try
if.
A
It
fails
patrick
just
share
just
share
the
url
to
something
on
github,
perhaps
yeah.
You
can.
D
B
The
size
is
okay,
okay,
so
yeah.
Here
we
have
out,
we
create
two
new
static
module
records
which
allow
us
to
check
if
there
is
to
get
import
with
the
ui,
and
so
the
compartment
is
having
a
module
map.
With
two
envelope
I
mean
descriptor
module
descriptor,
it's
a
record
module
descriptor.
So
it
has
a
recall
this
one
and
it
adds
some
meta
object
with
a
uri
property
which
is
arbitrary.
B
Of
course.
It's
it's
something
it
can
be
whatever
whatever
you
want.
B
So
if
I
do
a
c
import
of
this
one,
cb.js,
okay,
it
will
load
that
and-
and
so
this
will
import
a
from
dos-
I
mean
dot,
slash
a
dot
js
which
will
get
patrick
and
so
on.
If
and
then,
if
I
print
the
default,
I
will
leave
a
which
is
that
string
plus
that
string,
which
is
bit
of
js.
So
it's
completely
it's
completely
open.
B
B
So
that's
that's
the
I
mean
the
simple,
a
simple
way
of
doing
it.
It
also
work.
I
don't
know
if
I
don't
know.
If
I
have
an
example
there,
it
also
work
with
if
the
load
return,
that
kind.
B
Yes,
here
we
are
so
here
we
have
a
node
another
compartment
which
has
a
load
book
which
takes
a
specifier,
and
this
is
this
is
ready
to
test
it.
It
builds
a
module
on
the
fly
with
export
default,
import,
metal,
ui
and
put
the
specifier
into
the
uri.
B
So
when
you
do
c
import,
a
the
result
is
a.
If
you
lose
input
b,
the
result
is
b
b,
the
result
is
b
and
so
on,
so
that
it
works
the
same
in
the
module
map,
the
module
map
hook
and
the
load
book
for
a
spouse.
Meta
is
is
concerned.
B
The
same
the
same
thing
works
also
with
the
import
notebook
so
and
some,
but
that's
not
the
concern,
I
I
don't
think
I
I
tried
it
with
the
module
map.
No,
there
is
no,
but
it's
the
same.
So
there
is
no
no
chance,
it
will
be
different.
B
So
the
the
the
important
point
for
me
and
the
xs
does
not
implement
yet
the
import
meta
hook,
because
I
didn't
know
when
to
call
it
basically
and
and
so
the
what
I
had
is
that
which
is
like
I
mean
a
little
strange
to
me,
is
that
you
want
to
add,
like
an
extra
step
in
the
module
machinery
like
we
have
all
the
steps
that
are
described
in
the
tc39
spec
in
some
way,
but
could
be
described
in
a
different
way.
B
But
we
have
several
like
already
a
synchronous
step
for,
like
loading
binding,
I
mean
all
the
all
the
things
and
and
so
the
I'm
a
little
afraid
to
add
a
new
asynchronous
step
there.
So
my
my
instinct
would
have
been
to
call
the
import
meta
hook.
B
When,
when
the
module,
so
when
the
the
module
is
really
executing
import,
meta
dot,
something
okay,
whatever.
B
Yes,
when
the
when
the
directive,
the
input
meta,
it's
a
special
kind
of
thing.
So
when
that
is
evaluated,
if
if
the
module
doesn't
have
yet
a
populated
import
method,
saying
it
will
code
in
four
meter
hook,
we
will
populate
it
and.
D
B
A
Call
that,
for
the
purposes
of
this
conversation,
let's
call
that
option
a.
C
For
for
option
a,
I
even
thought
of
making
import.meta
either
a
getter
on
an
import
reference
or
a
proxy
for
the
sake
of
reading
the
values
from
it,
so
that
we
would
just
tie
into
it
directly.
So
the
idea
would
be
that
it's
all
evaluated
at
runtime.
C
This
means
we
need
to
put
a
bit
more
care
into
securing
the
actual
import
meta
hooks
evaluation
and
it
has
to
be
synchronous.
So
that's
option
a
option
b
is
we
run
import
meta
hook?
If
we
know
that
input
meta
exists
in
the
source
code,
even
if
it's
not
being
called,
but
we
also
do
it
synchronously.
C
C
We
could
implement
it
at
the
load
time.
So
these
are
the
three
options:
option.
A
is
effectively
a
getter
option
b
is
at
instantiation
time.
Synchronously
and
option
c
is
a
synchronous
hook,
and
that
can
happen
only
when
we're
loading
or
linking.
A
Let's
just
talk
about
option
c:
let's
get
more
concrete
on
it.
I
see
no
reason
why
it
should
be
any
other
if
we
went
with
option
c.
A
I
think
that
the
only
reasonable
top
the
most
obvious
reasonable
time
to
do
that
would
be
immediately
after
calling
the
load
hook
right
and
if
it
happens
at
that
time,
then
there's
no
reason
to
not
do
the
same
behavior
within
the
load
hook,
provided
that
the
static
module
record
constructor
provides
the
metadata
that
it
needs
in
order
to
perform
the
operation
and
then
just
include
it
on
the
meta
property
of
the
property
of
the
module
descriptor.
Is
that
about
right,
yep,
good
question:
go
ahead,
mark.
A
A
What
I
propose,
what
what
I'm
suggesting
is
that
option
c
is
incoherent,
because
it
could
be
boiled
into
the
load
hook
and
we
wouldn't
need
an
import
meta
hook
at
all.
Oh,
that
makes
sense.
A
Yeah,
though,
in
order
for
that
to
be
true,
the
static
module
record
would
need
to
return
an
object
that
tells
you
whether
the
import
meta
is
needed,
and
I
think
that
that's
also
reasonable
to
allow
the
static
module
record
constructor
to
do
some
additional
static
analysis
and
add
a
property
so
that
the
load
hook
could
use
it.
Okay,.
D
Let
me
let
me
just
keep
wanting
to
clarify
this
one
issue,
so
what
we
mean
by
needed
is
that
it's
statically
mentioned,
but
it
statically
appears
not
has
nothing
to
do
with
whether
it's
inaudible.
D
Okay,
so
one
reason
why
I'm
nervous
about
option
a
this
is
by
no
means
a
a
disqualifying
consideration,
but
the
generally.
D
Memory
from
a
first
evaluation
to
other
evaluations,
either
the
expression
evaluates
to
something
that
already
exists
and
in
which
the
whatever
side
effects
that
might
have
been
caused
by
it's
already
existing
have
already
happened,
or
it's
evaluated
afresh
every
time
with.
No,
so
the
the
you
know,
the
kind
of
reinferency
attack
issue
right.
D
If,
if
the,
if
the
hook
has
side
effects,
then
having
the
side
effects
happen
before
the
mo
anything
in
the
module
itself
is
evaluated,
is
fair,
you
know,
protects
the
module
from
any
reentrancy
and
having
it
evaluate
having
the
hook
happen.
D
Each
time
it's
evaluated
means
that
the
that
you
know
the
the
about
that
the
expression
is
effectively
a
procedure
call
to
whatever
those
things
are,
but
having
the
side
effects
happen,
the
first
time
and
then
memoized,
so
it
doesn't
happen
later
times
for
an
expression
seems
weird
like
I
said
it's
not
disqualifying,
but
it
seems
weird
so
having
it
hap
having
it
happen
up
front
before
module
evaluation
happens
and
having
it
happen.
There
therefore,
based
on
static
appearance
rather
than
evaluation,
does
seem
cleaner
to
me.
D
I
also
don't
see
any
reason
why
the
semantics
of
import
meta
would
need
a
synchrony
so
doing
it
both
static
and
synchronous
seems
like
the
the
simpler
all-around
way
to
approach
this.
That's
adequate.
A
Okay,
let's
so
just
to
summarize
where
we
are
so
far
in
the
conversation,
I
think
that
we
are
going
to
narrow
the
conversation
to
the
distinctions
between
options.
A
and
b
option
c
is
off
the
table,
except
for
possibly
coming
back
and
having
another
conversation
about
revealing
whether
import.meta
is
uttered
in
the
source
as
a
property
of
the
static
module
record
constructed
by
that
constructor
and
we'll
just
table
that
issue.
For
now,
the
distinction
between
a
and
b,
I
believe,
the
biggest
distinction
between
options.
A
A
and
b
is
their
failure
modes
or
if
there
is
a
distinction,
that's
the
important
one
and
there
might
be,
and
and
knowing
that
a
and
b,
both
ten,
both
fail
during
the
execution
of
the
module
might
be
important.
A
B
Right,
yeah
yeah
too,
not
20,
I'm
sure,
but
why
why
there
is
option
a
is
because
I
mean
there's
one
I
mean
other
other
input.
The
dynamic
import
call
is
very
different.
The
first
time
you
load
the
module
and
then
the
next
time.
B
There
for
sure,
so
that
I
mean
there's
something
there
that
that's
why
I
was
thinking
about
that
in
that
direction,
but
I
would
agree
that
option
b
is
simpler.
I
mean
like
for
sure.
A
Yeah,
so
to
be
concrete
option
b.
My
understanding
of
option
b
is
that
the
import
meta
hook
would
be
called
at
the
beginning
of
the
synchronous
execution
of
the
initialization
of
that
module
in
which
is
to
say
the
first
turn
of
its
initialization.
If
you
take
into
account
the
top
level
of
weight,
and
so
if
an
error
were
thrown
at
that
time,
it
would
foul
the
promise
for
that
module
and
any
module
that
depends
upon
it.
A
Before
any
of
the
code
in
that
module
has
an
opportunity
to
execute
there,
let's,
there
might
be
an
even
more
defensive
position
to
stand,
which
would
be
to
say,
let's
call
it
option
d,
which
is
an
option
b
variant
that
all
of
the
import
meta
hooks
for
the
working
set
that
are
about
to
be
executed.
Synchronously
would
be
collectively.
A
That
would
be
synchronous
with
initialization,
but
call
all
of
the
import
meta
hooks
for
all
of
the
modules
in
the
working
set
that
uttered
import
meta
before
any
of
them
have
an
opportunity
to
execute,
in
which
case,
in
which
case
a
a
a
dependency
would
have
an
opportunity
to
follow
the
module
record
for
things
that
depend
upon
it,
which
I
think
is
disqualifying.
So,
let's
drop
option
d
entirely.
B
A
Yeah,
this
is
a
requirement.
That's
coming
from
our
friends
who
work
on
node.js
and
node.js.
They
introduced
import
meta
resolve
as
a
property
that
they
embellish
their
import.
Meta
with
and
import
meta
resolve
by
necessity,
is
a
closure
because
it
has
to
close
close
over
the
refer
url
in
order
to
do
its
job
and
because
creating
that
closure
is
expensive.
It's
a
huge
overhead
for
large
module
graphs
that
mostly
do
not
take
advantage
of
that
feature.
Okay,.
A
D
I
think
that's
a
that's
a
necessary
consequence
of
the
fact
that
import
meta
is
an
expression
and
the
expression
results
in
a
first-class
value.
That
can
that
you
can,
you
know,
pass
around
so
so
I
think
that's
just
necessary
consequence
of
that
design.
B
A
A
The
same
way
would
be
to
say
that
it
that
option
a
is
an
optimization
of
another
behavior,
essentially
equivalent
to
option
c
right
that
that
the
only
way
to
make
it
to
phrase
this
to
the
standard
such
that
it
is
an
optimization
that
does
not
need
to
be
implemented
by
every
host
would
be
to
say
that
hosts
have
the
option
of
implementing
options
c
or
a
oh.
I.
A
B
Called
like
what
I
meant
is
like,
so
you
have
a
compartment
which
has
an
involvement.
B
Okay,
you
load
a
module
and
if
we,
if
we
choose
option
b,
it
means
that
the
import
meta
hook
is
called
it's
synchronous
and
it's
called
before
the
execution
of
the
module.
Yes,
okay,
so
the
question
is:
can
us
always
call
the
import
method,
or
does
the
us
ask
to
check
if
the
module
mention
import
meta.
D
I
would
I
would
recommend
I
I
would
strongly
recommend
that
it's,
if
that
we
specify
if
the
module
mentions
import
meta
because
the
to
to
leave
it
at
you
know
to
to
leave
this
as
a
choice.
It's
an
observable
choice.
It's
not
it's
not
a
unobservable
optimization,
and
that
makes
the
platform
more
non-deterministic
if
there
was
a
strong
reason
for
it.
I
mean
if
this
is
an
important
optimization
to
enable
this
to
be
a
choice.
D
You
know,
then
then
we
should
discuss
it,
but
I
don't
think
there's
a
big
payoff
here.
I
think
we
can
just
make
it
be
exactly
if
import
meta
appears
statically.
B
You
you
remember
that
I
mean
some
of
the
modules
we
are
importing
in
access
are
already
compiled,
okay,
so
detecting
if
input-
and
we
don't
have
the
source
so
in
time,
so
in
detecting.
If
import
meta
is
mentioned,
it's
of
course
possible,
but
hater
requires
to
flag
the
the
module
which
is
not
currently
planned
or
to
go
through
the
bike
code
to
check
if
import
meta
is
mentioned
somewhere
in
the
background.
B
B
No,
no,
I
don't.
I
don't
think
that
way.
Just
I
don't,
since
I
have
no
picture
of
how
expensive
it
is
to
the
involvement
of
can
be,
I'm
I'm
not
sure
to
understand
why
we
want
so
much
to
avoid
to
call
it.
A
Yeah,
I
think
it's
as
simple
as
that.
There
are
node
applications
with
thousands,
tens
of
thousands
of
modules
in
their
working
set
and
that
and
initially
and
startup
times
matter
for
node,
especially
in
the
cases
of
command
line
utilities.
B
C
So
this
could
bring
us
back
to
putting
hints
about
meta
being
there
on
the
static
module
record
and
even
the
compiled
modules
would
then
have
those
hints
available.
So
we
put
it
in
that
stage
of
the
process
and
your
compilation
produces
the
the
white
code
and
the
meta
information
about
it
being
uttered
or
not.
A
A
C
Yeah,
if
we're
not
decided
upon
b,
I
have
one
more
thing
about
a
that
you
might
not
like,
which
is
import.
Meta
is
supposed
to
survive
with
its
content.
So
if
you
put
something
on
the
import
meta,
it
should
be
there.
C
So
I
think
we
would
have
to
implement
it
in
a
way
that
if
a
module
references,
import,
meta
and
then
references
it
again,
it
necessarily
needs
to
get
the
same.
C
Exact
object
reference
from
it,
so
you
would
have
to
return
it
from
cache.
So
the
difference
between
the
first
call
and
every
subsequent
call
needs
to
exist.
B
Yes,
something
like
that,
but
yes,
the
the
I
have
to.
I
have
to
check
how
complicated
it
is
to
flag
modules
that
they
mentioned
in
port
meta,
because
if
it
is
not
complicated,
then
option
b
is
way
way
simpler.
Like
I
mean
I
can
call
the
import
method
synchronously
before
the
execution
of
the
module,
and
that's
that's
simple
enough.
C
I
don't
know
much
about
how
access
goes
through
contents
of
modules,
but
in
in
endo
it's
part
of
an
existing
step.
It
was
just
a
matter
of
taking
a
note
of
detecting
import
meta
in
a
pass
that
was
already
happening
over
the
source
code,
so
it's
possible
that,
for
the
sake
of
replacing
all
imports
with
something
else
or
for
the
sake
of
transforms
in
cess
or
the
compartment
that
detect
stuff
like
imports
or
html
comments,
you're
already
making
that
pass
over
the
source
code.
B
You
know
for
sure
I
mean
compiles
everything
into
bytecode
and
it
detects
import
meta
it
just
just
that
that
flag
is
not.
Currently,
I
mean
there's
no
flag
for
that.
It
just
generates
the
white
bicone,
but
okay,
I
will.
I
will
investigate
that.
But
if
we,
if
we
agree
on
the
synchronous
execution
of
the
input
meter
hook,
then
I
can.
I
can
do
the
work
on
that.
I
was
afraid
of
the
extra
steps,
but
but
more
than
about
detecting
the
import,
meta
presence.
C
A
C
Anything
I'm
doing,
I
don't
really
need
it
to
be
a
synchronous,
because
there's
places
to
put
any
asynchronous
work
that
would
need
to
happen
to
provide
the
url,
it's
mostly
already
being
done.
C
A
So
we're
coming
up
on
time.
Unfortunately,
I
think
that
we
want
to
have
more
of
this
conversation.
Well,
I
know
I
know
we
need
to
have
more
of
this
conversation.
So,
let's,
let's.
A
Yes,
there
are
more
topics:
okay,
okay,
but
it's,
but
I'm
really
grateful
that
we've
come
to
what
appears
to
be
a
decision
on
option
b
and
we'll
we'll
we'll
go
co-implement
that
and
see
how
it
works
same
for
me.
I
will
tell
you
yeah
the
I'd
like
in
future
meetings
to
talk
about
the
shape
of
the
module
descriptor.
A
It's
looking
a
lot
like
the
module
map
and
the
load
hook.
If
I
read
what
patrick
has
has
shown
in
his
examples
correctly,
the
types
the
type
signature
the
overload
for
that
object
is
consistent
across
all
of
load.
Hooks
return.
A
A
We
could
probably
simplify
it
to
simply
being
that
all
of
those
have
a
module,
descriptor
object
that
can
and
we
switch
on
its
shape,
which
means
that
there's
a
possibility
of
having
a
shape.
That's
dedicated
to
threading
a
module
namespace
object
without
a
power,
a
module,
namespace
object
that
carries
powers
in
that
position,
and-
and
we
we
can
have
a
conversation
about
that-
perhaps
next
week
or
in
a
subsequent
week,
depending
on
the
availability
of
the
people
who
need
to
participate
and
I'll
take
care
of
that
out
of
band.
B
That
would
be
great.
I
I
think
it's
a
it's
a
very
important
thing
to
agree
on,
because
it
it
really.
It
really
helps
both
implementation
and
the
usage
I
add
of
combatment
to
if
that
descriptor
thing
being,
I
mean,
switch
based
on
this
shape
and
not
having
like
multiple
dives
and
so
on,
and
I
think
I
think
it
makes
sense.
B
A
Yeah,
which
means
that
we
could
have
an
orthogonal
conversation
about
whether
the
static
module
record
constructor
continues
to
be
useful.
I
think
it
does,
but
for
purposes
of
static
analysis
and
not
for
the
purposes
of
linkage.
It
looks
like
we
have
a
different
solution
to
that
problem:
that's
simpler
and
probably
easier
to
get
through
standards.
A
I
inevitably
when
we
propose
static
module
constructor
as
a
triple
barrel,
camel
case
name
in
global
namespace.
I'm
sure
that
we're
going
to
hit
resistance.
A
Okay,
that's
time,
I'm
going
to
turn
off
the
recording.
Thank
you
for
a
very
productive
conversation
today.
Thank
you.
Thanks.