►
From YouTube: 2020-10-30 wg-traits: type library sprint planning
Description
Planning for a sprint to extract a standalone type library that can be shared by chalk, rustc.
A
Like
we
had
said,
I'm
trying
to
page
back
in
what
we
said
at
the
end
of
the
last
meeting,
we
said
that
we
wanted
to
kind
of
approach
it
a
little
bit
from
two
ends,
maybe
extract
some
things
from
rusty
and
extract
some
things
from
or
chocolate's
already
extracted.
I
guess,
but
bring
the
two
a
little
closer
together
until
they
can
be
actually
unified.
B
Yeah,
so
I
mean
sorry
was
a
little
bit
late,
so
I
feel
like
we're
pretty
close
in
terms
of
things
being
the
same,
there's
definitely
some
bits
and
pieces
that
we
need
to
add
and
change,
but
I
think
the
big
work
at
this
point
is
on
the
rest,
to
see
side
if
we
want
to
split
out
some
things
from
rusty
middle
and
I
think,
there's
a
few
different
things
that
we
can
do
there,
but
I'm
not
actually
sure
how
much
all
has
to
come
out
at
once.
B
That
makes
sense,
because
I
don't
think
we
could
extract
out
tai
without
extracting
out
like
tight,
foldable
or
the
other
way
around.
A
A
A
If
I
have
a
vague
memory
that
I
didn't
need
to
count
anymore,
once
we
changed
over
the
binding
system
so
that
it's
counting,
binders
and
not
counting
variables,
I
think
that's
what
I
wanted
to
count
was
like
how
many
free
variables
are
in
an
expression
or
something
like
that
and
it
kind
of
didn't
matter
when
you
didn't
have
to
introduce
that
many
corresponding
number
of
binders.
B
And
I
I
sort
of
agree
with
that,
especially
because
I
mean
the
my
biggest
gripe
with
the
rusty
version
was
that
it
used
a
bullion.
B
So
I
would
be
on
board,
with
switching
chalk,
to
use
like
a
control
flow.
The
so
control
flow
isn't
stood
right,
but
I
think
it's
understood,
but
it's
nightly.
If
I
remember
correctly,
it
sounds
maybe
not.
B
Yeah,
so
I
guess
the
question
there:
do
we
just
duplicate
the
type
for
now.
D
B
Okay,
so
yeah,
that
makes
sense
if
we
want
to
just
change
type,
visitor
and
chalk
to
use
control
flow.
I
think
type
folder.
B
E
B
B
B
A
B
We
moved
to
the
method
on,
if
I
remember
correctly
kind
is
on
thai
s,
which
is
essentially
the
thai
data.
I
think
yeah.
A
D
Alternative
needs
internal
right
or.
B
A
Like
what
I
meant
was
that
plausibly
this,
this
struct
could
become
part
of
chalk
ir.
Basically.
B
Yeah,
no,
that
makes
sense
it
also
so
right
now
the
kind
method
and
chalk
is
on
thai,
not
thai
data,
and
it's
essentially
shorthand
for
the
intern
or
thai
data.kind.
B
A
Yeah
I'm
what
I'm
imagining
is
I
mean
I
think
this
might
just
stay
the
same.
It's
just
that
you
might
be
able
to
do
this
in
chalk,
like
eventually
we
would
have
a
a
data
struct
that
you
can
call
also
right
now
we
don't,
but
for
I
actually
don't
know
what
we
have
now,
I'm
guessing
based
on
what
you're
saying,
because
I
haven't
read
that
pr,
yes,.
B
A
Really
wish
we
had
that
well,
whatever
I
would
like
it
if
at
some
point
we
get
some
kind
of
accessories
in
rust
so
that
we
could
do
this
stuff
in
other
ways,
but
I
don't
know
leave
that
aside.
So,
okay,
don't
so
I
guess
the
question
is:
should
we
it
might
be
more
convenient,
also
in
chalk,
sometimes
to
match
on,
like
there's
an
advantage
to
matching
on
the
field,
just
that
you
don't
have
as
much
reference
stuff
going
around
kind
of.
A
B
A
That's
useful
to
us,
because
in
our
unit
testing
and
stuff
we
use
arcs
and
whatever,
but
like
it's,
also
a
pain
in
the
butt,
because
then
we
have
to
clone
everything
and
things
aren't
copy
and
I
think
that
rust,
analyzer
and
rusty
both
use
some
form
of
interning
such
that
types
actually
are
copy,
maybe
not
for
all
the
things,
though,
maybe
just
for
some
cases,
but
it's
plausible
that
we
might
want
to
require
copy,
because
we
don't
need
that
flexibility
and
then
and
then
we
could
just
align
the
code
basis
a
little
more
and
have
fewer
calls
to
clone
and
stuff
like
that.
B
Yeah,
the
only
thing
with
that
would
be
how
we
want
to
deal
with
the
chalk
integration
version,
because
that
doesn't
that
just
wraps
things
up
some
boxes.
E
B
B
A
B
B
B
Okay
yeah
but,
as
I
had
said,
I'm
I'm
mostly
sort
of
okay
right
now
with
adding
what
we
need
to
chalk
and
sort
of
as
we
move
towards
not
using
these.
B
B
I
mean
somewhat,
but
I
I
not
worried
so
much
about
removing,
or
I
should
say,
I'm
not
worried
about
removing
things
that
we
add
to
chalk,
because
it's
in
rusty
versus,
I
guess
not
like
I
said,
I'm
I'm
sort
of
okay
with
just
adding
things
to
chalk
as
we
need,
because
if
we
eventually
remove
them
at
rusty,
I
think
it'll
be
easy
enough
to
remove
them,
remove
them
and
chalk.
As
long
as
we
sort
of
don't
build
new
logic
around
it
in
shock.
B
And
the
regions
in
particular,
are,
I
think,
really
simple,
because,
like
the
re-static
change
was
super
small
and
easy,
so
I
don't
think
adding
regions
will
be
hard.
I
think,
as
was
put
here
per,
am
and
perhaps
perhaps
re-early
ground
will
be
harder,
because
that
actually
requires
quite
a
bit
of
logic.
A
B
B
Yeah,
so
a
lot
of
the
work
I've
been
doing
so
I've
got
it
where
it's
actually
sort
of
whenever
you
call
binder,
binds
it'll
actually
sort
of
go
through
and
visit
all
the
types
and
then
collect
the
bound
bars
and
the
naive
way
that
I
had
done.
That
originally
was
just
to
count,
but
then
locally.
I've
also
actually
made
it
collect
the
actual
ones,
and
there
was
a
big
performance
hit.
So
I
had
done.
B
I
went
through
a
bunch
of
places
we
had
to
rebind
so
that,
rather
than
sort
of
going
through
and
visiting,
it'll
use
the
same
bars
or
at
least
in
theory,
let's
see
and
then
locally.
I've
also
changed
like
gone
through
in
a
little
bit
more
detail
and
basically
audited.
All
the
bind
calls
to
whether
or
not
they're
really
binding
or
if
they're
dummy
calls
and
I've
gotten
sort
of
to
a
point
that
I've
got
the
all
the
easy
ones
done.
B
But
there
are
some
one
like
there's
some
bits
that
are
a
little
bit
more
difficult
once
you
start
like
lowering
from
asd
that
I
haven't
really
dug
into
I've
also
started
to
so
I.
B
A
B
Right
so
I
yeah
so
I'm
sort
of
at
a
sort
of
minimal
subset
in
terms
of
bind
calls
that
I
am
at
this
point
like
I
not
focusing
on
that.
Instead,
I'm
trying
to
make
it
so
I
had
done
for
the
variable
kinds,
thai
region,
const
and
but
also
unknown
for
cases
where
rusty
might
skip
binders,
and
so
I'm
trying
to
remove
that.
B
But
just
the
memory
of
why
that
is
well,
I
mean
so.
I
changed
it
and
there
was
like
three
places
that
it
basically
does
that
and
then
there's
a
couple
test:
outputs,
but
I
mean
it
the
pr
just
got
merged
last
night,
so
it's
now
at
zero
and
that
fixed
a
bunch
of
cases
and
there's
now
three
test
cases
that
are
failing
where
there
are
bound
bars
being
skipped
that
I
have
to
look
into
and
that's
sort
of
where
I'm
at
and
then
sort
of.
B
Once
I
get
to
that
point,
I
want
to
do
another
perf
run
with
sort
of
the
current
state
of
minimal
setup
binds
and
changing
a
bunch
of
the
ones
that
seemed
unnecessary
to
dummies
and
tracking
boundaries.
B
So
it's
so
yeah
it's
it's
going
along
slowly,.
B
Progress
actually
yeah,
and
I
mean
we
can
talk
about
this
another
time,
but
also
it's
sort
of
come
up
that,
like
it's,
a
race,
late,
bound
regions
or
erased
regions
returns
back
t
rather
than
binder
of
t,
and
it
doesn't
do
any
erasing
of
types
or
comps,
then
anonymize,
anonymized,
late,
bound
regions
won't
respect
bound
types
or
cons,
so
it
I
don't
think
right
now
it's
a
problem.
I
think
those
are
called
sufficiently
weight
that
there's
not
going
to
be
bound.
B
Yeah,
I
mean
matthew
said
that,
or
somebody
said
it
I
think
it
was
matthew
said
it
yes
yesterday
in
chat
that
eventually
it
should
be
everything
and
there's
not
really
bound
types.
So
it's
not.
B
Now
but
it's
sort
of
something
to
look
at
going
forward
yeah,
I
think
all
the.
A
B
And
then
I
don't
know
if
that
was
the
best
time
to
talk
about
it,
but
I
was
you
know,
sort
of
after
I
get
actual
tracking
of
bambara.
So
right
now,
I'm
essentially
just
mirroring
the
bound
bars
that
are
in
the
type
as
the
list,
but
I
think
probably
what
would
be
nice
here
is
to
move
even
closer
to
sort
of
rust
or
choc's
model.
Where
we're
not.
We
don't
have
all
the
different
region
kinds
we
just
have
or
like
the
bound
region
kinds.
B
We
just
have
the
anonymous
and
then
any
time
that
we
need
to
know
whether
or
not
it's
a
named
or
brm
etc.
We
can
have
the
binders
themselves,
but
I
think
that's
a
bit
more
of
a
way.
A
B
I
think
it's
work,
I
think
it's
possible
because
I
was
looking
and
the
only
place
that
we
actually
like
from
what
I
can
tell
I'm
not
super
familiar
with
the
code,
but
from
what
I
can
tell
the
only
place
that
we're
actually
like
checking
whether
or
not
a
bound
variable
is
like
named
versus
m
versus
a
non
isn't
like
the
diagnostics.
B
A
Or
something
I
like
talks
better.
E
B
A
A
But
so
maybe
we
can
migrate
rusty
over
I
mean
existential
predators
are
just
like
an
annoying
version
of
what
chalk
is
doing.
Basically,.
A
Instead
of
what
chalk
does
is
uses,
the
problem
here
is
you
you
want
to
express
like
like
didn't,
debug
is
or
what
what
goes
in
here
is
basically
a
where
clause,
but
without
the
self
type
right
right,
self
type
is
not
known,
and
so
jaw
kind
of
just
does
that
with
a
binder
where
this
you
do
have
a
self
type,
but
it's
it's
this
bound
variable,
whereas
in
rust
c
we
use
essentially
a
duplicated
version
of
predicate
that
doesn't
have
a
self
type
so
and
is
a
little
more
limited,
because
only
certain
things
can
be
in
din
trade
right
now,
so
that
that
is
a
I
guess,
a
slight
advantage
in
that
it
doesn't
it's
not
like
totally
generic,
which
then
requires
you
to
deal
with
a
bunch
of
stuff
that
can't
really
happen,
which
you
know
is
occasionally
annoying,
but
on
the
minus
side
you
have
this
duplicated
surface
area,
where
you
sort
of
have
the
same
thing.
A
A
The
the
only
my
only
real
hesitation
would
be
the
fact
that
this
has
this
allows
you
to
say
exactly
what
goes
in
there,
which
might
be
useful,
but
maybe
there's
a
I
have
to
think
about
it.
Maybe
there's
actually
rusty's
approach
to
predict
is
pretty
annoying
in
lots
of
places
like
having
the
flat
predicate
is
then
there's
all
this
random
code,
where
you
know
it's
only
coming
from
the
user,
and
it
can't
have
those
cases,
and
you
just
get
these
bug,
arms
and
stuff
yeah.
So.
A
B
A
The
lack
of
better
yeah,
all
right
so
I
mean,
are,
we
yeah
seems
like
we're
concluded,
we'll
we'll
do
some
experimenting
and
see
if
we
can
evolve
how
rusty
is
working
here.
B
Yeah
I
mean,
like
I
said:
I
think
a
lot
of
this
experimenting
can
happen
as
we
move
things
into
its
own
rust
sea
crate
to
sort
of
align
them,
and
I,
like
I
said
I
think,
that's
where
most
of
the
work
is
going
to
be
is
well.
I
should
say
that's
where
the
most
of
the
refactoring
is
going
to
be
is
trying
to
move
things
out
versus
sort
of
yeah.
B
So
why
don't
we
talk
a
little
bit
about
that
yeah,
so
I
was
trying
to
think
of
what
all
is
going
to
be
moved
out,
and
I
guess
it's
going
to
mirror
chalk
ir
pretty
well.
I
think
because
you
have
obviously
like
thai
region,
const
type
foldable
type,
visitor.
C
A
A
A
B
Yeah,
I
imagine
we
probably
will
at
some
point
which
is
sort
of
why
I
said.
I
think
this
is
going
to
be
the
tough
part
and
I'm
not
exactly
sure
how
much
we
can
do
this
in
parts
versus
just
trying
to
start
with
tie
figuring
out
where
you're
running
in
the
problems.
A
B
A
It's
often
just
a
little
too
much
annoyance
for
the
the
benefit
it
brings
is
not
quite
high
enough
to
deal
with
the
type
the
number
of
bugs
you
actually
fix
the
other.
A
B
A
Yes,
okay,
so
we
should
remove
that
the
internals
I'm
thinking
about
so.
B
B
Yeah
I
mean
the
only
thing
with
that
is,
I
think,
a
lot
of
the
places
where
we
have
tic
tcx.
It
will
be
instead
parameterized
by
yeah
on,
like
internet.
A
A
Something
like
this
yeah,
hopefully
with
less
terrible
names
and
or
maybe
this
would
just
be
thai
context
actually
but
and
that,
like
it
seems
to
me,
like
we
probably
want
to
try
to
do
that
refactoring
actually
in
we
don't
even
have
to
pull
it
out
of
the
crate,
potentially
like
we
could
in
rusty
middle,
make
a
module
with
the
type
definition
or
something
and
try
to
pull
some
stuff
into
that
module
and
actually
refactor
it
so
that
it's
generic
over
a
trade
and
then
eventually
that
goes
to
a
crate.
A
I
don't
know-
maybe
maybe
it's
better
just
put
in
a
trade
to
begin
with,
but
I'm
sure
my
my
hunch
of
how
this
will
work
is
that
we
will
start
doing
that
immediately.
Hit
problems,
get
stash,
fix
the
problem
and
repeat
rinse
and
repeat
for
a
long
time
until
it
actually
works.
Yeah.
B
A
So
now
I'm
fantasizing
about
what.
If
I
actually
tried
to
write
some
code,
I'm
thinking
one
of
these
two
things
I
could
maybe
try
to
do.
I
had
some
ideas
about
this
that
I've
now
forgotten,
but
that's
no
one's
like
poked
at
this
right.
B
A
Two
but
ready
b
or
something,
but
I
don't
think
he
will
it's
fine
or
they
will
I
yeah
I
might
I
might
try
to
play
with
it.
It's
it
would
be
cool
if
it
worked.
I
would
like
the
code
better.
If
we
didn't
do
this
trick,
I'm
worried
it'll
be
slow,
but
we've
been
pretty
good
at
finding
solutions
to
those
problems
over
time.
A
I
would
like
this
is
exactly
the
place
as
an
aside
where
I
really
would
like
to
use
the
two
family
folding.
I
think
it
would
be
pretty
nifty
if
you
like,
returned
from
the
query
system
types
with
one
family.
That
is
like
not
ins.
You
know
that
indicates
that
they're
coming
out
of
they
have
not.
A
I
don't
know
what
the
word
is,
that
they
have
bound
types
in
them
from
their
context
and
then
another
one
that
instantiated
them.
On
the
other
hand,
if
we
start
actually
using
binder,
we
sort
of
solve
that
problem
a
different
way
yeah,
so
because
that
is
a
place
where
there
actually
are
a
non-trivial
number
of
bugs
due
to
people,
just
forgetting
to
substitute
when
they
should
have
done,
and
especially
rusty's
punting
means
that
that
actually
works
a
lot
of
times.
A
Like
you
know,
you
have.
You
have
two
contacts
with
two
logically
distinct
type
parameters,
but
both
with
index
zero,
and
you
could
be
substituting
one
for
the
other,
but
you
don't
and
it
still
compiles,
and
then
someone
makes
a
new
example
that
has
like
not
index
zero
and
everything
breaks,
and
it's
really
confusing.
B
Yeah
I
mean
even
for
doing
like
the
chalk
integration.
I
it
took
me,
I
don't
I'm
sure,
there's
still
bugs
even
after
matthews
fixed
pr,
but
where
I'd
forgotten
to
substitute
things
or
just
haven't
so
yeah.
I
can
totally
sympathize
with
that.
A
A
E
E
B
B
It's
on
thai
ass,
which
is
slightly
different,
even
though
it's
just
a
type
in
this
one.
A
I
think,
eventually
we're
going
to
want
some
subtract
of
interner.
That's
like
global
internet.
I
don't
know
what
it's
called,
but
the
point
being
that
it's
or
not
global
internet,
that's
the
wrong
name,
but
it
would
be
a
sub
trade
that
allows
you
to
get
the
intern
representation
without
supplying
the
internet,
and
that
would
be
useful
for
rusty.
A
She
has
that
capability
and
in
particular,
then
we
could
implement
dref
for
if,
if
you
have
that,
an
intern
that
meets
that
bound,
tai
can
implement
dref
and
draft
to
tie
data
just
like
rusty
does,
and
the
advantage
of
that
would
be
that.
Then
we
can,
you
know,
not
modify
all
the
rusty
source
code
that
takes
advantage
of
that
and
it's
more
convenient
when
you
can
less
convenient
when
you're
writing
generic
code
and
that's
okay,.
A
Yeah
a
minor
thing,
but
I
don't
want
to
I'm
not
particularly
keen
to
go
and
modify
rusty
so
that
we
pass
tcx
in
everywhere
just
to
not
use
it
yeah,
it
seems
a
little
silly.
A
B
A
A
A
So
yeah
anyway,
we
would
want
to
have
a
conditional
draft
for
interners
which
can
access
data.
So
speaking
of
interning,
it's
only
sort
of
related,
but
it
seems
related,
rust,
analyzer.
There
was
this
stuff
about
that
poor
performance
due
to
interning,
vectors
and
so
forth.
Right,
yes,.
B
A
A
I
don't
like
there
could
be
two
possible
fixes
right.
One
would
be
that
you
just
do
figure
out
that
you
can
return
the
original
value
or
do
less
folding
yeah,
and
the
other
would
be
that
you
optimize
the
interning
stuff.
I
think
rusty
is
more
on
the
latter.
Actually
I
don't
think
we're
all
that
smart
about
the
former,
but
maybe
we
are
in
some
places,
maybe
there's
a
few
crucial
places.
B
A
We
can
go
florian,
be
interested.
Very
bold
it'd
be
nice
to
get
someone
from
rust
analyzer,
although
it
might
require
some
modifications
to
salsa.
If
I,
if
we
wanted,
if
the
answer
is
that
they
should
be
interning
their
slices,
we
may
have
to
modify
salsa
to
do
it.
Rusty
has
some
pretty
scary
code
to
do
that.
Since
I
recall
kind
of
subtle
code.
B
B
And
I
mean
it's
also
nice,
because
we
have
the
the
manual
publish
too,
because
we
just
merged
matthew's
fix
and
he
did
a
manual
publish
and
now
shotgun
or
rusty
can
use
that.
So
speaking,
which
there's
a
couple
pros
for
you
to
take
a
look
at.
A
I
was
so
happy
I
got
to
well.
I
got
through
all
my
notifications
because
I
marked
them
all
as
red.
They
were
more
than
like
three
days
old,
but
but
I'm
already
behind
again
last.
E
B
But
yeah
the
publishing
works
really
well.
There's
been,
there's
only
been
a
couple
weeks
recently,
maybe
just
one
that
there
was
like
no
there's
nothing
between
the
release,
there's
like
no
merged
pr's,
but
I
don't
think
it's
not
really
a
problem.
B
Look
at
the
thai
flags
pr
and
do
a
reading.
D
E
B
A
Yes,
what's
the
story
with
lexical
region
resolve
at
this
moment.
C
A
C
No,
I
think
it's
just
for
that
question
resolve
it's
also
used
when
we
record
type
annotations.
We
need
to
oh
yeah.
We
need
to
remember.
A
A
Okay-
and
that
was
my
least
favorite
part
of
it
all-
I
was
dealing
with
user
annotations,
but
for
the
rest
of
you
who
didn't
suffer
through
that.
The
problem
was
that
we
nll
completely
erases,
like
we
basically
don't
have
any
region
information
that
we
we
kind
of
reconstruct
everything
from
the
mirror,
but
that
worked
great,
except
for
when
users
manually
wrote
things
like
that
has
to
be
carried
forward.
Otherwise
we
use
nothing
from
the
older
classes.
So,
if
you
like
wrote,
let
x
ampersand
take
a
u32.
A
A
C
A
B
Cool
all
right,
moving
on.
B
Yeah
that's
a
week.
I
think
we
can
totally
start
it
or
somebody
can.
It's
just
gonna
be
trying
to
figure
out
as
we
go.
You
know
the
problems
that
we
might
run
into.
A
B
Yeah
I
mean
it.
I
definitely
I
would
like
it
to
be
in
in
small
pieces,
but
I
don't
know
how
well
that'll
work,
because
so
much
of
it
sort
of
interconnected
that
I
feel
like
we
yeah,
we'll
we'll
find
out
we'll
find
out
yeah
somebody
someone's
got
to
play
with
it.
I
don't
have
time
right
now
too,
especially
not
with
the
lit
bound
region,
morph
that
I'm
doing,
but
if
anybody
is
watching
us
and
wants
to
try
it
we're
here
to
help.
C
A
I'm
gonna
say
that
I'm
going
to
try
this
and
then
you
all
are
going
to
hold
me
accountable
for
whether
I
do
or
not,
I'm
happy
to
give
it
up
too,
but
this
needs
a
person
to
play
with
it
yeah
this
needs.
B
A
Probably
at
least
a
little
chalk
also
has
where
clause
right-
yes,
yeah
at
least
that
part
would
seem
relevant
right.
There's
there
are,
where
clauses
that
don't
no
other,
is
there
any
form
of
where
clause
that
cannot
appear
in
a
predicate,
maybe
some
of
the
weird
ones
like,
I
think,
maybe
not
actually
right.
The
only
thing
I
can
think
of
is
we
do
have
this
sort
of
odd
special
case
thing,
where
I
think
you
can
write
this
like
an
empty
list
of
region
bounds,
and
it
has
some
special
case,
meaning
like
that.
C
A
A
A
B
Yeah,
I
think
this
has
been
super
helpful,
so
yeah
I
mean
most
of
this
looks
like
there's
a
path
board
and
I
think
a
lot
of
this
can
be
done
sort
of
in
parallel,
so
yeah.
D
B
Exciting
the
only
thing
that
I
think
is
going
to
be
really
big
and
sort
of
in
one
glob,
or
most
of
it
will
be
actually
the
extracting
the
library
and
we'll
see.
A
Reminds
me
another
thing
we
might
do
a
meeting
like
this
for
at
some
point,
is
revising
the
skill
tree.