►
From YouTube: .NET Design Review: GitHub Quick Reviews
Description
00:-33:-56 - Approved: Add Encode(ReadOnlySpan(char)) method to TextEncoder for performance https://github.com/dotnet/corefx/issues/39523
00:10:49 - Approved: Deprecate PipeWriter.OnReaderCompleted https://github.com/dotnet/corefx/issues/38362
00:32:15 - Approved: (System.Numerics) Cross Product for Vector2 and Vector4 https://github.com/dotnet/corefx/issues/35434#issuecomment-511933825
01:28:39 - Rejected: Add StringBuilder(Char) https://github.com/dotnet/corefx/issues/17745#issuecomment-511942559
A
A
B
Okay,
yeah
yeah
Levi
is
probably
actually
the
best
contact
for
the
implementation
and
overall
shape
of
this
API.
But
basically,
when
we're
implementing
custom,
encoders,
there's
like
two
code
paths,
one
one
for
utf-8
and
one
for
utf-16
and
I
did
the
utf-8
one
on
last
week
and
then
I
got
to
the
utf-16
side
and
I
call
that
the
API
that
I
was
using
when
I
was
writing.
B
The
code
to
support
utf-8
did
not
exist
for
utf-16
for
encoding
and
there's
a
there's,
an
a'
code
for
utf-16,
but
it
takes
a
string
and
returns
a
string
and
we
can
call
that
efficiently
because
we
just
have
a
span
of
car
and
we
don't
want
to
do
any
copies
of
base
or
you
know
any
kind
of
Alex.
So
when
I
was
talking
to
Levi
yesterday,
he
just
suggested
that
we
pretty
an
issue
for
this
and
I,
which
I
did
and
I
copied.
The
syntax
from
code
utf-8
and
instead
of
byte
is
car.
B
C
I
think
I
mean
Steve
actually
had
a
really
good
overview
of
it.
So
there-there
are
today
encode
methods
which
take
as
input
string
refers.
A
string
takes
as
input
a
char
array,
writes
it
to
a
times
later
and
so
on,
but
there
are
no
methods
that
take
a
real
loose
man
of
charm
and,
as
Steve
alluded
to
that's
difficult
for
the
JSON
staff
to
consume,
because
the
Jason
stack
is
working
with
read-only
span
of
char
everywhere.
So
this
is
adding
read-only
span
of
char
Overland's
to
the
encode
method.
The
signatures
it's
using
spans.
A
C
A
D
A
C
A
G
G
C
A
A
A
A
C
C
If
we
had
api's
that
just
operated
with
string
as
the
existing
overloads
do
like
you,
don't
have
to
worry
about
any
of
that.
It's
just
oak
string
and
string
out
done
excellent,
but
you
are
taking
the
hit
of
the
allocations
are,
which
is
intentional
basics
before
I'm,
going
to
get
faded,
name's,
poorly,
but
course
destination.
Then.
C
C
A
B
C
D
A
A
I
A
C
C
C
A
C
C
C
Like
slash
double
quote,
we
can
provide
a
factory
method
that
creates
an
encoder
that
produces
that
relaxed
output.
Now,
to
clarify,
based
on
what
I
said
earlier
like
we,
we
thought
that
that
we
were
seeing
feedback
from
developers
regarding
this
in
the
3o
timeframe,
but
it
turns
out
we
weren't.
We
were
accidentally
completing
it
with
another
issue,
so
it
this
might
not
be
necessary
for
three.
Oh,
so.
J
Let
me,
let
me
add:
some
corn
perfect.
Let
me
add
some
context
to
help
motivate,
because
this
because
I
talked
to
Nick
a
bit
more
and
turns
out
in
for
setup,
and
the
exit
is
an
excellent
issue
there
over
escaping
the
plus
and
the
forward.
Slash
causes
dotnet
test
to
fail
and
I
had
thought
that
the
plus
was
coming
from
vset
for
encoded
text
only
which
I
would
thought
we
could
fix
separately,
but
turns
out
restrict
the
shop.
After
that
you
end
up.
Writing
in
the
Access
file
is
actually
a
regular
string.
J
C
B
C
C
A
J
C
C
Workarounds,
for
instance,
oh
you
could
do
a
string
replace
like
you
could
replace
/
you
could.
You
could
use
a
fancy
regex
pattern
because
it
would.
It
would
have
to
be
that
and
then
replace
/
you
blah
blah
blah
with
plus
assuming
there's
an
even
number
of
slashes
in
front
of
it,
but
yeah
it
gets
hairy.
A
I
mean
if,
if
we
think
there
will
be
multiple
behaviors
and
we
should
probably
make
it
flag
so
that
if
we
X,
if
because
the
thing
they
will
probably
be
independent
options,
no,
oh
yeah
that
shouldn't
gonna
flowered,
sorry,
but
then
even
then,
like
it
seems
a
bit
odd.
That
default,
which
is
zero,
would
be
the
values
for
and
whatever
it
is
here.
A
C
This
almost
like
each
one
of
these
flags
represents
a
different
protection,
that's
being
disabled
by
the
default
encoder
by
having
the
default
value
of
0.
That
means
every
protection
is
enabled
by
default
and
then
you're
off
to
now
that
individual
protections
on
a
flag
pipeline
basis,
yeah.
H
C
Next
thing,
the
next
thing
to
add,
for
instance,
would
be:
do
you
want
us
to
disable
vestment
mapping,
we're
always
most
by
the
bowl
like
that?
So
if
you
pass
in
a
smart
quote,
for
instance,
did
we
escape
that,
even
if
smart
quotes
otherwise
a
lot
of
our
game
quarter
right?
But
if
I
say
just
that
and
don't
say,
relax
so
again,
pretend
it's
five.
Does
that
make
sense
independent
of
the
relaxed
one,
because
I'm
current
default
we're
already
already
doing
it?
C
So
that's
really
only
a
modifier
on
relaxed,
which
means
that
we're
not
flags
we're
modes
like
we're.
This
is
entirely.
You
have
to
name
everything
of
what
it
does
and
maybe
we'll
end
up
with
some
ugly
combinatoric
names
over
the
next
50
years,
but
you're
not
all
not
all
combinations
with
the
ballot,
which
is
not
a
good
candidate.
A
C
A
C
A
Mean
one
other
option
is:
this
is
just
making
over
lots
of
creative
wait.
So
we
add
one
overload
right
now
that
has
I,
don't
know,
relax
escaping
equals
false
as
a
default
and
then,
if
you
ever
have
to
add
one
more
be
at
another
overload
before
the
other
one,
and
we
move
the
default
on
this
one
and
then
that's
the
way
you
configure.
C
Security
thing:
if
it's
boolean
overloads,
we
can't
ever
find
them,
so
we
can't
audit
them.
We
can't
possess
them.
We
can't
write
a
tool,
that's
nice.
This
needs
to
be
black.
Like
you
know,
they
pay
double
attention
for
this.
If
it's
a
name,
if
it's
a
native
alternative
to
create
and
like
create
relaxed
escaping
of
text
encoder
settings
or
if
it's
the
accelerated
instance,
then
then
those
you
can
yeah.
You
can
write
tools
to
identify
that
you're
using
one
of
these
and
it
needs
the
extra
space.
So.
B
C
J
A
J
C
D
C
We
that
would
also
work
I'm,
not
necessarily
married
to
touch
design.
Point
I
mean
another
thing
that
was
looking
at
earlier
is:
why
is
it's
not
modifying
text
encoder
settings,
because
it's
not
text
encoder
settings
is
used
by
HTML,
URL
travel
script
and
a
few
other
homes.
This
is
not
honored
by
any
of
them.
B
If
you
want
to
complete
control
over
this,
which
I
don't
think
we
do,
you
could
cuz.
You
already
have
a
way
to
specify
the
allow
list
right.
We
kind
of
you
kinda,
but
then
we
we
overlaid
them
for
bidding
characters.
On
top
of
that,
yes,
which
include
things
like
the
plus
sign
and
there's
no
way
you
can
see
with
that
forbidden
list
is
or
modify
it.
B
C
A
C
J
H
A
That's
the
argument
of
being
scalable
right.
If
it's
not
independent
options,
then
it's
not
scalable,
because
now
that
means,
if
you
add
another
option,
we
basically
know
every
enum
value
has
to
somehow
represent
a
combination
of
other
in
your
members
which
doesn't
fly
when
you
have
more
than
two
or
three
right.
A
But
that's
basically
equivalent
of
saying
we
don't
have
any
number,
just
a
different
method
names,
which
means
you
can
only
ever
modify.
One
thing
you
cannot
say:
I
want
this
option
and
this
other
option,
but
that's
basically
the
thing
that
that
enum
is
by
your
group
of
like
an
say
well,
I
want
the
will,
extend
coding
and
I
want
this
other
thing
that
I
want
to
equate
yeah.
C
C
C
If
we
have,
if
we
have
a
static
property,
it
would
probably
be
instantiated
with
the
entire
BMP
range
so
including
Chinese,
Japanese
Cyrillic.
It's
all
right
so
I
mean,
but
my
question
is:
would
you
does
it
ever
make
sense
to
say
that
you
want
relaxed
and
a
custom
range?
If
no,
then
it
should
just
be
an
accelerated
instance.
I
I,
don't
know
why
anyone
would
do
that.
C
I
mean
you,
you
could
I
just
don't
know
why
anyone
wouldn't
practice
so
I
think
I'm
in
favor
of
doing
an
accelerated
instance,
and
if
we
get
more
demands
later,
that
require
more
complicated
input,
model
moves
and
the
chemical
thing,
but
that
we
should
drop
this
truck.
We
should
drop
that
over
to
create.
We
should
just
have
one
instance
that
behaves
differently
than
the
rest
and
and
that,
like
that's,
an
internal
implementation
detail,
have
a
good
thing.
Yeah.
A
F
C
C
B
J
C
C
Gotcha
we
want
something
in
the
middle
for
that
later,
then
somebody
can
propose
it
and
we
can
figure
out
what
to
model
it
as.
But
but
this
is
you
know
effectively.
This
is,
is
this
actually
minimal
or
is
it
minimal
plus
like
it's?
Not
it's
not
minimal
to
everything.
It's
not
minimal.
It's
there.
It
is
still
somewhat
opinionated
because
it
will
still
escape
things
that
the
Chasen
spec
says.
Don't
have
to
be
escaped,
for
instance,
see
one
control,
characters,
non-printable,
whitespace
and
so
on.
Emoji.
J
C
C
You're
escaping
emoji
yeah,
but
you
also
said
all
Unicode
characters,
yes,
I
other
than
c1
controls
and
and
a
few
and
a
few
other
things
like
I
said
this.
This
is
opinionated,
so
the
the
reason
for
that
is
the
settings
class
passed
into.
It
can't
represent
anything
over
64
K
because
that's
as
high
as
it
that
map
goes
so
anything
beyond
that,
including
emoji.
It
just
says
screw
it
I'm
going
to
encode
it.
They
shouldn't
be
common
enough
where
anyone
should
really
care
about
it.
C
A
C
C
A
C
B
A
Somewhat
busted,
because
it's
like
saying
well,
somebody
cannot
add
two
numbers.
So
we
give
you
a
different
overload
of
subtract
that
has
been
overload
that
says
Babu's
behavior
for
compared
yeah
and
that
kind
of
seems
like
it's
the
same
way
like
I
mean
we've,
we
have
a
correct
jsonparser
in
reader,
yeah,
sorry,
parser
and
generate
or
matter
I
guess,
and
somebody
else
can't
meet
it.
A
C
Yes,
it's
not
it's
not
arbitrary,
bugs
in
the
json
parser
that
it's
trying
to
defend
against
the
the
default.
All
of
the
default.
Encoder
is
not
just
a
javascript
and
HTML
URL.
Everything
else
protect
against
known,
viable
attacks,
for
which
proof
of
concepts
or
proofs
of
concept
exists
right,
like
people
the
aggressively
yeah.
So
the
reason
that
the
JavaScript
encoder
encodes
plus
by
default
is
because
there
is
an
actual
honest-to-god
legitimate
attack
that
you
can
pull
against
websites.
You
know
it's.
C
A
It
yeah
well
I'm,
saying
is
that
if
you
write
a
JSON
parser
yeah
and
you
can't
handle
in
escaping
and
it's
a
fundamental
bug
in
your
parser
right,
yes,
so
that
means
if
we
we
made
a
plus
that
is
backslash
you
whatever
right
and
then
somebody
else
can't
read
that
it
seems
a
bit
odd
that
we
could
over
that
says.
Well,
you
know,
that's
just
not
overly
aggressive.
You
know
things
because
somebody
might
not
be
able
to
decode
that.
C
That's
not
what
I'm
concerned
about
what
I'm
concerned
about
is
people
will
just
say
this
gives
me
prettier
output.
Therefore,
it's
and
what
I'm
going
to
use
oh
I
seriously,
but
still
people
will
be
focused,
very
myopic,
Lee
on
it's
pretty,
rather
than
hey.
We
actually
are
trying
to
protect
you
against
things
that
you
probably
haven't
taken
into
account
right,
so
I
mean
frankly,
if
the
only
consumer
of
this
is
coming
to
produce
this
even
further.
You
know
if
the
only
consumer
that
we
need
for
this
for
300
is
CLI.
C
B
A
C
C
J
C
But
my
point
is
like
there
are
questions
that
we're
asking.
If
we're
saying
for
three.
Oh
then
there's
either
no
or
what's
on
the
screen
right
now,
probably,
but
we
had
other
questions
of
future
and
combat
or
X,
and
what
name
should
we
give
to
this?
And
there
are
a
lot
of
questions
and
I
think
the
answer
is,
we
should
say
hard
firm.
No,
this
is
not
a
three
Oh,
a
P
I
and
a
P
I
need
work
and
saying
kick
it
back
to
Levi
from
coming
back
in.
A
J
What
I'm
saying
is
currently
dotnet
Tess
is
broken
and
we
need
a
solution
for
that
and
also
a
spin
and
has
been
asking
for
this
type
of
feature
for
months
now.
So
I
think
we
should
ship.
It
is
required
for
us
to
say
look
it's
almost
time
to
close
on
three
or
doesn't
Ness
some.
My
priorities
will
come
back
and
say
we
need
it.
We
need
some
solution,
that's
the
same.
K
C
So,
let's
consider,
let's
consider
CLI
right
now,
so
we
can,
as
Steve
alluded
to,
we
can
actually
get
a
workaround
for
CLR
like
they
can.
They
can
put
the
hack
into
their
code.
It's
fine.
We
would
want
a
huge
comment
on
the
actual
method
itself.
Saying
like
this
is
not
recommended
practice.
So
what
would
they
do
when
I
could
move
all
the
API
M?
What
can
me
they
would
override
JavaScript
encoder
and
they
would
I'm
certain
they
would
subclass
it.
C
H
C
F
J
C
Okay,
sorry,
except
asking
Jessica
and
quartered
right
yeah
and
then
you
were.
There
is
an
API
on
it,
which
is
will
encode
it's
an
abstract,
nothing.
You
would
override
it
and
you
were
passed
in
plus
and
then
you
just
return
false
and
if
anything
other
than
plus
was
returned,
then
you
call
into
the
bitmap
directly
I
see.
B
C
C
The
will
and
code
method,
because
it's
abstract
when
you
call
base
what
is
there
to
call
if
you
derive
JavaScript
encoder
JavaScript
encoder
overrode
will
encode
it
will
call
the
women
code
on
JavaScript
encoder,
as
long
as
the
rest
says,
is
a
override.
Then
it
is
actually
override
my
own
code.
It
has
to
it's
abstract.
No,
it
doesn't
wouldn't
be.
All
of
the
factories
create
internal
types.
I
was
looking.
C
The
thing
is
become
because
of
methods
abstract.
You
can't
call,
based
on
you,
have
to
delegate
to
someone
else,
which
now
means
that
hopefully,
you've
overridden
every
single
method
and
you're
delegating
to
someone
else.
If
we
introduce
a
new
virtual
method
in
the
future,
such
as
operation
status
in
code
of
read-only
span
of
char,
then
you
now
have
potential
security
bugs
inside
of
your
encoder,
because
you've
overwritten
some
methods
and
not
others,
which
means
you're
delegating
to
some
methods,
among
others.
C
C
I
can
go
on
for
hours
about
how
the
type
hierarchy
is
incorrect
and
in
fact,
I
did
do
that
for
hours
back
in
November
and
December,
where
all
of
these
API
is
kept
getting
punted
back
as
like
needs
more
info,
I
know
so
like
yeah.
So
my
if
we,
if
we
didn't,
have
a
timeline
right
now,
I
would
say
the
answer
for
this
has
needs
more
work,
that
Levi
brought
in
the
name
that
he's
not
happy
with,
because
it
doesn't
convey
the
security
concerns
that
he
has
with
it.
C
None
of
us
can
come
up
with
a
better
name
for
it.
We
don't
know
if
it
should
be
in
overload
to
create.
We
don't
know
if
it
should
be
just
this
accelerator,
a
bunch
of
stuff,
we
don't
know
which
means
the
status
on
this
is
API
needs
work.
Now,
if
you
review
this
from
the
context
of,
we
have
a
300
release,
that's
coming
up
30
days
ago,
then,
if
there's
something
that
we
need
to
do
right
now
and
I
think
that
the
answer
for
that
is
also
no
true
of
I.
Think
I.
C
J
J
From
jaska
encoder,
and
also
if
you
drag
or
asking
at
order,
your
for
saying
depends:
you
want
to
use
unsafe
code
because
they,
the
api,
Jascha
encoder
when
you
drive
from
it,
has
pointed
the
methods
I
will
also
put
I,
also
push
back
on
the
concern
of
the
naming,
because
I
don't
think
this
is
a
very
common
request
from
people.
I,
don't
think
that
security
concerned,
the
gray
name,
shooting
should
be
so
scary
that
people
run
away
from
it.
I
think
the
documentation
and
guidelines
can
solve
that
problem.
A
Oh
that,
for
example
like
what
Deva
brought
up
I
think
is
very
valid
right.
Like
you,
you
write
a
web
api
right.
You
test
the
thing
in
postman
or
whatever
your
favorite
rest
invocation
tool.
Is
you
look
at
your
pelo
results?
You
look
at
the
Java
Script
like
oh,
this
looks
ugly.
Then
you
go
Google
why's
my
JavaScript
result
ugly.
Then
you
find
some
Stack
Overflow
post
or
somebody
says
you
through,
like
Jason
escaping
and
then
it
looks.
Prettier
like
great
I
will
do
that
in
all
my
applications.
A
Now
and
suddenly
you
people,
don't
actually
read
the
remarks
section
and
the
docs
that
says
by
the
way,
if
you
do
that,
you
might
be
more
insecure
than
you
aware
and
that
that
is
something
that
you
have
to
convey
in
a
three
line
code
symbol
that
somebody
can
put
on
Stack
Overflow
like
that
is
just
a
reality.
If
we
care
about
this
as
an
attack
vector
which
we
call
they
do
because
we
chipped
a
bunch
of
types
that
protect
for
this
kind
of
thing
right.
D
B
C
We
can
we
can,
if
we
care
about,
if
all
we
care
about
is,
is
fulfilling
STL
requirements.
Another
first
party
code,
like
we
can
always
fix
that,
because
we
can
always
have
a
tool
that
runs
over
this
and
says:
hey
make
sure
you
wanted
this.
What
I
care
about
is
making
sure
that
you
co
system
its
helps
in
it
yeah.
A
But
that's
the
thing
right,
I
mean
I.
Think
if
you
talk
about
an
address
service
that
we
have
to
lock
down
sure
they
will
do
the
right
thing.
If
we
look,
if
we
talk
about
how
many
people
push
from
new
project
with
customizations
to
Azure
and
hosted
well,
the
none
of
them
will
run
STL
over
their
corporate.
A
A
I
mean
we
already
use
the
unsafe
convention
all
over
the
place
to
convey
like
this
is
it.
This
is
an
API,
but
you
want
to
read
the
dogs
and,
if
I
see
Stack
Overflow
posters,
somebody
says
oh
yeah
turn
unsafe
Jason
escaping
on.
At
least
it
should
give
you
pause.
If
that
doesn't
give
you
a
pause,
then
well,
there's
not
much
more.
We
can
do
for
you,
but
I
would
also
be
with
Jeremy,
like
in
practice.
C
B
G
B
C
C
A
Heard
so
to
be
fairly
fair,
like
this
I
mean
I.
Remember
the
conversations
I
just
never
had
enough
context
to
actually
give
you
actionable
feedback.
Yeah
I
think
like.
If
you
want
to
fix
this
time,
I
mean
one
of
the
things.
This
is
basically
I.
Think
one
of
the
things
we
convinced
ourselves
in
October
or
whatever
December
timeframe.
It
was
that
most
people
never
ever
create
these
guys.
It's
by
serious
infrastructure
code,
oh-
and
that
has
to
do
that.
You.
A
Is
why
in
the
party
never
bubbled
up
right?
This
is
an
example
where
well
yeah.
If
everything
works,
fine
and
that's
true,
but
there
are
bugs
or
whatever
then
third
parties
have
to
extend
those
types
and
that's
where
the
thing
falls
apart,
because
the
senseability
wasn't
really
a
the
thing
we
designed
the
type
hierarchy
for
it
seems,
and
if
we
want
to
fix
that
then
yeah
we
probably
should
sit
down
and
circle.
A
Ii
hear
that
you're
the
extension
as
you
would
like
people
to
do
like,
for
example,
tweak
the
behavior
of
particular
characters
to
be
escaped.
And
then
the
question
is:
how
many
gestures
do
you
have
to
do
to
pull
that
off
and
today
the
answer
would
be
well.
You
extend
JavaScript
encoder
you're
reputable
script.
Encoder,
you
delegate,
you
override
all
the
virtuals
and
then.
J
A
A
You
go
through
razor,
for
example,
let's
say
any
sort
of
templating
engine.
That
is
it
that
spits
out
HTML
right.
People
do
want
to
string
concatenate
their
secret
that
one
string
concatenated
the
HTML.
They
want
to
image
JavaScript
right
in
there
in
the
HTML
that
doesn't
make
any
of
that
secure
and
like
if
you
go
to
on
their
path.
You
have
fundamental
holes
in
your
in
your
application
that
just
we
can't
help
you
to
fix
so.
A
J
J
C
A
Ok,
but
let's
let's
go
back
to
one
thing,
is
the
one
thing
I
do
buy
from
Lawson
was
like:
let's
not
block
the
reasonable,
because
we
don't
have
the
perfect
so,
for
example,
in
order
to
rename
this
to
something
ugly,
we'll
be
ok
with
that
I
mean
the
scenarios
unblock,
the
API
doesn't
look
attractive.
Is
that
good
enough
like?
Could
we
call
it
unsafe
Jason?
Let's
take
I
mean
that
seems
to
me
like
it
satisfy
the
security
concerns,
because
you
clearly
say
yeah.
A
This
is
unsafe,
it's
easy
to
Aude
it
and
it
will
unlock
the
scenario.
Now.
It's
not
a
generic
fix,
but
the
generic
fix
I
think
so.
The
other
thing
is
based
on
the
other
on
the
December
and
October
discussions.
I,
don't
think
we
even
know
whether
we
can't
fix
the
hierarchy
right.
So
there's
a
lot
of
complexity
to
do
that
in
a
compatible
way,
and
the
answer
might
be,
we
can't
easily
fix
the
hierarchy,
but
also
modulo
those
records.
C
H
A
H
C
A
A
A
J
A
A
C
So
in
an
interesting
point
to
that-
and
this
is
something
that
I
myself
have
grappled
with
to
like
the
word
unsafe-
doesn't
necessarily
mean
you
are
shooting
yourself
in
the
foot.
It
just
means
there's
a
very
high
potential
to
make
sure
that
you're
handling
the
gun
correctly.
It
is
a
book
gun,
yeah.
H
C
F1
read
what
it
has
to
say
about
itself:
yeah,
oh
yeah!
No
just
call
this
and
think
it's
fine
like
to
know
what
you're
doing
before
you
do
it
right,
like
the
the
unsafe
class,
for
instance,
is
actually
a
really
good
example
of
this,
because
the
the
api's
on
there
like
there
there
are
legitimate
reasons
to
call
those
api's
and
we
don't
want
to
discourage
people
from
calling
them
if
they
find
themselves
having
those
scenarios.
But
we
want
to
discourage
I,
don't
know
we
want
to
discourage
arbitrary
use
of
it
like
we.
C
C
Essentially,
the
unsafe
keywords
in
C
sharp
means
I
promise.
I
know
what
I'm
doing
like
it's.
That's
all
it
means
is
the
compiler
lets
you
write
coach
because
you
said
you
mean
what
you
were
doing
yeah
wisely.
That's
the
word
I'm
looking
for.
We
don't
want
people
to
use
it
lightly.
That's
their
look
yeah!
So
again
with
asp.net
it
would
you
know
the
comments
on
this,
hopefully
would
say
something
like
if
you
are
in
a
content
described
payloads
such
as
charset
utf-8,
and
this
is
fine
and
they'd,
be
like
oh
we've.
B
C
C
B
C
F
C
Because
the
created
ones
all
taking
arguments
yeah
because
the
default
property
actually
just
falls
into
the
create
method
and
then
caches
in
resolving
this-
would
do
something
very
simple
by
exposing
it
via
static,
complicated
civic
object
returned
from
this
one
wincing,
the
otherwise
don't
say
thanks,
Vince
Oh,
actually
I
believe
they're
talking
about
it.
If
I
take
that
the
toka
starts
a
you
is
the
type
itself
once
it's
created
is
immutable
and
I
think
we
actually
have
documented
on
the
text
encoder
base
class.
All
derived
classes
should
be
thread
safe.
E
H
E
C
C
A
C
D
A
C
A
I
C
B
C
A
F
I
C
Stick
then
we
believe
us
one,
so
this
is
I.
Have
an
array
and
I
want
to
get
a
reference
to
where
the
first
element
of
the
array
or
to
where
the
element
at
index
zero
of
the
array
would
be.
Basically
it's
it's
very
similar
to
saying
ref
my
array
sub-zero,
but
it
won't
throw
if
the
array
happens
to
be
zero,
like.
C
C
Memory,
because
it
is
where
this
is,
where
the
first
element
in
the
array
would
have
been
had
the
array
that
nonzero
length
and
the
reason
that
this
is
interesting
is
because,
if
you're,
if
you're,
trying
to
make
very
high-performance
methods,
you're
going
to
be
doing
things
like
reference
address
comparison.
So
whenever
you
reach
the
end
of
the
array,
you
need
an
address
to
compare
your
current
pointer
to,
and
this
is
that
address.
If
it
happens
to
be
a
zero
like
right.
C
C
A
C
Safer
memory,
Marshall
yeah,
any
ones
which
have
universal
appeal
yeah.
So
there
was
some
back
and
forth
on
this
on
where
the
actual
method
belongs,
unsaved
memory
marshal
or
marshal,
and
if
I
recall
correctly,
it
may
have
been
young
I.
Think
who
suggested
memory
emotionalism
I,
don't
have
it
up
on
my
screen
right
now,
so
I
can
but.
C
A
F
A
A
A
C
The
collars,
well
it's
in
codes
as
well
it.
The
only
thing,
is
a
memory
marshal
dog.
Yet
reference
of
span
and
read
only
span
is
guaranteed.
Never
to
fail.
The
method
will
never
throw
an
exception
under
any
circumstance.
Memory
Marshall
get
reference
of
T
array
could
know
whatever
it
doesn't
seem
like
reverse
anymore.
Are
you
no
never
know
where
y'all
actually
talking
about
that.
C
Because
absolutely
it
would
be,
it
would
be
a
breaking
change.
That's
what
that's
what
it
would
be.
It
would
be
a
source
breaking
change
so
right
now
today,
because
t
array
is
implicitly
convertible
to
span
up
to
you.
If
you
call
get
reference
of
t
array
right
now,
the
methods
guaranteed
never
to
fail,
even
if
you
pass
involved
with
this
overload,
that
would
now
be
the
better
match
and
you
would
get
a
you
would
get
a
little
rough
coming
out
of
it,
but
he's
basically
saying
don't
do
that
right.
A
C
B
C
That
will
not
throw
because
new
span
of
null
array
is
defined,
that,
yes,
all
spam
correct
means
it
would
give
you
the
ref
to
zero
besides
it's
doing
currently
so,
obviously.
Obviously,
the
implementation
does
not
look
like
this.
If
they,
no
reference,
exception
is
coming
from
somewhere.
So
where
is
the
null
reference
exception?
Coming?
The
no
reference
exception
would
come
from
the
the
dereference
of
the
length
property
where
it
it's.
A
C
It
would
return
back
a
ref
of
null
and
which,
which
is
totally
valid.
If
you
read
it
or
write
to
it,
which
is
fine,
which
is
totally
fine,
because
you
you're
you're,
still
able
you're
the
CLR
guarantees
absolutely
guarantees
that
you
can
talk
about
the
reference
to
the
first
element
in
the
array,
even
if
the
arrays
of
length
zero,
you
just
can't
ever
dereference
it,
but
you
can
talk
about
the
reference
in
this
particular
case.
C
D
Yeah
right
so
I
think
what
mo
was
saying
is
that
we
could
just
tell
people
to
use
memory,
Marshall
get
reference
and
that
will
create
a
ref,
a
no
ref.
If
you
pass
in
a
nolle
array,
if
you
pass
in
an
empty
array,
it
will
give
you
the
address
of
the
where
the
first
element
would
be.
So
exactly
what
you
want
to
forget
all
right
data,
and
then
you
don't
need
the
if
array
equals
null
check,
because
you'll
just
allow
the
implicit
null
to
happen.
Yeah,
yes,
so.
C
A
C
D
A
H
A
C
C
C
C
D
A
C
F
C
D
D
C
C
A
A
D
What's
yours
again,
okay,
so
basically
in
normal
mathematics,
a
cross-product
only
applies
to
a
three
dimensional
vector,
but
it's
very
common
to
have
overloads
that
also
do
a
cross
product
on
two
and
four
dimensional
vectors,
because
it's
basically
just
a
simplification
of
the
algorithm.
And
so
the
request
is
that
we
expose
those
on
system,
numeric,
spectre-2
and
four
okay.
A
D
It's
the
three-dimensional,
so
the
cross
product
applies
to
three
seven
and
other
dimensions
and
windows
for
those
dimensions.
The
algorithm
is
all
well
defined,
and
so
the
simplification
is
basically
saying
because
the
unused
elements
are
zero.
You
can
drop
those
because
the
subtraction
of
the
subtraction
of
zero
returns
the
original
result.
So
this
is
basically
just
saying,
given
the
three
dimensional
cross
product
drop,
the
third
dimension,
because
Z
times
anything
will
be
zero,
and
so
the
subtraction
will
be
zero
speakers
by
the
hands
of
Jeremy's.
D
C
C
I
C
D
D
C
D
Remodeling
standard
behavior
we're
modeling
behavior,
that's
commonly
used
in
games
by
anyone
other
than
DirectX
well
I
mean
no.
One
else
really
exposes
a
math
library.
Unity
has
similar
functions,
I
believe
I
looked
like
there's,
OpenGL
have
a
similar
thing:
OpenGL
does
not
have
a
math
library,
okay,
not
not
a
standard
one.
At
least
it
was.
A
A
A
I
D
D
D
C
C
Kind
in
mathematics,
so
I
guess
the
mi
my
other
way
of
phrasing.
That
is
if,
if
there
are
multiple
interpretations
of
what
a
cross-product
could
mean
and
in
even
space
and
we're
choosing
one
that
we
should
be
conscious
about
choosing
one
instead
of
simply
deciding
on
a
whim,
and
if
there
are
two,
then
maybe
we
need
more
complicated
names,
I'm
like
right,
cross,
whatever
and
cross
whatever,
so
that
we
can
both
implementations
or
all
27
or
whatever.
D
D
One
yeah
adding
a
new
method
to
unsafe,
basically
c-sharp
has
definitely
assignment
rules.
You
can
bypass
those
in
a
lot
of
cases,
but
not
all
of
them.
This
is
saying
we
should
expose
a
new
method
called
skipping
it,
which
takes
an
out
T
and
literally,
does
nothing
as
its
implementation,
allowing
you
to
bypass
definite
sign
meant
for
any
value,
whether
it's
this
or
anything
else.
C
D
Believed
we
should
not
add
this
ever,
which
is
why
this
would
be
on
unsafe,
because
you
can
do
the
same
thing
by
pinning
explicitly
but
there's
overhead
from
pinning,
which
may
be
unacceptable
in
some
hyper
scenarios.
What
do
you
mean?
You
can
do
the
same
thing
if
you
take
the
address
of
a
variable
using
unsafe
t-shirt,
joints
all
definite
silent
rules,
but
painting
has
some
implicit
overhead
that
may
be
undesirable
in
some
scenarios,
and
so
this
basically
gives
you
an
out
for
that
saying.
D
Let
me
do
so.
The
homeland
is
API
being
used
commonly
if
you're
in
a
constructor,
for
example,
of
a
union
type
with
explicit
field
play
out
everything
else.
The
first
thing
you
would
do
is,
you
would
say
skipping
it
out
this,
and
then
you
can
freely
assign
only
the
union
field.
That
is
the
correct
type
for
the
current
instructor
and
you
would
not
initialize
everything
else,
and
so
all
memory
would
be
appropriately
initialized.
D
D
C
Yeah
I
mean
think
you
can
do
the
same
thing
already
by
invoking
into
a
thing
that
doesn't
actually
pay
attention
to
the
thing,
so
it
rises
already
yeah,
it's
possibly
the
most
minimal
overhead
that
Judas
would
avoid.
Do
we
have
code
pads
in
core
sealer
or
core
effects
right
now?
That
would
be
able
to
benefit
from
us.
C
Would
it
make
more
sense,
just
devil's
advocate
here
if
we
could
somehow
make
the
jet
recognize
that
we're
setting
burn
through
setting
very
specific
fields
of
a
union
struct
we're
basically
overwriting
every
single
bite
in
it
anyway?
So
it
shouldn't
bother
I,
guess
it's
not
the
kid!
It's
a
c-sharp
compiler!
That's
complained.
C
C
D
I've
got
measurements
that
can
show
it's
valuable
in
Interop
code,
I've
written,
that's
external
to
the
framework,
which
is
really
what
this
is
intended
for
is
like
not
the
framework
itself,
but
Interop
code
outside
the
framework.
I
I
would
buy
that
argument,
actually
right
now
I'm
trying
to
do
this
with
IO
rewriting,
which
my
is
up
pdbs
and
things
like
that
and
I'd
rather
have
a
built-in
mechanism
on
the
existing
unsafe
class.
We
have
for
things
like
this
to
make
that
easier,
so.
C
C
Like
what
the,
what
what
you
have
to
do
to
work
around
that
today
and
what
the
actual
throughput
games
are
yeah?
No,
but
we
could.
We
could
actually
still
do
this
because,
if,
if
in
order
to
make
c-sharp
copy,
if
you
write
my
struct
T
equals
default
and
then
T
dot
field,
1
equals
T
dog
field,
2
equals
blah
blah
blah.
If
we
could
somehow
get
the
jet
itself
to
realize
that
every
single
overlapping
field
was
actually
being
set
appropriately,
could
the
gypped
just
elide
the
equals
default
at
the
very
beginning,
I.
C
D
Right
well,
I
think
in
the
case
of
non
mediums,
drops
you're
only
signing
each
field
once
so.
It
doesn't
matter
it's
in
the
case,
where
you're
being
forced
to
assign
these
same
memory
multiple
times,
because
it's
overlapping
yeah
and
the
c-sharp
compiler
has
no
knowledge
of
like
hey.
These
fields
are
overlapping
but
I'm
only
wanting
to
access
these
right.
C
E
C
D
D
C
C
C
D
C
D
H
C
The
ASCII
letter,
as
the
capacity,
if
you
wanted
to
do
this,
there's
already
a
constructor
on
the
string
type
itself.
It
takes
a
char
and
a
repetition
count.
There's
not
necessarily.
Oh
there's,
also
an
overload
of
shrinko
we're
all
dependent
that
does
the
same
thing.
Append
char
int
repeat
count
having
a
constructor
that
just
initializes
that
would
would
provide
symmetry.
G
A
F
C
Stretching
a
little
bit
but
I
could
see
it
probably
reasonable.
Yeah
that
particular
overload
by
the
late
intent
is
nine
percent
usage
across
api's
I've
done
there
were
so
there's
an
intent
overload
on
stringbuilder
initial
capacity
max
capacity.
That
particular
constructor
has
nine
percent
usage
across
a
Piazza.
A
C
A
A
C
H
H
F
F
F
C
C
D
C
In
our
source,
common
folder,
right
mm-hmm
or
any
similar
situation
or
again,
the
stack
overflow
copy/paste,
as
mentioned
earlier
you're,
calling
a
different
available
honestly,
like
I,
understand
the
concern,
but
this
doesn't
seem.
There
are
plenty
of
places
where
you
implicitly
do
I
think
the
nape
yeah
it
doesn't
exist.
You
call
it
thinking
that
it
does
and
you
end
up
implicitly
casting
to
something
else
like
it
doesn't
I
get
that
it's
a
pain
but
I'm
not
sure
it's
worth
it.
It.
D
Seems
like
we
need
an
analyzer
in
either
scenario
either
to
either
we
don't
have
these
api's
and
we
need
one
for
both
core
and
framework
to
say:
hey,
you're,
passing
a
character
here.
We
don't
have
an
overload
that
accepts
it
or
we
add
the
API
and
the
analyzer
is
only
for
framework,
but
I
think
we
need
to
analyze
it
for
this
case,
when.
D
It's
a
it's
honestly,
a
case
I
think
that's
chicken-and-egg
problem
of
like
how
do
you
get
people
to
use
analyzers
when
they
don't
reference?
Nuget
packages
might
involve
dinner
like
there's
broadcasting
the
fact
that
they're
there
and
blog
post
saying
this
is
why
you
should
probably
have
it
and
trying
to
get
people
to
have
the
best
practice
of
including
analyzers
is
probably
the
only
fix,
but
this
would.
C
C
A
A
We
may
have
to
add
this
in
plenty
of
other
places
where
we
have
similar
patterns,
where
it's
just
becomes
this
never-ending
thing
right
and
if
you
said
like
yeah,
you
will
find
the
movie
like
it's
not
like
a
life
ending
event.
It's
like
you
run
the
code
once
doesn't
do
what
you
want
fix
your
code,
your.
A
C
A
I
mean
to
me
feel
like
I
mean
if
this
point
mean
it's,
it
looks
pretty
bad
on
the
surface
right,
but
how
many
times
has
anybody
ever
heard
of
this
issue?
I
mean
I've,
never
heard
of
it.
You've
probably
never
heard
of
it
like
so
that
kind
of
proves
to
me
like,
while
the
problem
looks
bad,
it
can't
be
that
bad
in
practice,
but
compared
to
let's
say,
bracelets
right
where
we
know
that
if
you
don't
have
braces
in
the
flock
you
can
cause
plenty
of
bugs,
but
yeah.
C
A
C
D
I
D
Copying
a
range
from
one
location
to
the
other
to
another
location
in
the
same
just
like
so
you
already
have
it.
We
already
have
copy
over
loads
that
take
two
arrays
where
you
can
give
the
same,
and
you
can
give
source
and
destination
index
and
things
like
that.
The
move
might
imply
zeroing
yeah.
But
to
me
it's
like
you
have
a.
D
A
D
C
So
if
you're,
if
you're
moving
later
in
the
list,
then
everything
between
from
in
to
gets
shifted
to
the
left
by
one
the
original
element
gets
inserted
immediately
after
that
shift,
and
then
everything
after
that
remains
unchanged
if
you're
moving
an
element
before
its
current
position
in
the
list,
everything
in
between
gets
shifted
right
by
one
and
then
the
original
element
gets
the
place
right
there.
It's
that
code
right
there.