►
From YouTube: GitHub Quick Reviews
Description
Powered by Restream https://restream.io/
B
And
so
we're
doing
some
more
api
review
off
of
the
handy
dandy
backlog
list,
and
hopefully
we
have
enough
people
to
make
progress
so,
first
on
the
docket,
because
apparently
no
milestone
sorts
higher
than
all
milestones.
B
Four:
four:
zero:
two
five:
does
anybody
have
context
on
this?
One.
C
Yeah,
I
have
context
on
it.
There's
a
desire
there's
a
customer
asked
for
us
to
expose
a
setting
from
win
http
in
the
win
hp
handler
that
controls
tcp
keep
alive
that
basically
turns
on
tcp
keep
alive
and
allows
you
to
configure
the
a
couple
properties
related
to
tcp
keep
alive.
D
C
C
E
C
C
Separate
twin
hbtcp
that
may
maybe
a
little
funky.
We
may
want
to
just
kill
that
and
flatten
this
out
onto
the
properties
on
when
on
the
win,
hp
handler
class
itself,
rather
than
having
like
a
nested
class
you're,
not
nested,
but
like
a
class
value.
C
The
there
is
some
president
here
in.
If
you
scroll
down
to
alternative
designs,
there's
some
precedent
here
in
service
point:
you
can
click
that
and
see
how
the
existing
service
point
api
works.
However,
the
the
service
point
api
is
like
a
it's,
not
a
property.
It's
like
a
set
these
three
things
and
I
think
we
want
to
expose
this
as
a
property,
as
opposed
to
like
a
set
method.
E
C
C
Concerns
about
connection
pooling
that
and
in
load
balancing
that
turning
this
on
seems
to
help
them
in
certain
situations.
E
You
know
they've
disabled
http,.
C
Basically,
you
know
at
some
point
we
said:
look
if
you
tell
us
that
this
you
know,
improves
your
cogs
by
five
percent,
then
sure
we'll
do
it
right
and
and
and
it's
really
on
our
side.
It's
really
just
grab
the
values
and
call
you
know
the
win
hp
set
property
on
the
session
or
something
like
that.
So
it's
a
small
amount
of
work
and
in
general
we
have
tried
to
push
back
on
any
changes
to
win,
hp
handler
and
say:
look
I
really
want
you
on
sockets
hp
handler.
C
That's
where
the
perf
is
it's
cross-platform,
that's
where
the
investment
is
it's
more
extensible,
h,
sockets,
hp,
handler
and
5.0
supports
this
already
through
the
connect
callback
hook
but
and
they've
said
yeah.
We
know
that,
but
we
aren't
planning
on
moving
to
core
for
like
a
year,
and
this
is
like
a
big
win
for
us
and
we
said:
okay,
we
can
obviously
be
flexible
about
some
a
few
enhancements,
but
we
don't
want
to
make
major
investments
and
win
hp
handler.
G
Just
for
a
record,
we
did
something
similar
in
a
coral
handler
a
long
time
ago
that
again
in
center
network
conditions
introduced
problems
with
the
low
level
networking
gear
like
load,
bouncers
and
firewalls,
and
also
as
ultra,
they
also
discovered,
and
we
decided
to
be
overkill.
So
that's
why
we
end
up
specific,
because
there
are
other
properties
when
the
nhp
has,
but
we
decided
not
to
expose
them
calling
generic
way.
Because
again,
it
was
just
complicated.
G
B
So
you
have
the
there.
Someone
has
the
comment
here
of
the
default.
Keep
alive
time,
if
exposes
a
property,
would
be
two
hours
based
on
the
windows
default.
Is
that
something
to
be
actually
queried,
or
is
that
that
windows
has
a
current
default
and
they
could
change
it
in
the
future?
But
we've
said
two
hours,
and
so
it's
two
hours
from
now
on
the
default's
disabled,
but
if
it's
enabled
it's
two
hours.
E
E
B
Yeah
I
mean
properties
are
probably
nicer,
but
I
don't
know
why
people
would
really
be
reading
it
back.
It
seems
like
a
thing
that
you
set
it
to
the
policy
that
you
want
and
you
don't
care
what
it
would
have
had
so
for
minimizing
surface
area.
I'd
suggest
just
the
set
tcp
keep
alive
like
service
point
head.
F
The
one
of
the
one
of
the
benefits
of
having
readable
properties
is:
if,
if
there
is,
you
know
an
error
in
production,
you
can
kind
of
just
dump
this
and
see
what
the
values
were.
F
C
Yep,
the
other
thing
that's
probably
worth
looking
at
is,
if
you
look
under
alternative
designs,
there's
a
link
to
a
the
we'll
see
where
it
says
c
number
31198
go
to
that,
because
it
shows
how
something
similar
not
the
same
feature,
but
a
the
the
pinging
timeouts
is
how
the
ping
timeouts
are
configured
on
socket
hp
handler
for
http
2..
In
other
words,
it's
just
three
properties
on
the
on
the
handler
itself.
One
that's!
Even
though
it's
an
enum,
it's
basically
a
bool.
Well,
no,
it's
not
it's
not
a!
C
I
mean
it's,
not
it's
an
enum,
but
it's
got
two
values.
Sorry,
it's
not
really
a
bool
and
then
time
span
for
the
delay
and
timeout.
So,
instead
of
having
a
separate
class,
we
could
just
have
three
properties
on
the
on
the
handler
itself
that
where
the
third
is
like
bool
enable
tcp
keep
alive
or
something
like
that.
C
F
F
F
Yeah,
so
I
think
that
would
be
another
argument
for
for
not
doing
the
additional
class.
B
Yeah,
I
think
the
the
class
is
the
worst
of
the
proposed
options,
because
it's
just
it's
adding
another
type,
that's
not
really
needed.
I
don't
think
that
we
expect
it
ever
to
really
grow
in
complexity.
B
B
E
Minimum
default-
I
just
faced
it
in
chat,
so
we
can't
go
lower
than
that
if
we
want
to
be
like
spec
compliant.
F
F
F
B
Does
that
not
do
anything?
Does
it
throw
in
the
set?
Does
it
throw
when
you
create
the
request,
if
it,
if
the
docs
just
say
it
enables
tcp
keep
alive
when
available,
then
you
can
just
eat
the?
I
don't
know
what
to
do
with
this
error.
Yeah.
F
C
F
B
Yeah
I
mean
if
it
says
false,
so
I
guess
it
comes
yeah,
there's
a
bunch
of
implementation
things
if
you
feel
like
you
need
the
supported
later
you
can,
but
if
what
you're
doing
is
just
collecting
properties,
passing
them
to
the
os
and
it
either
supports
them
or
doesn't,
then
I
don't
know
that
you
really
need
the
supported
flag,
because
really
that
would
be
avoid
the
throw
is
why
you
would
call
it
if
it's
supported
set
these
properties,
otherwise
don't
but
all
right
anything
else.
I
guess
I
should
check.
F
And
see
if
chat
has
anything
is
20
or
04
supposed
to
be
the
the
actual
like
windows
version
number.
C
F
H
B
All
right,
a
crypto
thing:
jeremy
you're
up!
Thank
you,
jeremy,
all
right!
So
we've
previously
seen
this
issue
it
and
approved
it.
So
I
have
a
big
block
of
stuff
up
here,
which
is
what
we
had
already
approved,
but
two
or
we
recently
added
support
for
cypher
feedback
mode,
and
so
now
this
is
adding
the
api
to
expose
cipher
feedback
mode,
and
then
that
showed
that
we
had
oversimplified
the
api
previously.
So
there's
a
change
after
this,
so
for
scrolling
back
up
so
in.
B
Ecb,
which
is
what
is
that
levi,
something
code
book
electronic
code
book.
Thank
you
so
an
electronic
code
book
we
said
the
padding
mode
was
a
mandatory
argument.
You
give
a
cipher
text
or,
if
you're
decrypting,
it's
plain
text,
and
there
is
no
iv,
because
ecb
doesn't
have
an
iv
when
we
move
up
into
cipher
block
chaining
or
cbc.
B
B
B
B
So
it's
just
the
same
as
all
the
previous
stuff,
except
it
says,
cfb
instead
of
ecb
or
cbc,
and
then
we
had
previously
approved
a
method
called
get
ciphertext
length.
You
tell
it
what
kind
of
padding
you're
doing
so
it
knows
whether
or
not
it
would
need
to
add
a
block
if
you're
block
aligned
and
how
long
it's
going
to
be,
and
it
tells
you
how
long
the
output
would
be,
but
in
cfb
the
size
of
the
padding
changes.
B
What
the
answer
would
be
so
it
it
needs
that
question,
which
means
that
instead
of
having
one
method
which
complicatedly
takes
parameters
that
it
ignores,
sometimes
we
split
it
into
three
that
look
just
like
the
encrypt
signature,
or
I
mean
they
have
a
length
instead
of
an
array,
but.
C
I'm
probably
missing
some
context
here,
but
why
don't
we
have
like
classes
define
like
like
that?
Just
have
like
encrypt
decrypt
and
get
length
or
whatever
it
is
get
ciphertext
length.
And
then
you
instantiate
one
of
those
passing
settings
like
padding
mode
and
feedback
size
bits
to
that.
B
Well,
that's
actually
sort
of
what
we
have
right
now
for
the
base
class
and
what
I
mean
it
does
it
with
a
unified
thing
on
everything
and
the
enum
padding
mode
is
a
property,
and
then
it
has
a
bunch
of
other
properties,
some
of
which
matter,
depending
on
what
your
padding
mode
is
and
some
of
which
don't
matter
and
no
one
understands
how
anything
interacts,
and
so
this
proposal
was
so
that
you
have
don't
have
to
create
as
many
objects,
and
you
can
just
take
your
your
key
object
and
tell
it
like
I'm
encrypting
in
bcfb
and
oh
look
now.
C
Okay,
so
like
in
general,
so
you're
saying
if
I
know
I
want
to
use
this
particular
encryption
algorithm,
then
it's
actually
simpler
to
just
use
these
flat
things,
because
it
tells
me
exactly
what
I
need
to
pass
in
every
time:
yeah
as
opposed
to
instantiating
some
abstraction
that
has
16
properties,
and
I
only
care
about
two
of
them.
C
B
F
So
you
would
call
aes.create,
for
instance,
to
get
an
instance
of
an
aes
object
and
then
these
would
be
one-shot
methods
effectively.
F
F
You
have
to
set
properties
like
the
iv
and
the
key
and
then
call
create
encrypter
or
create
decrypter,
which
will
give
you
an
instance
of
an
I
crypto
transform,
and
then
you
have
to
pass
that
into
a
crypto
stream,
and
then
you
have
to
keep
feeding
your
data
in
piecemeal
and
it
actually
ends
up
being
an
enormous
amount
of
work,
whereas
these
new
apis
are
no
here's,
a
byte
array
just
get
out
of
my
way
and
encrypt
the
damn
thing,
using
the
particular
algorithm
that
I
want
you
to
use.
C
F
C
B
F
F
B
B
That
would
be
theft,
no
yeah
thanks
the
yeah,
because
we
I
mean
in
dot
net
5.
We
actually
got
a
bug
that
triple
does
cfb
was
inconsistent
between
framework
and
core,
so
someone
uses
triple.
F
F
B
B
Yeah
I
mean,
alternatively,
we
could
make,
you
know
a
class
cfb
and
you
pass
a
symmetric,
algorithm
and
comma
all
the
other
stuff
it
needs
into
it,
but
that
then
means
that
we
would
have
to
figure
out
how
to
allow
that
to
work
in
a
inheritance
model
like
we
already
have
so
basically
just
ends
up
putting
them
back
all
in
this
class,
like
the
fact
that
we
need
all
these
virtuals
is
really
what's
doing
it
but
anyway.
So,
yes,
the.
F
B
B
Ain't,
it
great
so
the
yeah.
So
the
thing
for
that's
being
reviewed
right
now
is
exploding
ciphertext
length
from
one
method
into
three
and
adding
all
the
cfb
members.
F
B
B
B
I
F
B
B
All
right,
oh
one,
thing
that
I
do
specifically
want
people
to
the
best
that
kevin
and
I
came
up
with
in
brainstorming-
was
feedback
size
bits
that
really
doesn't
fill
me
with
warm
fuzzy
feelings,
but
feedback
size
is
in
bits,
while,
whereas
plain
text
length
is
in
bytes,
because
we
expect
you
to
pass
plaintext.length
so
definitely
here
we
wanted
it
to
save
bits
and
then
it
seemed
like
it
should
match
everywhere,
but
should
it
be
feedback
bits
feedback,
size,
bits,
feedback
size
in
bits?
No
one
cares
because
it's
crypto.
F
F
Well,
I
I
think
your,
I
think
your
distinction
in
the
arguments
where
the
the
padding
argument
explicitly
taking
bits
is
a
good
call
out
that
the
plain
text
is
in
bites,
not
bits
and
the
padding
is
in
bets.
F
Yeah,
so
if
we,
if
we
had
to
prioritize
standing
up
a
parallel
better
stack
over
this,
I
would
absolutely
be
in
favor
of
that.
C
C
B
F
Yeah,
so
for
as
a
little
bit
of
historical
context,
the
reason
that
there
are
base
classes
and
all
of
these
all
of
these
properties
on
these
classes
is
because,
when
these
were
designed,
we
were
trying
to
go
for
cryptographic
agility,
which
is
you
can
just
kind
of
replace
the
algorithm
under
the
covers,
and
everything
should
should
kind
of
sort
of
keep
working.
It
turns
out.
F
This
isn't
the
right
way
to
get
agility
like
an
application,
actually
has
to
know
things
about
the
properties
of
the
algorithm
it's
working
with
like
it
has
to
know
things
about
how
aes
not
behaves,
but
how?
How
it's
configured,
for
instance,
separately
from
something
like
does
or
tripletas
like
aes
gcm,
is
actually
different
than
aescbc
like.
We
can't
pretend
that
they're
the
same
thing,
they
require
different
kinds
of
configuration,
so
our
existing
classes
aren't
holding
up
well
in
this
new
world.
C
Yeah,
I
guess,
like
I,
don't
have
a
ton
of
context
on
this,
but
it
feels
like
we're
kind
of
defining
a
parallel
stack
anyway
by
introducing
a
whole
bunch
of
new
apis,
but
we're
kind
of
at
the
same
time
we're
we're
doing
it
on
the
existing
classes,
which
may
end
up
being
the
worst
of
both
worlds.
You
know
what
I
mean.
F
B
I
mean
for
the
most
part,
this
is
the
one.
Shots
are
just
simplifying
the
call
pattern
of
do
stuff
call,
create
encrypter
and
then
either
blindly
call
transform
final
block
and
be
like
yeah.
I
know
all
the
inbox
ones.
Let
me
call
transform
final
block
and
give
it
all
the
data
in
one
shot,
or
you
know
this
theoretically
would
do
it
safer
so,
but
but
yeah
it's.
C
Let
me
ask
one
more
question
before
we
move
on
sorry,
I'm
just
thinking
about
this
from
like,
if
I'm
a
consumer
of
this
like
say,
quick
right.
If
I'm
a
consumer
of
this-
and
I
know
I
want
to
use
exactly
this
algorithm,
then
I
get
it.
This
works
fine.
If
I'm
a
consumer-
and
I
like,
like
let's
say
I'm
the
quick
code
and
I
want
to
you
know-
and
I
need
to
support
a
variety
of
different
suites
and
potentially
different
settings
on
those
things,
and
I
so
therefore
I
need
some
abstraction.
C
F
I
I
would
say
if
you
want
an
abstraction,
you
shouldn't
be
using
the
primitives
like
this.
You
should
be
using
a
much
higher
level
api,
something
that
can
handle
all
of
the
all
of
the
abstractions
on
your
behalf
and
that
can
handle
things
like
key
management.
For
you,
like.
I
F
B
Right
because,
like
the
you
know,
you
mentioned
cipher
suite
so
for
tls
right,
the
for
a
long
time,
everything
was
based
on
cipher
block
chaining,
where
it's
in
this
particular
place.
You've
got
the
the
iv
or
you
computed
the
iv,
and
you
had
your
session
key
and
you
used
cbc
to
go
along
and
do
things
and
then
they
added
ccm
and
gcm
modes
and
cha
cha
poly
and
those
completely
change
what
the
data
flow
looks
like.
B
Instead
of
doing
a
separate
mac
you,
it
uses
the
inbuilt
authentication
algorithm,
but
that
actually
produces
it
has
it's
a
different
function.
It
doesn't
take
ciphertext
and
or
plain
text
and
a
key
and
then
iv
and
produce
an
output.
It
takes
all
those
things
and
produces
two
outputs.
One
is
the
encrypted
stuff
and
one
is
how
you
verify
that
it
didn't
get
tampered
with,
and
so
there
is
no
such
thing
as
for
gcm.
A
a
oh
go.
B
Do
this
stuff
and
turn
it
into
the
bytes,
because
it
produces
two
different
sets
of
bytes
and-
and
so
that's
where
all
of
the
stuff
that
most
of
this
stack
was
invented
to
make
encrypted
xml
work.
For
net
framework
too,
and
it
worked
because
there
were
only
like
two
modes
and
it
handled
all
the
stuff
for
you,
but
it
yeah,
it
hasn't
aged
well.
C
So
I
think
what
I
heard
you
guys
say
tell
me:
if
I'm
getting
this
right
is
most
people
don't
actually
want
to
deal
with
us
in
an
abstract
way.
They
either
want
to
deal
specifically
with
one
of
these
encryption
modes,
or
they
want
to
deal
with
an
abstraction
at
a
much
higher
level
that
that
abstracts
away
the
differences
between
other
things
like
cha-cha
and
crap
like
that,
is
that
right.
B
Largely
like
this
would
be
used
in
encrypted
xml,
but
it
won't
because
it's
a
net
standard
tool
package
and
like
signed
or
encrypted
cms.
I
guess
envelope
cms,
where
it's
you
have
some
stuff
and
it
does
magic
and
it's
safe
and.
B
F
B
C
Have
any
notes
or
contacts
on
that
I
mean
I,
my
knowledge
of
the
crypto
stack
is
just
deep
enough
to
be
dangerous.
You
know
what
I
mean,
so
I
don't
know
that
I
have
the
right
level
of
context
really,
but
anyway,
let's
take
it
offline.
B
Yeah
all
right
33770,
it's
a
analyzer
proposal
that
we
warn
if
you're
using
of
type
t
with
an
impossible
cast.
H
Yeah,
I
can
talk
about
that.
One.
The
linked
issue
in
the
wrestling
analyzer
proposals
has
a
bit
more
information,
but
we
try
to
summarize
it
here.
Under
that
link,
this
analyzer
would
affect
cast
and
of
type.
If
we
want
to
keep
its
contained,
we
will
have
to
detect
the
type
that
we
are
using
in
t
and.
F
H
Also.
We
already
have
someone
who
jumped
in
to
create
a
car
for
this,
but
it
happened
because
they
created
the
pr
before
we
decided
to
do
weekly
3h
on
the
runtime
side
and
approving
them
as
apa
proposals.
So
we
just
asked
them
to
wait
for
this
to
be
approved.
F
This
is
fine.
Okay,
I
said.
I
think
this
is
fine.
My
only
hesitancy
with
this
is,
I
do
wonder
if
it's
starting
to
get
into
the
realm
of
things
like,
would
this
actually
catch
with
what
we
could
catch?
Would
it
actually
catch
real
issues
in
people's
code
and
if,
yes,
then
great?
If
no,
then
we're
kind
of
doing
work
and
adding
cost
for
a
little
value.
B
F
It
could
also
forecast
it
could
it
could
also
be
useful
in
the
sense
that,
like
hey,
did
you
mean
convert
or
something
instead
like?
I
have
an
int
array,
and
I
want
to
turn
it
into
an
I
enumerable
of
long.
There
are
methods
that
you
can
call
to
do
that
and
cast
is
not
the
right
api.
F
B
Which
is
why
yeah,
I
think
of
type,
is
you
ran
through
this
thing
and
you're
always
getting
an
empty
list,
and
when
you
look
at
it
you're
like
oh
well,
it
just
means
that
you
know
I've
never
been
called
with
a
thing
that
matched
it's
like.
Well,
no
because
it
turns
out,
you
have
an
impossible
line
of
code
here,
but
so
yeah,
especially
since
somebody
else
already
did
the
work.
I
don't
like.
I
don't
think
it's
detrimental
to
have
it
done.
B
F
B
Yep,
I
don't
know
if
reliability
is
the
right
category,
but
I
can't
think
of
a
better
one
and
warning
seems
fine
as
a
reliability.
F
B
F
F
I
can
speak
to
this
one,
so
this
is
basically
we
have
overloads
of
string
docking
cap
that
takes
fans
and
when
we
were
going
through,
you
know
when
we
added
that
and
we
went
through
the
runtime
code.
Looking
for
where
we
could
use
it.
There
were
a
ton
of
places
that
were
like
string,
dot,
concat
some
string,
some
string,
dot,
substring
some
string
and
that
can
be
changed
to
some.
F
You
know
string
document
cat,
some
string,
some
string
that
has
spam
instead
of
substring
and
some
string
and
you
end
up
saving
on
the
substring
allocation.
It
can
also,
potentially
you
know,
if
you're
using
the
plus
operator.
Instead,
you
could
change
those
to
be
string.
Docking
cat
calls
for
the
same
same
benefit.
So
basically
it's
you
know
pushing
you
towards
avoiding
string
out
intermediate
string
allocations.
F
F
If
I
remember
correctly,
I
saw
a
comment
from
levi
asking
about
whether
we
want
to
push
people
towards
spans
and
for
me
this
one
is
kind
of
we're
going
to
do
it
at
all
like
this
one
sort
of
the
best
kind,
because
you
don't
actually
have
to
write,
read
only
span
in
your
code
at
all.
It's
just
you're
changing
dot,
substring
to
not
as
spam
and
so
you're,
not
actually
seeing
you
know,
span
of
char
or
read
only
spanish
r
in
your
code
or
anything
like
that
yeah.
F
My
comment
was
on
a
different
but
related
issue,
because
this
is
one
of
like
three
or
four
three
or
four
issues
in
the
same
category
and
yeah,
it
was
bringing
up
like
read-only
span
of
char
is
yet
another
concept
that
people
would
have
to
be
introduced
to,
but
I
I
agree
with
steve
here.
I
think,
like
that's.
It's
not
actually
really
in
your
face
here
like
it's.
It's
pretty
well
hidden,
where
we're
not
really
introducing
new
concept
counts
into
the
mix.
What
I
I
can
kind
of
maybe
half
make
the
argument.
D
F
F
B
F
It's
possible.
Things
have
changed
since
I
last
saw
it
since
I
last
looked
at
it,
but
in
the
past
it's
been
it
is.
If
all
the
of
all
the
inputs
are
strings,
then
it
delegates
to
string.concat
with
string
string
inputs.
If
any
of
them
is
not
a
string,
then
it
delegates
the
string.cat
with
object
inputs.
Yeah
he's
right.
I'm
testing
this
right
now.
B
Okay,
fair
enough,
okay,
so
yeah,
I
think
as
to
me.
It
makes
sense
whether
it's
using
the
pluses
or
a
call
to
string.concat
that
if
it
looks
like
it's
a
string
concatenation
that
we
should
with
a
sub
with
a
substring
expression
in
it
that
we
should
flag
it
as
this
could
be
as
span.
F
Yep
should
check
how
what
what's
the
arity
of
our
of
our
overloads
on
that
for
for
span.
We
have
to
do
three
and
four
got
it:
okay,
that
should
cover
most
cases.
F
Is
there
talking
about
concept,
count
switching
from
a
friendly
plus
operator
to
string
docking
cat?
Are
we
okay
with
that
surfacing
that
to
people.
F
I
think
it
I
certainly
would
certainly
wouldn't
be
a
warning.
I
think
it
could
be
a
suggestion.
That's
on
by
default.
You
know
an
info
level
thing
and
if
we
were
concerned
about
that,
we
could
split
them
into
two
diagnostic
ids,
one
for
string,
concat
and
one
for
plus,
but
I
don't
have
a
strong
preference.
F
F
Where,
like
the
suggestions,
are
already
pretty
darn
noisy,
but
they
also
don't
show
up
at
all
in
compile
time
builds
they
just
show
up
in
you
know
the
id
suggestion
and
as
squiggles
there's
there's
the
next
level
down
of
hidden,
which
would
also
be
fine
where,
if
you
happen
to
be
on
that
line,
you'll
get
the
you
know,
you'll
get
the
little
light
bulb,
but
it
won't
show
up
in
the
in
the
suggestions
window.
So
we
could
choose
either
of
those.
I
don't
have
a
strong
preference
and.
F
F
Historically,
how
how
useful
have
people
found
performance,
analyzers
and
fixers
just
historically
so
this
one
in
particular
found
a
whole
bunch
of
places.
In.Net
runtime.
F
Absolutely
yeah,
okay,
some
of
them
are
like
you
know,
there's
there's
a
wide
variety
like
the
the
one
that
prashant
had
added
that
was
about.
I
forget
what
it
was.
It
was
like
changing
strings
to
characters
with
certain
apis.
You
know
that
changed
a
huge
number
of
call
sites
and
dotnet
runtime.
F
Each
of
them
is
a
very
minor
win,
but
in
theory
it
all
you
know,
contributes
to
peanut
butter
across
and
adds
up.
Oh
yeah,
I
had
I've
had
a
conversation
with
a
few
customers
that
have
tried
these
with
dot
net
five
and
they've
generally
been.
You
know
like
the
reaction
is
sharing
like
oh,
like
yeah,
that's
nice,
okay,
I'll,
apply
that
and
it's
not
oh,
my
goodness.
This
was
amazing
but
just
sort
of
generally
oh
yeah.
That's
goodness.
D
F
I
think
this
one
in
particular
is:
it
would
be
one
of
the
more
impactful
ones.
Okay,
along
with
I
think,
like
in
the
last,
I
think,
probably
the
more
the
more
impactful
ones,
and
it
still
remains
to
be
seen,
but
the
one
that
was
we
shipped
and
done
in
five
around
changing,
which
overload
of
read
and
write
async
on
stream
you
use
because
then
you
avoid
allocations
for
tasks
and
stuff,
like
that,
you
know,
and
potentially
so
I
think
I
don't
know.
F
I
think
it
remains
to
be
seen
overall,
but
I
think
we've
sort
of
seen
generally
trending
towards
positive.
Okay,
awesome.
H
B
B
B
F
I
I
do
see
them
as
two
separate
issues,
just
because
they're
actually
changing
the
structure
of
the
code,
because
one's
changing
an
operator
to
a
method
call,
even
though
it's
the
same
under
the
covers,
it
makes
the
code
look
and
feel
different,
whereas
this
keeps
the
structure
of
the
code.
So
I
think
something
like
this
would
be
easier
for
people
to
reason.
F
F
B
Right,
so
that
would
be
the
other
one
only
does
hey.
I
need
to
change
your
thing
from
using
pluses
to
doing
a
method
or
like
it's
really
doing
a
method
call
anyway,
but
your
your
syntax
is
going
to
change
from
pluses
to
a
method
call,
and
this
one
would
then
be
anything.
F
F
H
Yeah
so
since
we're
already
looking
at
this,
is
it
small
enough
simple
enough
to
maybe
also
prove
it.
B
Yeah
I
mean
like
that's
yeah,
so.
B
Because
it
changes
what
the
approval
notes
will
be
for
the
previous
one,
so
yeah.
I
think
this
one
is,
if
you
can
find
an
overload
that
instead
of
using
substring,
could
have
used
as
span
suggest
that
and
the
other
one
is
if
you're
using
only
operator
plus,
then
it
wants
to
do
the
suggestion,
and
and
now
both
scenarios
are
covered,
but
with
different
things.
B
B
F
H
F
A
B
D
B
D
Yup
yup,
so
the
background
on
this
on
this
ball
games
or
this
api
request
is
we
have
a
couple
places
inside
the
runtime
that
have
extension
methods
with
this
exact
overload
in
it,
where
you
want
to
specify
a
method's
name,
the
binding
flags
and
the
in
the
types
of
the
parameters,
and
the
only
way
to
do
that
today
is
also,
if
you
pass
in
null
for
the
binder
and
null
for
the
calling.
I
can't
remember
what
the
modifiers
right
here.
D
Right
right,
and
so
the
problem
with
using
you
know,
internal
extension
methods
is
the
linker
can't
see
through
them,
and
so
we
had
a
bunch
of
trimming
bugs
that,
since
places
in
the
run,
time
were
using
these
internal
extension
methods
that
the
linker
didn't
know
about
the
linker
was
failing
to
find
the
methods
that
it
needed
to
preserve.
D
So
what
I
did
is
changed
literally
hundreds
of
call
sites
to
putting
in
these
two
nulls
for
the
the
binder
and
the
the
modifiers
and
instead
kind
of
thought.
This
would
just
this
is
a
useful
overload
for
both
get
method
and
get
constructor
on
type
itself.
We
should
have
it.
B
Yep
you'll.
B
B
Yeah
yeah,
so
this
makes
sense
to
me
you
so
the
extension
method
was
internal.
D
You
know,
remove
that
extension
method
and
then
make
it
called
the
ugly
overloads
yeah
and
then
hopefully,
if
this
gets
approved,
I
can
remove
all
those
calls
to
this
new
method,
and
then
the
linker
will
have
to
know
about
this
method,
but
it
the
way
it's
written.
It
it'll
just
pick
this
up
automatically.
D
D
D
So
both
the
yeah,
the
game
method
and
gets
constructor,
the
other
ones-
can
return
null.
So
this
can
return
null.
D
F
I,
like
that,
there's
what
is
it
like?
A
type
start
empty
accelerator
for
an
empty
type
array,
yeah
and
we've
never
we're
very
inconsistent
across.net
runtime
about
whether
we
use
array.emptytype
or
type
dot
missing
or
whatever
it's
called
typed
empty
types.
I
think
one
of
the
things
I've
been
I've
had
on
my
like
long
to
do
list
is,
you
know,
potentially
go
and
rationalizing
all
that,
but
I've
just
never
done
it
since
it
didn't
kind
of.
You
know
rise
to
that
level
of
yeah
yeah.
G
C
Yeah,
I'm
here
sorry,
I
was
distracted.
I
apologize.
How
are
you
talked
about
two
weeks
ago?
I
think
we
have
this
socket
task.
Extensions
thing
that
exists
for
historical
reasons
where
we
have
all
of
the
task
based
apis
on
socket
are
currently
defined,
as
extension
methods,
as
opposed
to
instance
method.
So
the
proposal
here
is
just
define
instance,
methods
for
all
these
and
then
go
mark
the
existing
apis
and
socket
task
extensions
as
editor
browseable,
never,
and
and
that's
it
so
there's
literally
no
a
there's
effectively
no
new
api.
C
B
F
F
B
The
yeah,
because
we
can't
change
the
connect
async
that
doesn't
have
a
cancellation
token.
We
can't
add
the
default
parameter,
because
that
would
change
task
value,
task,
parity,
so
yeah
also
all
signatures,
as
is,
and
then
be
never.
F
And
potentially
obsolete,
I
mean
I
don't
know
that
there's
the
compiler
should
never
end
up
binding
to
the
extension
method,
so
you'd
only
get
an
obsoletion
warning.
If
you're
recalling
soccer
task
extensions
directly,
I
think.
B
Yeah
I
mean
the
eb,
never
just
prevents
it
from
showing
up
as
the
same
method
twice
in
intellisense.
I
don't
know
that
the
obsolete
would
be
necessary.
I
mean
we
could
do
it.
It
would
tell
if
somebody
was
calling
it
static
syntax.
It
would
say,
stop
doing
that,
but.
I
I
B
That's
just
in
that's
the
okay,
so
shared
runtime
okay.
So
no
one
should
have
a
torn
state
between
seeing
an
old
version
of
the
of
a
package
and
the
new
version
of
the
socket
class.
C
B
B
Messed
up
I
mean
I
guess,
system
that
sockets
and
net
core
one
was
a
package,
because
everything
was
a
package
right,
but
presumably
it's
in
the
same.
B
C
D
D
B
E
Yeah,
sorry,
I
wasn't
prepared
for
this
issue.
What's
the
title
again,.
E
Yeah,
maybe
we
should
put
this
another
meeting
where
perhaps
david
is
here.
E
E
B
B
I
also
pronounced
five
wrong
because
oh.
B
F
B
But
you
know
and
and
dot
I
pronounce.
B
If
you're
for
random
things
cause,
why
not?
If
you're
changing
frequencies
and
you're
an
american
plane
talking
to
american
air
traffic
control,
they'll
tell
you
to
like
go
to
you
know
121.75,
I
think
that's
a
valid
number,
and
but
if
it's
an
international
flight
talking
to
american
air
traffic
control
or
an
american
plane
talking
to
any
other
air
traffic
control
division,
it
would
be
one
two
one
decimal
seven
five,
so
we
use
point
or
dot
and
they
use
they're
international.
It's
decimal,
because
you
know
some
people
use
commas.
B
Okay
or
three
three
add
a
span
overload
for
socket,
receive
message
from.
C
Yeah,
this
is
just
one
that
we
missed
in
this
api
review.
You
can
see
the
previously
approved
one
up
there.
B
B
Looks
fine
to
me:
is
there
any
virtualness
that
needs
to
be
considered
here,
or
is
this
correctly
non-virtual?
F
C
C
No,
I
think
we
have
approved
apis
for
that.
Let
me
double
check.
B
B
C
B
C
You
can
see
if
you're
interested
it's
three
three
four
one,
eight.
C
Scroll
down
to
the
yeah
right
here,
static,
socket
task,
extensions,
has
memory
and
cancellation
token
overloads
for
send
to
async,
receive
from
async
and
receive
message
from
async.
D
F
B
D
F
F
Are
you
suggesting
that
we
skip
it
for
now
steve
or
that
it
actually
get
unmarked?
I'm
I'm
suggesting
yeah.
I
think
it
should
be
unmarked
and
like
count
and
alexi
should
come
up
with
the
concrete
thing
they
believe
needs
to
be
done
right.
Now,
it's
like
six
different
alternatives
to
be
discussed.
I
don't
think
there's
and
I'm
not
sure
the
the
primary
like
the
primary
one
that
was
proposed
has
issues.
So
I.
D
D
F
F
So
I
could
speak
to
it
or
eric.
Could
it's
what
it
sounds
like?
It's
take
a
single
element
and
create
an
I
enumerable.
I
have
raised
concerns
on
the
thread
about
this,
so
I
will
just
air
them
here
as
well,
which
is
we
already
have
this?
It's
new
open,
brace,
closed,
brace,
open,
paren
item
or
open.
You
know
a
new
new
array
item.
Basically
it
already
exists.
F
I
don't
know
why
we
need
a
new
api
for
it,
but
obviously
people
disagree
with
me.
We
have
a
second
way
of
doing
it
as
well,
which
is
enumerable.repeat
item
comma
one.
So
I
mean
I
don't
know
why
we
need
something
new,
but
obviously
people
like
this
for
some.
F
H
F
F
B
Indeed,
so
eric
t
you're
the
one
who
marked
it
ready
for
review,
which
name
do
you
think
it
wants.
I
B
B
F
B
B
F
F
I
B
It
is,
they
think,
they're.
This
close.
On
extension,
everything
emo
tried
to
get
extension,
statics
prioritized
and
I
believe
matt
said
we're.
This
close
on
everything.
F
Sure,
but
with
without
like
without
a
concrete
example
in
the
issue
of
like
what
scenario
does
this
unblock
like
what?
What
code
does
it
make
look
cleaner
like
I've,
we're
just
kind
of
spitballing
here,
because
I,
I
think
we're
assuming
that
people
are
going
to
use
it
as
the
root
in
order
to
to
write
link
ex
sorry
that
people
are
going
to
use
it
as
the
root
and
then
start
chaining
other
link,
extension
methods
off
of
it,
which
might
be
one
scenario,
but
I
think
we're
all
in
agreement.
F
It's
not
really
an
interesting
scenario,
because
again
you
can
do
it
today
by
doing
up
an
array.
Do
people
expect
to
use
this
and
then
pass
it
into
a
non-linked
consumer?
I
would
be
interested
to
see
code
examples
if
people
wanted
to
do
that,
because
maybe
we're
just
not
seeing
the
scenario
correctly.
B
B
B
E
So,
as
far
as
the
naming
goes,
you
guys
are
talking
about
that.
What
was
the
objection
to
yield.
B
F
Are
there
languages
that
don't
allow
you
to
initialize
an
array
in
line.
B
Yeah,
okay,
so
the
one
looking
at
things
that
are
on
innumerable
right
now,
enumerable.accept
is
maybe
a
place
that
I
would
think
of
it.
You
have
the
one
thing
and
I
want
all
the
things
that
aren't
this.
You
need
to
turn
that
into
an
enumerable,
but,
yes,
you
can.
You
could
call
new
you're,
not
really
saving
anything
by
using
anything
else.
B
Something
like
steve
suggestion
in
the
middle
of
items,
which
takes
one
comma
in
comma
params
seems
reasonable
to
me
if
we
think
that
there's
a
scenario
for
it,
but
I
also
don't
see
that
there's
a
scenario
for
it,
so
I
kind
of
want
to
say,
needs
work
of
show
some
examples
of
where
you
want
to
use
it.
F
B
F
F
Community
chat
has
been
kind
of
quiet
today
from
what
I'm
looking
at.
I
think
everyone's
looking
at
the
conference,
the
launch,
the
other
conference,
yeah
or
they're,
all
just
playing
with
their
xboxes
or
they're
all
ordering
new
apple
hardware.
I
don't
know.
B
Anybody
have
anything
to
add
to
why
I'm
about
to
hit
close
nope.
F
Do
we
need
to
mark
it
as
like
api
rejected
or
something
for
emails
tool?
I
believe
closed.
B
B
B
B
F
B
F
B
F
Because
if
if
we
had
something
like
that,
then
we
don't
need
us,
for
instance,.
F
F
F
Well,
what's
what's
wrong
with
telling
what's
wrong
with
just
using
default
if
empty,
which
is
an
existing
api,
so
you
would
have
your
link
expression,
dot
default
if
empty
t
source
dot
single,
because
if
you
do
default,
if
empty,
like
dot
single
after
it
is
always
going
to
succeed,.
B
C
F
Empty,
no,
you
would
do
first.
F
E
B
Yeah
I
mean
it
seems
reasonable
to
me,
except
for
I
mean
that
yeah
the
two
questions
are.
Is
it?
B
Is
there
a
concern
with
queryable
because
of
link
to
sql,
and
I
don't
know
how
to
answer
that
one
and
do
we
think?
Are
we
adding
enough
value
with
just
t
source
and
not
need
to
also
do
funk
of
t
source.
F
I
B
Yeah
I
mean
singular
default,
does
trip
people
up
because
what
they
want
it
to
be
is
if
it's
single
give
it
to
me.
Otherwise
give
me
the
default
and
what
it
means
is.
If
it's
empty,
give
me
the
default.
If
it's
single
give
me
the
single
and
if
it's
more
than
single
then
throw-
and
I
think
that
always
confuses
people.
F
B
B
B
B
Because
all
that
this
so
eric,
unless
I'm
missing
something
here,
all
that
this
would
do
is
take
the
existing
single
or
default
first
or
default
laster
default,
and
they
would
just
call
this
with
default.
And
then
everything
behaves
the
same
so
yep
where
right
now
it
is
returning
default.
This
is
just
saying
you
wanted
a
default
other
than
the
zero
initialized
value,
correct,
which
matches
nullable
and
a
few
other
things
get
value
or
default.