►
From YouTube: SES-mtg: 28 October 2020 Part 2
Description
No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).
B
That's
right,
yeah.
I
I
feel
pretty
strongly
about
that
too
yeah
this
this
this
you
know
in
order
to
not
presume
that
consensus
existed
on
that
issue.
Already,
when
I
read
wrote
the
slides
I
I
left
it
as
import
hook,
so
that
there
was
some
clarity,
but
I
do
think
so
that
we
should
does
anybody
object
to
renaming
import
hook
to
load
hook
in
the
future
are
going
forward,
at
least
in
the
scope
of
this
conversation.
B
Okay,
cool,
I
will
point
out
and
replace
import
hook
on
these
slides,
live
and
I'll
go
back
and
edit
them
later.
B
B
The
the
the
purpose-
I
don't
wish
to
overload
so
bradley
you're,
referring
to
the
distinction
between
you're
you're,
referring
to
the
distinguished
the
a
distinction
between
the
module
specifier,
is
requested
and
the
module
specifier
as
obtained.
D
D
So
currently,
whenever
we
go
through
a
load
in
node,
we
must
resolve
to
a
full
path.
We
can't
resolve
to
a
redirect
that
is
re-entering
on
the
loader.
D
Is
this,
as
I
understand
it,
able
to
be
re-entrant.
B
It's
not.
The
expectation
is
that
you
return
that
you
must
return
in
your
from
from
the
load
hook
must
return,
not
just
it
must
return,
both
the
information
of
the
redirect
and
the
and
the
static
module
record
of
the
module
that
you
were
redirected
to
it.
Can't
it
cannot
result
in
a
re-entrance
into
the
load
hook.
B
No,
they
are
not
mutually
exclusive
and-
and
I
only
had
compartment
for
completeness-
we
didn't
need
it.
B
I
see
what
you're
saying
yeah
that
the
specifier
in
the
target
compartment-
I
I
I
will
find
out
what
the
escape
button
is
on
this
computer.
D
Yeah,
that
seems
fine.
We
actually
had
an
older
spec
for
loaders.
That
effectively
did
this,
so
that's
actually
kind
of
nice
to
see.
We
had
specifier
be
optional.
Originally
in
that
and
then
after
designs,
we
made
it
not
optional.
We
never
shipped
that
api,
but
yeah.
B
How
do
you
solve
the
problem
without
how
do
you
solve
the
problem
of
nodes
redirect
for
in
I
mean
there
are
other
cases
I
know
like
symbolic
links
or
http
redirects,
but
just
for
example.
D
So
that's
done
during
resolution
and
resolution
is
done
prior
to
evaluation
prior
to
parsing.
Even
and
so
here
you
would
perform
resolution,
and
that
is
how
you
obtain
your
static
module
and
then
you
must
provide
the
absolute
url
in
our
case,
which
is
effectively
the
full
specifier.
A
D
Normalization
that
node
does
on
that.
Actually,
when
you
provide
a
the
absolute
url,
it
does
real
pathing
by
default.
B
Yeah,
I
I
remember
having
a
conversation
with
brian
cantrell
at
a
conference
and
and
one
of
the
points
that
he
made
was
well
at
that
time
it
was
still.
There
was
still.
It
was
still
raw.
B
The
common
js
was
adopted
by
node
and
the
the
downside
purportedly
was
that
common
gs
at
least
appears
to
be
a
synchronous
api
and
by
node
is
implemented
as
as
a
synchronous
api,
and
the
downside
of
that
is
like
sure
some
there's
some
web
portability
issues,
or
at
least
it
was
perceived
as
a
time
to
be
limiting
web
portability
and
brian's
brian's.
B
Take
on
this
because
brian's
coming
from
a
systems
programming
pro
this
was
ryan
bell's
boss
at
the
time
and
at
giant
and
his
point
was
well
you're-
never
going
to
asynchronously
dynamically
load,
a
dynamic
library.
So
what's
the
point
in
worrying
about
it,.
D
Yeah,
so
we
actually
do
have
an
outstanding
issue
with
upgrades
to
move
stuff
to
asynchronous
forms,
but
the
cost
of
crossing
the
c
plus
plus
barrier.
Until
recently,
it
was
just
too
drastic
to
ever
think
of
using
asynchronous
programming,
because
you
cross
the
barrier
more
often.
B
Yeah,
oh
it
I.
I
think
that
that
is
fine
as
an
optimization.
It
certainly
is
not
contrary
to
the
spirit
of
the
thing.
As
long
as
the
compartment
api
allows
you
to
make
that
choice
by
allowing
for
the
load
hook
to
be
async,
the
the
problem
is
that
the
resolve
hook
must
be
synchronous,
but
I
don't
think
that
that's
actually
a
problem,
because
node
the
node
resolver,
is
something
that
takes
place
underneath
the
locate
phase
within.
D
B
Yeah
well,
what
I'm
suggesting
is
that
the
resolve
hook
as
proposed
for
in
the
compartment
api
is
synchronous,
but
it
is
not
the
same
thing
as
the
the
as
the
resolve
function
in
in
node,
correct,
yes,
and
that
if
you
there's,
certainly
no
harm
in
doing
a
logical
resolution
before
doing
a
I
o
based
location
like
I,
I
would
call
nodes
resolve
hook
to
locate
in
the
context
of
the
compartment
api.
B
A
B
B
Import
hook
only
receives
a
full
specifier:
okay,
yeah
yeah,
okay.
So
it's
it
sounds
like
this
is
this
is
it
sounds
like
there
wouldn't
that
this
would
not
meet
objections?
Introducing
this
the
this
aliasing
feature.
B
All
right,
we'll
I'll,
create
the
issue
and
and
and
eventually
get
around
to
writing
a
pr
for
this.
This
change
to
the
api.
B
Okay,
global
lexicals,
this
one
is
going
to
be
long
and
tedious.
I
suspect.
B
So
the
motivator,
the
motivation
for
this
proposal
is
that
at
agoric
we
needed
a
way
to
introduce
lexically
scoped
variables
into
a
compartment
that
were
not
that
were
not
discoverable
by
enumerating
the
properties
of
the
global
object,
and
the
reason
for
this
is
to
in
is
in
order
to
create
metering
in.
In
our
particular
case,
the
metering
is
metering
is
a
similar
use
case
to
instrumentation
through
a
code
transform.
B
So
so
then,
because
that's
more
familiar
I'll
describe
that,
instead
of
metering.
So
if
you
were
using
a
tool
like
nyc
with
istanbul
to
do
code
coverage
analysis
of
a
program,
you
would
do
that
by
doing
two
things
with
the
compartment
api.
You
would
do
that
with
two
things
one
would
be
by
introducing
by
for
one
introducing
a
global,
introducing
an
object
in
the
scope
of
every
module.
B
That
is
a
dumping
ground
where
coverage
information
can
be
recorded
by
the
text
of
that
module,
and
then
you
would
introduce
a
transform
that
converts
every
expression
and
statement
into
first
first
record.
I
got
here
on
that
global
object
and
then
execute
the
the
expression
that
was
actually
intended
and
like
using
the
comma
operator,
for
example,
and.
B
That
is,
that
is
sufficiently
that
particular
use
case
is
sufficiently
served
by
adding
a
coverage
object
to
the
globalness
of
the
compartment.
Metering,
on
the
other
hand,
is
not
is
very
similar
in
the
case
and
because
that
there
you're
adding
you
are
in
a
transform
code,
transform
introducing
statements
that
record.
I
got
here
so
that
so
that
those
so
that
execution
can
be
halted
if
it
runs
too
long,
the
but
the
tr.
B
The
problem
with
that
approach
is
that
for
metering,
that
global
object
must
not
be
tamper,
discoverable
or
temperable
by
the
program
that
is
under
metering,
and
in
order
to
do
that,
it
was
necessary
for
us
to
introduce
it
as
a
lexically
scoped
variable
that
is
not
discoverable
on
the
global
object,
and
we
did
that
by
creating
an
enter
scope
around
the
global.
This.
B
B
I
say
on
the
slash
bullet
point
necessary
for
rebels,
which
is
not
actually
correct.
This
is
this
is
no
longer
true.
What's
necessary,
for
rebels
is
a
similar
feature,
but
not
the
same.
Repels
have
this
rule
that
if
you
do
successive
evaluation
in
sloppy
mode,
that
any
constants
that
are
declared
by
a
previous
eval
are
preserved
for
a
subsequent
eval.
B
This
was
previously
discussed.
I
believe
pr
people
in
in
previous
conversations
with
tc39
that
was
called
the
global
contour,
which
is
a
name
that
everybody
hates,
but
is
this
the
handle
that
sticks
for
now
and
is
distinct
from
global
lexicals.
A
Well,
you
say
it
is
distinct
from
global
obstacles.
It
is
potentially
okay.
What
we're
proposing
is
only
one
concept:
we're
proposing
to
support
global
lexicals
by
supporting
the
global
contract,
correct.
A
You
know
in
order
to
support
the
global
contour,
and
I
would
certainly
object
to
introducing
two
two
such
odd
concepts.
One
such
odd
concept
is
unavoidable,
because
it's
in
the
language
as
it
exists
right
now,
in
order
for
apartments
to
fit
with
the
full
language
outside
of
sets.
We
need
to
support
the
global
countries
contras
and
really
you
know,
I
would
consider
it
really
really
quite
terrible
if
we
found
we
could
not
do
what
we
needed
to
do
with
global
lexicals,
using
the
global
contra
mechanism.
B
I
agree
completely.
I
I
just
cannot
propose
that
at
this
time,
since
I
have
not
reasoned
through
what
it
would
take
to
reconcile
the
two
to
get
there.
I
think
that
we
need
to
figure
out
for
all
of
the
possible
modes
of
evaluation
and
for
all
of
the
possible
modes
of
of
loading
of
module
contexts.
B
B
A
Okay,
that's
a
good
point.
That's
a
very
good
point
is
that
the
global
contour,
as
currently
specified,
does
have
this
horrible
hazard
that
we
that
we
cannot
allow
that
module
a.
C
So
I'm
I'm
not
clear
on
the
first
claim
that
that
putting
something
on
the
global
object
would
be
discoverable
in
a
way
that
introducing
lexical
values
is
not
because
eval
eval
inside
the
compartment
could
still
discover
the
lexical
values.
Could
it
not.
A
It
would
have
to
it's
it's
since
the
transform
the
metering
transformer
as
a
mandatory
transform.
It
can't
allow
the
if
the
source
code
fed
into
the
transform
says,
evaluate
computed
string.
Obviously,
the
enforcement
that
only
transform
code
runs
cannot
allow
that
call
to
eval
to
be
an
end
runner
around
the
transform.
C
Right
so
so
the
transfer,
the
code
that
is
introduced
that
references,
the
the
introduced
lexical,
would
have
to
have
some
kind
of
privileged
access
that
the
that
the
transformed
source
code
does
not
have.
C
It
has
basically
like
the
the
transform
code
would
need
a
restricted
eval.
Basically,
that
is
where,
where
a
less
restricted
eval
is
available
to
the
introduced
code,
correct.
C
A
B
Yes,
the
the
the
the
work
around
for
that
is
that
every
all
code
that
is
in
this
compartment
is
subject
to
the
transform
that
is
supplied
at
component
compartment
construction
construction,
including
the
computed
code
that
you
feed
back
to
eval.
B
B
C
But
that
also
means
that,
in
order
for
the
introduced
code
to
access
foo,
it
has
to
have
something
that
isn't
available
to
the
to
the
transformed
source
code.
A
The
the
problem
is
the
difference
between
computed
code
versus
computed
property
lookup.
We
can,
we
can
like
we
can
afford
in
these
scenarios
to
replace
eval
with
a
transforming
eval.
We
cannot
afford
to
in
that
rewrite,
replace
all
square
bracket
computed
property
lookups
with
something
that
checks
the
property.
C
C
So
I
was
using
transformed
and
introduced.
Does
that
work.
A
B
C
Okay,
no
that's
actually
backwards,
then
how
about
privileged
and
unprivileged.
B
You,
okay,
so
privileged
is
the
code
that
is
produced
by
the
metering.
Transform
unprivileged
is
the
input
to
the
metering,
transform.
A
Yes,
I
think
I
think
we
have
three
kinds
of
code:
there's
the
code
that
goes
into
the
metering
transform.
There's
the
code
comes
out
of
the
meeting
meter
and
transform
and
there's
the
code
that
runs
directly
without
having
gone
through.
The
metering.
Transform
can
say
things
that
you
couldn't
have
said
simply
as
a
result
of
going
through
the
transform.
That's
the
privileged
pen,
the
metering
transform
itself
is
producing
code
that
uses
privilege.
But
it's
it's
doing
that
in
order
to
impose
a
constraint
not
in
order
to
exercise
privilege.
C
A
Yeah
yeah,
okay,
so
the
the
code
that
goes
into
the
meter
and
transform.
Let's
call
that
user
code.
Okay,
the
code
that
comes
out
of
the
metering
transform,
let's
call
that
transformed
code
and
the
code
that
runs
without
having
gone
through
the
metering
transform.
A
C
User
code
transformed
code
privileged
code
and
what
actually
gets
evaluated
is
the
union
of
privileged
code
and
transformed
code.
Yes,
okay,
so
the
the
privileged
code
can
access
foo,
no,
no
problem
that
that's
its
whole,
that
is
its
privilege.
The
transform
code
is
prohibited
from
accessing
food,
but
it
does
have
an
eval.
A
The
user
code
is
prohibited
from
naming
through
the
transformed
code,
the
the
transformation
inserts
a
reference
only
for
the
purposes
of
doing
what
the
transformation
is
doing.
So
the
the
idea
is
that
the
the
where
the
you
know
where
the
foo
is
the
the
the
the
metering.
A
So
so
the
idea
is
that
the
transformation
introduces
a
reference
to
foo,
but
it's
one.
That
is
not
one
that
the
user
code
could
have
mentioned.
C
A
C
Sure
so,
but
the
user
code
can
also
reference
eval.
You
know:
combination,
string,
concat
of
f,
o
and
o,
for
instance,
that's
right
and
in
the
transformed
code,
the
input
to
what
was
in
the
user
code.
Input
to
eval
is
subject
itself
to
to
dynamic
transformation
right.
A
C
Perfect,
so
so,
given
that
if
the
user
code
references
either
the.
C
A
Right:
okay,
the
key
thing
there
is
that
for
a
global,
I'm
going
to
use
global,
lexical
and
variable
global
contours
synonymously
here,
but
as
previously
mentioned,
there
is
an
issue
we
need
to
come
back
to
them,
but
the
key
cons.
C
Agreed,
I
definitely
see
you
know
the
need
for
lexical
injection.
Okay,
thanks.
B
Okay,
I
think
that
we've
covered
this
I'll
create
an
issue,
but
it
sounds
like
in
general.
There
are
no
objections
to
this.
B
A
Of
reconciling
global
lexicals
with
global
contour
and
global
contour,
the
weird
hazard
that
I
haven't
paid
enough
attention
to
is
that
module
a
adding
a
global
lexical
can
cause
module
b
dynamically
even
to
change
its
behavior.
Because
now
the
the
introduced
lexical
can
shadow
a
global
variable
that
module
b
had
been
referring
to.
B
Yeah
and
there's
also
the
matters
of
the
global
contour.
The
global
contour
in
a
module
does
not
have
the
same.
B
So,
in
order
for
that
to
be
sensible,
it
would
have
to
be
injected
in
a
scope
that
is
higher
than
the
global
than
the
scope
in
which
consts
are
are
are
placed
inside
of
inside
of
a
module
chip.
You
had
your
hand
up.
C
Yeah,
I
was
just
just
before
you
moved
on.
Is
there
some
significance
to
the
dagger
character
in
the
bottom
code?
Exam
bottom
line
code.
B
There
almost
certainly
is,
but
that's
the
problem
with
not
putting
the
footnote
globe
global.
True,
the
dagger
might
be
a
reminder
to
me
to
to
come
back
to
this
and
make
sure
that
global
true
is
a
a
sensible
thing
in
the
context
of
the
current
spec.
I
I
think
that
I
don't.
I
haven't
checked
whether
it's
spelled
that
way.
A
So
right
now
it's
only
spell
it's
only
an
explanatory
concept
in
the
spec
there's
no
other
place
where
it
shows
up
as
a
name
in
an
api
that
needs
to
be
explained,
and
so
one
of
the
things
we
need
to
be
aware
of
is
that
when
we
turn
a
internal
expository,
spec
concept
into
an
api
name,
the
understandability
of
the
name
choice
becomes
a
much
higher
priority,
and
I
think
that
the
global
code
versus
eval
code,
which
is
the
terminology
station
in
the
spec,
is
just
terrible.
B
A
Yeah
one
one
opportunity
for
simplification
here
that
is
politically
complicated
is
that
in
a
session
machine
like
mautable's
building,
there
is
no
stopping
mode.
If
we
also
don't
support
evaluation
as
global
code,
we
only
support
evaluation
as
eval
code,
then,
with
both
both
sloppy
and
global
code
off
the
table.
There
is
no
global
contour.
B
Okay,
I
I
think
that
clarifies
chip
is
a
yeah.
B
Okay,
very
good.
I
think
that
that's
all
we
can
do
today
so
we'll
we
can
pick
up
on
this
next
lovely
issue
in
a
future
presentation,
so
the
make
compartment
constructor
make
compartment
making,
because
I
can
consolidate
compartment
options,
bag,
okay,
so
there's
only.
There
are
only
two
more
topics:
oh
yeah
and
oh,
there
are
three.
There
are
three
more
topics
and
we
can
pick
up
here
next
time.
A
What
do
you
think
about
doing
this
presentation
at
tc39
coming
up.
B
I
think
that
it
is
not
sufficiently
polished
for
that
audience
and,
given
that
it
took
this
much
time,
we
would
have
to
construct
a
much
more
polished
and
shorter
version
of
this
presentation.
To
do
that.
What
I
would
like
to
do
for
the
next
tc
39
is
not.
I
don't
think
that
we
can
call
for
advancement.
I
think
that
we
could
give
a
status
update
and,
and
we
could
do
a
status
update.
B
That
is
a
very
compressed
version
of
this
that
pertains
just
to
refocusing
on
the
module,
loader
facet
of
compartments,
yeah
and
may
maybe
maybe
briefly
cover
the
the
structure
of
sex
proposals
up
front
so
that
it's
clear
that
this
is
a
thin
slice
of
of
what
we're
proposing
for
cess.
C
B
Yeah
yeah
yeah.
I
think
that
the
the
upshot
of
this
presentation
is
that
there
are
a
number
of
unresolved
questions,
I'd
l,
what
I
would
like
to
do
over
before
before
we
even
present
progress
is
like
it
gets
some
to
arrive,
arrive
at
a
local
consensus
of
what
what
path
forward
we
collectively
recommend
and
and
and
still
present
the
alternatives,
because
I
know
the
the
audience
will
be
interested
in
the
alternatives
as
well
and
and
again
I
do.
I
do
expect
that
there
will
be.
B
That
it
will
be
useful
to
discuss
a
drastically
different
straw
man
than
the
compartment
proposal
in
order
to
in
order
to
to
address
concerns
that
are
that
are
brought
up
by
I
mean
we've
had
conversations
with
michael
hunter
about
the
compartment
api,
where
michael
proposed
that
we
have
an
inside
out
version
of
this
which
which
matched
my
design
intuition
going
in.
B
But
I
think
that
I'm,
I'm
convinced
that
the
compartment
at
least
is
useful
because
it
gives
us
a
a
beach
head
for
further
host
virtualization
hooks
that
the
counter
proposal
would
not,
but
there
might
be
a
middle
ground
between
those
two
things.
That's
that's
more
more
amenable
and,
of
course,
gus.
Kaplan
has
a
proposal
that
more
closely
resembles
v8s
api
or
pardon
more
closely
more
closely
resembles
the
vm
module
as
implemented
by
node,
which
itself
closely
resembles
the
v8
api,
which
closely
represent
closely
resembles
the
tc39
specification.
B
As
written
and
the
there
there
will
probably
be
a
contingent
that
wants
whatever
module.
Loader
api
gets
added
to
the
language,
to
closely
resemble
that
and
and
that
might
put
pressure
on
the
proposal.
D
There's
also
counter
pressure
there
in
the
last
modules
working
group
meeting
for
node.
We
explicitly
said
we
don't
like
the
current
vm
api,
because
it's
too
hard
to
reasonably
and
so
people
were
literally
copy
pasting,
the
source
code
of
our
module
loader,
to
make
it
usable.
B
I'm
I'm
glad
to
hear
that
we'll
have
support
on
the
counter
side
too.
That's
especially
given
that
the
vm
module
is
a
better
foundation
for
realms
than
it
is
for
compartments
and
and
doesn't
give
you
all
the
things
that
we
need
all
right,
I'm
going
to
stop
the
recording.