►
From YouTube: SES Meeting: Hardened Babel
Description
Nicoló Ribaudo of Babel gives us some help improving SES’s use of Babel.
A
All
right
welcome
to
the
cess
meeting.
This
is
march
2nd
and
today's
agenda
is
to
discuss
babel
and
compatibility
with
hardin
javascript,
and
we
have
nicolo
and
michael
nikolo
being
the
expert
on
babel
and
michael
being
expert
on
our
use
of
babel
categoric
for
our
emulation
of
hardened
javascript
and
we
use
in
the
in
the
ses
shim.
A
We
use
babel
to
do
an
esm
to
program
transform
in
order
to
build
out
a
compartment
as
a
third-party
module,
loader,
and
and
because
of
that
we
need
babel
to
run
in
a
hardened
javascript
environment
and
at
the
moment,
what
we're
doing
to
make
that
possible
is
for
one
we're
using
babel
standalone.
And
I
don't
remember
the
reason
why
we're
doing
that.
A
But
michael
can
fill
us
in
and
and
we
have
and
because
babel
stand
alone
and
trains,
a
great
number
of
shims
that
fiddle
around
with
shared
intrinsics,
most
notably,
and
obviously
the
buffer
shem.
A
We
have
to
initialize
babel
standalone
at
the
application
layer
before
we
lock
down.
Otherwise
it
can't
initialize
because
it
finds
frozen
because
of
the
property
override
mistake
now.
So
that
has
an
obvious
fix.
We
go
into
the
buffer
shim
and
get
a
change
committed
upstream.
That
changes
various
assignments
into
defined
property
calls
and
michael
did
some
work
over
this
weekend.
That
has
greatly
improved
our
compatibility
with
babel
by
doing
a
custom,
build
of
babel
standalone
and
a
fork,
but
running
a
fork.
Long
term
isn't
really
tenable
from
a
maintenance
perspective.
A
So
we'd
very
much
like
to
figure
out
what
we
can
do
in
order
to
get
some
of
these
things
upstream
and
what
and
to
what
extent
we
we
can
get
babel
to
be
tested
going
forward
in
order
to
ensure
that
it
remains
compatible
and
and
whether
our
goals
are
aligned
et
cetera,
et
cetera,
who
wants
to
go
first,
michael
or
nicolo,
because
that
is
everything
I
know.
B
C
C
So
I
just
wanted
to
ask
first
of
all:
is
babel
standing
on
the
right
way
to
go
to
not
have
as
many
dependencies
on
the
outside
environment
or.
B
Yeah
yeah,
so
it's
probably
the
easiest
way.
However,
it
pulls
in
every
single
transform
that
we
have.
I
think
it's
like
a
two
megabytes
file
and
you
we
are
not
using
most
of
that
yeah.
It's.
A
About
three,
which
is
why
we
can't
take
100
xs,
is
too
slow
to
load
all
of
babel
into
into
memory
and
run
it.
B
So
the
possible
solutions
are
either
to
directly
use
babel
car,
because
bible
standalone
is
basically
a
bundle
of
bible
core
plus
all
the
plugins.
B
However,
you
might
have
to
check
in
our
build
process
how
exactly
to
build
bubble
core,
because
there
are
some
like
variables
that
might
need
to
be
right,
overwritten
in
order
for
it
to
work
in
the
browser
we
have
some
files
like
for
some
files.
We
have
the
browser
and
the
node
version,
so
you
have
to
make
sure
that
it's
everything
is
bundled
correctly.
The
alternative
is
to
not
use
bible
core,
but
to
use
bible,
parser,
bible,
traverse
and
bible
generator,
which
are
the
three
main
steps
that
will
corrupt
internally.
B
C
Yeah,
that's
probably
the
direction
we
should
go
in.
I
think
the
only
reason
I
wasn't
able
to
use
paper
core
directly
was
it
tries
to
reference
some
file
system
apis,
for
example,.
B
Yes
and
that's
why
we
have
some
separate
files
or
browsers
and
for
not,
there
is
like
the
browser
file
in
package.json.
That
should
tell
the
bundler
which
file
to
use.
C
Yeah,
so
what
I
did
was
was
probably
not
the
best
way
forward,
but
I
actually
went
through
the
config
for
bible
standalone
and
turned
off
all
the
transforms.
And
then
I
disabled,
chord,
js
and.
C
Then
just
made
some
changes
to
the
buffer
shim
and
it
was
then
it
was
okay,
but
I
I
know
that
in
another
part
of
our
code
we
are
just
using
babel,
traverse
and
parson
generate
and
yeah.
That's
probably
the
best
way
forward.
I'm
not
sure
why
we
ended
up
doing
the
standalone
stuff.
I
I
think
it
was
because
we
we
yeah.
I
don't
even
know
why.
A
But
yeah
we
we
could.
I
have
looked
into
this
into
the
pa
in
the
past,
trying
to
just
use
the
the
three
components
based
off
michael.
Ultimately,
you
built
both
of
these
the
the
version
in
in
sas
and
the
version
in
agorik
sdk
for
doing
transform
for
other
for
the
evasive
transforms,
and
I
I
suspect
that
it
is
possible
to
just
use
the
three
components
and
avoid
using
core.
C
Yeah.
It's
all
our
collar
headaches
basically
only
came
from
bible
standalone
because
because,
as
you're
saying
nicolo
that
it
brings
in
a
lot
of
stuff.
B
B
While
with
the
three
components
you
would
just
have
to
pass
a
single
like
visitor,
a
single
transform
and
do
everything
there,
rather
than
be
able
to
organize
with
different
plugins.
But
maybe
you
don't
care
about
it.
D
A
With
with
our
strata
static
module
record
emulation,
we
actually
do
two
passes
one.
We
do
an
analysis
pass
and
then
a
transform
pass
that
should
be
fine.
Is
it
that
that
use
we've
refactored
that
to
be
a
more
clear
separations
in
in
recent
months.
A
B
The
way
to
make
sure
that,
like
it's
more
likely
that
just
using
the
three
components
will
make
everything
work
because
I
mean
with
a
lot
less
god,
there
is
like
less
possibilities
of
loading
machines.
B
However,
I
would
be
happy
like
if
you
want
to
contribute
to
our
repository,
for
example,
with
a
proquest
that
freezes
the
test
environment
to
make
sure
that
we
do
not
mutate
it.
I
would
be
happy
to
to
review
it.
D
I'm
also
wondering
one
of
the
reasons
we
remove
the
transforms
and
things
like
that
that
usually
pulls
in
regenerator
and
and
other
shins
which-
and
I
believe
the
one
of
the
reasons
we
want
to
avoid.
Those
well
on
top
of
not
running
transform
code
is
because
they
often
trigger
the
override
mistake,
and
I
I
suppose
maybe
that's
also
something
we
should
try
to
fix
upstream,
or
am
I
mistaken?
There.
B
Yes,
so
we
do
not
directly
maintain
regenerator
all
the
core
gs,
plugins
polyfills
I
mean
for
politician
football.
If
this
object
is
problematic,
but
for
a
generator
it
could
work
if
needed.
B
D
Yeah,
I
think
a
frozen
global
is
not
the
default
result
of
a
lockdown
lockdown
freezes,
the
intrinsic
it
doesn't
freeze
the
the
global.
D
I
think
I
also
have
more
of
a
curious
question.
Curiosity
question:
I
find
a
lot
of
projects
that
end
up
pulling
in
the
generator
transforms,
and
maybe
it's
a
mistake
in
their
target
preset
on
configuration
or
I'm
not
sure,
but
it
it
feels
like
a
lot
of
projects
end
up
pulling
in
those
transforms
when
they
don't
really
need
to
and-
and
I'm
actually
curious
how
the
community
or
bible
is
steering
the
community
towards
avoiding
doing
that.
B
Yes,
so
I
believe
at
least
in
the
past,
most
people
were
not
even
aware
of
the
targets
option,
so
they
were
just
comparing
everything
to
s5
by
default.
B
We
have
made
some
changes
in
the
past
year
that
make
it
more
like
we
had
some
blog
post
about
possible
organizations
and
we
moved
the
targets,
option
to
be
used
more
and
to
be
more
visible,
so
people
are
monetizing
it
more
and
also
in
bubble.
8.
We
will
change
the
default
value
of
targets
to
be
whatever
browsers
list.
The
finance
like
not
that
browsers,
rather
than
just
everything
down
to
s5.
B
B
A
That
I
hesitated
to
up
almost
I
mean
I
wrote
this
module
called
queue
a
really
long
time
ago,
and
I
have
hesitated
to
upgrade
it
at
all
ever
because
because
or
like
to
use
esm
syntax,
for
example,
because
everything
that
you
do
like
that
limits
is
is
potentially
a
breaking
change.
And
I
found
that
breaking
q
is
very
dangerous.
A
So,
like
I
think
that
there
is
a
tendency
for
library.
Authors
like
myself
to
prefer
to
fix
the
compilation
target
at
a
point
in
the
past
that
the
at
the
inception
of
the
project
really
in
order
to
keep
it
from
having
a
breaking
change.
B
Well,
I
mean
for
liberty,
for
libraries
is
no,
it's
not
uncommon
to
just
target
the
latest
lts,
not
js
version.
At
the
point
of
the
last
major
release
like
there
are
some
libraries
that
support
everything
from.
I
know
not
0.10
or
something
like
that,
but
yeah
from
what
I've
seen
outside
of
people
involved
in
d59,
most
library,
authors
just
target
the
latest
lts
version
yeah.
C
Okay,
yeah,
I
appreciate
the
advice
I
I
think
yeah
moving.
Everything
to
the
three
components
would
definitely
be
a
good
starting
point.
A
Wait
so
most
of
the
all
my
all
of
the
documentation
on
babel
is
framed
in
terms
of
core
right.
Is
there?
Is
there
a
a
piece
of
documentation?
Maybe
you
could
help
us
find
a
piece
of
documentation
on
how
to
use
these
components
piece
wise.
That
would
be
helpful
to
me.
I
know
I
know
that's
probably
where
I
ran
out
of
gas
on
this.
B
Yeah
okay,
so
we
at
least
have
a
list
of
options
for
bible
parser
and
build
generator.
We
might
not
have
good
documentation
for
bubble
travelers,
however,.
B
There
is
a
good
document.
It's
they
called
the
plugin
handbook
that
defines
like
all
the
internal
build
traverse
api
and
not
all
the
internal
but
the
the
most
important
internal
api.
I
don't
think
that
the
like
external,
like
entry
point
of
bubble,
traverse,
is
actually
documented,
but
most
of
what
you
will
need
is
there.
A
A
Useful
information
I've
gleaned
from
this
so
far
is
that
there's
a
that
in
our
current
use
with
babel
standalone,
there's
a
great
deal
of
ceremony
about
transforms
that
are
included
and
that
when
we
migrate
to
using
the
three
components
directly,
we
can
simply
forget
about
all
of
those
things
instead
of
instead
of
having
to
pick
and
choose
which
ones
we
want
to
keep.
C
What
I
did
find
was
prettier
had
a
list
of
parser
options
that
they
turned
on
plug
in
the
parser
plugin
options,
and
that
was
it
was
like
long
comprehensive.
But
I
didn't
find
anything
else
where
you
could
just
say
turn
on
all
the
syntax
and.
B
I
mean
by
default
we
enable
all
this
table
syntax.
We
had
in
the
past
an
option
to
enable
all
the
proposals
by
default,
but
there
are
proposals,
they're
not
meant
to
be
stable,
so
we
we
removed
the
option
at
some
point,
so
stable
syntax
will
always
be
enabled
by
default.
If
you
want
to
use
proposals,
you
have
to
choose
what
you
want
and
what
you
don't
want.
B
B
B
A
A
Well,
this
was
the
only
topic
for
today
and
I
think
that
we've
spent
it.
We
have
we
like
again,
we
have
our
homework
to
do
to
see
if
we
can
make
any
progress
and
then,
of
course,
and
then
to
recap,
we
also
have
your
invitation
nikola
to
put
together
a
pr
to
to
to
test
babble,
at
least
to
the
part
at
least
the
three
internal
parts
in
the
context
where
there
are
more
not
frozen
primordials.
C
B
A
Are
we
so
there
there
are
layers
of
support
for
cess
the
the
first,
the
first
layer
is,
can
you
use
it
at
all
in
in
an
environment?
That's
using
sets
the
the
second
layer
after
that
is,
can
you
use?
Can
you
initialize
it
after
lockdown
has
been
called
and
we're
confident
that
the
threes,
the
three
internal
components
of
bowel
work
under
those
circumstances,
the
third
layer
is,
can
you
load
it
in
a
compartment
which
is
to
say
with
with
only
the
shared
intrinsics?
I
do.
We
know
whether
we
can
do
that.
C
A
B
So
I
expect
them
to
only
use
like
features
defined
within
the
atmospheric
specification
and
nothing
not
just
specific
or.
B
Web
specifics,
so
I
I
would
expect
them
to
work
like
at
least
those
streaming
components.
Some
other
pieces,
like
bible
core,
are
definitely
not
going
to
work
yeah,
but
most
of
the
other
stuff
of
like
most
of
the
I
don't
know,
plugins
or
all
the
internal
packages
should
work
in
a
compartment.
B
Probably
potentially,
yes,
I
don't
remember
like
I
remember
that
we
used
that
in
the
past.
I
did
not
remember
how
or
why,
right
now,
I.
A
E
Yeah
we're
the
obviously
we
can.
We
could
provide
a
map,
a
math.random,
that's
driven
by
a
reproducible,
pseudorandom
generator
or
just
a
counter,
probably
counters
the
cleanest
thing,
but
just
in
general,
we
are
very
allergic
to
sources
of
non-determinism,
which.
B
B
Possible
that
you
might
find
a
problem
in
like
some
of
our
dependencies.
We
like
we
check
which
dependencies
we
pull
in,
but
we
never
like
worried
about
whether
they
were
fully
pure
or
not
yeah.
Are
you
open
to.
A
Taking
cess
as
a
dev
dependency
for
the
purposes
of
an
integration
test,
yes,
well
amazing,
and
we'll
see
how
long
that
lasts
too,
because
I
imagine
that
the
first
time
you
see
an
opaque
error
come
out,
because
the
cess
integration
test
has
would
be
was
is
really
the
question.
A
A
E
Yeah,
it
sounds
like
this.
Particular
concern
is
winding
down,
but
as
long
as
we
have
you
here,
would
this
be
a?
Would
it
be
productive
to
talk
about
the
babel
support
for
line
and
column
number
preservation
and
the
bugs
that
we've
been
countering
with
that.
A
B
C
I
I
made
a
small
hack
there
in
the
bible.
Generator
is
a
catch-up
function
that
allows
it
to
this
to
to
advance
the
line
number
until
it's
the
actual
line.
Number
of
the
next
token.
I
I
extended
that
to
also
advance
the
column
number
if
necessary,
but
because
bible
generator
has.
D
C
Opinion
on
formatting,
like
we've,
seen
recast
in
the
past
to
kind
of
provide
reduce
source
code
round
tripping.
If
there's
no
modifications
to
it,
but
they
don't
support
the
the
preserve,
retain
lines
option.
So
we
tried
hacking
it
up
to
make
it
work
better.
But
it's
there's
just
several
places
where
they
don't
use
it
in
the
same
portion.
B
C
E
We
want
we
want
the
program,
that's
running,
to
be
as
close
as
possible
to
the
the
code
that
the
programmer
is
thinking
about.
The
code
programmer
wrote
the
code
that
the
programmer
is
seeing
in
their
debugger
and
every
time
we've
admitted
a
any
kind
of
unobvious
transformation.
E
It's
always
introduced
hazards
because
of
the
difference
in
the
actual
semantics
versus
what
the
code
looks
like
it's
doing.
The
the
standards
of
semantics.
Preserving
that
most
transformations
engage
in
is
not
semantics
preserving
for
us.
So
that's
that's
one
reason
why
we're
avoiding
source
maps
in
general,
because
we're
avoiding
any
kind
of
transforms
like
that
in
general,
the
particular
transform
we're
doing
we
very
very
carefully
designed
to
be
minimally
intrusive,
so
there's
large
sections
of
the
code,
basically
everything
without
an
importer
and
export.
E
So
if
we
can
minimize
the
source
differences
semantically,
because
we
don't
want
to
transform,
then
minimizing
contextually
as
well-
allows
us
to
just
avoid
source
maps.
D
In
particular,
the
problem
with
source
maps
is
that
it
doesn't
work
through
eval
right.
C
Yeah
now
without
an
intrusive
shim,
it
doesn't
work
everywhere
anyway,
so
yeah,
I
I
I
want
to
say,
we
may
have
an
opportunity
for
somebody
to
work
on
a
bounty
to
kind
of
import
to
bring
some
features
of
recast
to
babel.
C
If
that
would
be
appreciated,
I
think
the
main
thing
is
using
the
tokens
property
of
the
ast
to
be
able
to
emit
the
same
locations
for
things
like
curly,
braces
and
stuff
like
that
to
just
walk
through
that
tokens
list,
while
we're
emitting
while
we're
generating
code,
it
wouldn't
be
as
featureful
as
recast
is
because
recast
also
tries
to
do
its
best
to
format
stuff
that
isn't
in
the
tree.
C
But
I
think
it
would
be
a
lot
more
predictable
and
easy
to
understand.
Have
you
ever
thought
of
upstreaming,
something
like
that?
Has
it
come
up.
B
If
the
changes
to
implement
this
token-based
printing
are
very
big,
it
might
make
sense
to
like
do
it
as
a
separate
generator
package,
because,
like
the
generator,
is
pluggable
in
bubble
in
a
way,
so
we
could
have
like
two
generators,
one
which
is
the
current
one
and
one
which
is
the
recast
like
one,
but
I
this
depends
on
how
much
code
would
be
shared
between
the
two
packaging.
B
How
much
would
be
custom
like
different
regarding
return
columns,
I
also
do
not
have
an
opinion
right
now,
like
an
alternative
option,
which
is
to
like
with
like
written
lines.
I
think
someone
already
asked
us
for
something
like
that
in
the
past
like
a
few
years
ago,
but
we
never
really
considered
the
like
the
feature
request,
but
I
I
I
don't
actually
have
an
opinion
on
this.
I
should
ask
to
the
rest
of
the
team.
B
Okay,
so
I'm
checking
if
we
already
have
an
issue
about
that.
B
I
guess
you
could
have
an
issue
on
the
pr
and
we
can
discuss
that
like
using
github,
so
that
everyone
who
might
be
interested
gets
notified.
C
Okay
yeah,
I
can
open
up
the
two
issues
and
maybe-
or
maybe
chris
can
help
with
that
too.
C
As
far
as
the
the
only
yeah,
the
only
difference
that
I
would
see
is
that,
if,
if
there's
a
way
to
adapt
the
the
generator
where
it
actually
puts
things
into
the
buffer
to
compare
that
against
where
we
think
we
are
in
the
token
list
so
far,
that
would
that
would
be
a
very
cheap
way
of
getting
recast
like
behavior,
without
having
to
worry
too
much
about
the
abstract
in
the
ast
or
anything
like
that.
Just
be
the
token
less
that
we've
been
looking
at.
B
C
B
C
B
Doable
but
we'll
like,
I
would
need
to
see,
I'm
not
really
like
expert
in
the
generator
code,
so
I,
like,
I
know,
on
a
high
level
how
the
buffer
internal
buffer
works
and
how
the
sites
were
different
things,
but
I
I
do
not
have
the
necessary
knowledge
to
understand
of
this
right
now.
E
Yeah,
michael
for
the
solution
you
have
in
mind:
how
close
would
it
come
to
the
ideal
of
the
unmodified
lines
appear
exactly
as
they
appeared
in
the
original
sources.
C
So
it
would
come
very,
very
close
if
not
perfect.
So
basically,
the
behavior
we'd
like
is
for
the
original
source
to
be
printed
and
where
we've
done
a
transform
to
either
emit
some
emit
some
tokens
with
spaces
or
else
insert
new
things.
At
the
end
of
the
line
that
are
written
out
concisely,
they
don't
have
to
be
formatted
in
any
way.
C
So
so,
basically,
it
would
preserve
all
the
front
parts
of
the
line
as
much
as
they
could
and
the
way
the
bible
token
list
works
is
it
has
all
the
tokens
that
were
parsed
in
order
with
source
line
and
source
column
attached
to
them.
So
we
have
all
the
information,
that's
necessary.
It's
just
a
matter
of
putting
it
together
in
the
generator.
C
E
B
The
way
we
recently
made
some
changes
to
how
we
mark
a
location
in
the
parser,
so
you
might
want
to,
I
mean
I
think
that
there
were
only
additive
changes,
so
the
your
current
approach
might
still
work,
but
you
might
want
to
to
check
if
it
still
works
with
the
latest
parser
version.
C
B
A
Yeah
and
what
is
the
best
way
to
well,
are
you
open
to
being
reached
over
chat?
I
suppose.
B
Yes,
I
yes,
so
you
can
contact
me
on
matrix,
I'm
in
the
like
in
the
time
channels,
of
course,
or
if
you
want,
we
have
a
babel
slack
channel,
you
can
look
at
any
bubble
issue
and
the
bot
posts
that
are
the.
This
luck
invites.
B
If
you
prefer
I'm
available
at
matrix,
I
think
I
have
two
accounts
matrix.
One
is
the
like
at
matrix.org
one
and
the
other
one
is
like
at
agalya.com
contact
me
at
the
at
the
matrix.
One.
C
C
We
do
have
a
negork
chat
or
it
works
slack,
so
some
of
us
are
already
using
it,
but
that
might
be
the
easiest
way
to
get
in
touch
with
your
folks.
Just
so
we're
not
singling
you
out
for
the
person
to
get
support.
B
Like
we
have
some
of
them
like
with
webpack
or
next
so
like
for
the
purpose
of
this,
we
could
set
up
the
slack
channel.
I.
A
I
expected
this
will
be
a
light
enough
conversation
that
we
won't
have
to
to
do
that,
but
but
but
of
course,
happy
to
okay.
B
A
Okay,
so
this
has
been
great.
Thank
you
very
much.
This
is
a
oh
well,
we'll
find
you
when
we
get
stuck
okay,
oh
all
right.
I
think
that
that
I'll
conclude
the
recording
at
that,
but
once
again
thank
you.