►
From YouTube: .NET Design Reviews GitHub Triage
Description
-11:-34:-38 - Approved: Path Span APIs that write into a specified buffer https://github.com/dotnet/corefx/issues/27418
C
C
E
F
H
G
E
I
E
Net
to
do
a
zero
byte
read
on
the
connection
to
know
when
there's
data
available
and
then
only
when
there's
data
available
issue
a
Request,
the
WebSocket
to
get
the
next
packet
basically
wants
to
eliminate
first
from
the
WebSocket
itself
other
than
the
14
by
tougher,
that's
necessary.
The
matter
also.
G
F
E
G
E
Today,
the
implementation
basically
maintains
its
own
receive
buffer
that
allocates
essentially
once
when
the
stream,
when
you
create
the
WebSocket,
it
has
a
receive
buffer.
It
issues
all
receives
into
that
buffer
and
then
it's
out
the
relevant
pieces
into
the
users
buffer
when
they
call
receive
a
sink
for
send
a
sink.
We
didn't
want
to
make
to
networking
work.
You
know
to
actual
set
is
under
the
covers
one
for
the
header
and
one
for
the
buffer
that
we
take
from.
We
rent
from
the
array
pool
that
we
put
the
header
into.
E
E
It
doesn't
do
any
buffering,
but
if
the
underlying
stream
does
do
buffering,
then
we're
essentially
double
double
buffering
by
having
the
WebSocket
buffer
itself,
and
so
he
wants
to
be
able
to
say
effectively
know
the
underlying
stream
is
doing
all
the
buffering.
It's
cheap
to
do
multiple,
writes
or
reads
on
the
underlying
stream,
because
it's
buffering
for
you.
F
K
G
F
E
G
I
A
E
C
E
J
F
I
L
L
E
E
J
I
J
O
C
P
P
E
E
P
P
J
P
L
P
F
P
P
J
J
E
J
P
F
J
It's
a
field,
it's
not
okay,
so
the
problem
is
I
mean
like
there's
two
sides
right
I
mean.
If
you
have
an
existing
compiled
tuna,
see
on
the
regex
order
this
they
will
continue
to
use
the
regex
one-hour
class
that
exists
in
the
ferric
and
those
wouldn't
benefit
right,
because
it
would
be
a
breaking
change
for
that.
But
I
would
I
would
guess.
J
P
J
So
the
thing
to
me
is
like
agree
with
Stephan
like
there's
a
little
bit
of
a
bit
of
failure
here
that
we
they
open
up
with
that
right
because
on
the
one
inside
we're
adding
new
api's,
specifically
aim
to
make
it
more
performant,
but
then
use
credits
with
the
existing
API,
where
you
compile
to
IL.
If
you
want
to
speed
up
you
basically
now
I
have
two
things
that
are
designed
to
speed
up
that
make
it
slower
than
what
it
wanted,
but
then
what
it
used
to
be
right.
P
J
G
E
Q
K
P
K
J
I
mean
once
he
already
flying
to
the
connectivity
change
the
code
gen
for
whatever
user
code
gets
generated.
Advice
from
that
you
could
just
have
a
different
part.
I
mean
it
doesn't
have
to
be
the
same
time
that
you're
gonna
have
you
know
new
fields
on
the
same
time,
but
you
v
it
at
I/o.
You
have
to
change
your
code
generator.
It.
J
Just
looking
at
it
guys
now
for
the
future,
it
I
think
to
me,
like
the
question
is
more
like:
do
you
think
that
it
would
be
worthwhile
spending
money
on
it
magazine
like?
Do
we
see
ourselves
actually
doing
the
work
change
in
the
case
for
compiler
edge
X,
because
if
the
answer
is
no,
then
I
think
not
adding
the
overloads
to
begin
with
is
probably
better
than
adding
it
like
falling
out
the
cases
I.
J
I
think
this
is
another
larger
program
that
you
have
on
your
side,
right
to
like
figure
out
what
to
do
with
the
regex
engine
itself
by
there's
this
other
I
forgot
the
name
for
it,
but
there's
open
source
C
basis
but
yeah
and
then
the
question.
What
are
we
doing
with
that?
I'll?
Be
changing
our
implementation
or
replicating
a
new
API
surface
and
I
think
that
seems
like
the
bigger
bang
for
the
buck
right
to
figure
that
out
first
and
then
see
how
these
span
des
over
those
would
fit
into
them.
E
Maybe
I
make
a
suggestion.
Let's
assume
we
were
just
going
to
do
the
work
to
fix,
compiled
and
review
the
api's.
In
that
context,
maybe
that'll
give
Victor
a
sense
of
whether
this
is
a
direction
worth
pursuing
and
whether
it's
you
know
worth
than
looking
at
the
compiled,
but
we,
you
know,
was
already
there
yeah
I.
J
K
P
H
G
So
it's
kind
of
like
it's
a
bit
more
expensive
to
store
memory
as
a
field
than
just
two
int,
so
a
solution
that
I've
done
it's
sample.
That
I
wrote
is
if
I
already
have
that
the
reference
type,
the
string
I
will
just
start
to
additional
ins
and
then
on-the-fly
produce
either
a
memory
or
span
because.
J
J
R
K
Is
not
the
strengthen
yes,
because
either
value
the
original
total
that's
got
to
be
a
subset
of
the
match,
so
the
implementation
would
change.
If
this
changed
to
a
memory,
I
would
I
would
do
it
as
a
memory
and
a
string
that
is
null
and
the
first
time
you
call
the
string
property,
be
lazy
in
it,
the
string
and
then
return,
but
the
so
even.
G
Is
even
if
the
input
is
memory
memory,
not
a
string,
then
you
need
to.
If
you
store
this
substring
this
match
as
a
memory,
then
you
have
two
memory
fields.
They
both
store.
You
know
pointer
to
some
string
which
again
makes
it
a
bit
more
cheaper
to
store
memory
and
then
to
ins
for
the
subset
of
memory,
but.
J
I
S
J
I'm
not
sure
if
I
understand
so
you
construct
the
regex.
You
say
match
this
regex
against
this
text.
This
text
may
be
a
4
kilobyte
text
block
and
it's
in
the
shape
of
a
read-only
memory
on
the
jar
right
now
when
the
regex
finds
a
match
somewhere
in
their
buffer.
The
capture
represents
that
particular
location,
and
so
there's
no
to
the
so.
The
Vania
spammy
expose
here
is
a
subset
of
the
original
memory
and
then
same
goes
for
the
baby.
So
they
said
the
Vania
was
just
the
substrate
for
the
whole
thing.
J
So
maybe
oh
man,
you
spend
a
logically
the
same
part
of
the
buffer
is
just
the
problem
is
in
this
finger
was
interested
in
the
span,
representation
and
I
think
what
Jeremy
is
saying
is
that
you
know
be
able.
You
have
a
read-only
memory
for
the
whole
thing,
so
creating
a
slice
we'd
only
memory
for
the
sub
part
is
relatively
cheap,
but
if
we
only
give
you
a
spanning,
you
wouldn't
need
a
memory.
Well
then,
you
never
can
have
to
copy
the
same
to
your
memory,
because
you
can
oh.
R
G
S
K
Changing
the
input
to
allow
passing
in
a
read-only
memory
instead
of
charge,
then
we
would
have
the
read-only
memory
of
char
would
be
what
we
help
in
the
capture.
The
string
property
will
continue,
allocating
every
call,
because
that's
what
it
does,
which
is
easy.
We
just
do
the
memory
to
extreme
okay
and
every
exit.
G
This
just
is
a
memory.
It's
just
exposed
yeah,
it
can
be
optimizing,
many
different
ways.
I
mean
you
know.
First
time
we
do
the
comparison
to
string.
We
could
now
store
a
memory
of
charge
that
owns
to
this
string
that
we
just
created
now
next
time
you
call
to
string,
it
doesn't
actually
allocate
the
string.
It
just
gives
you
the
string.
G
D
K
D
P
P
One
yeah
this
one
here
you
see
that
sometimes
you
accept
pin
span,
and
sometimes
you
accept
the
memory.
It's
not
always
in
memory.
It's
sometimes
stand
because,
for
example,
when
we
call
we
place
a
split,
we
don't
need
to
allocate
the
memory.
We
can
just
use
the
span
because
we
don't
return
the
match
if
we
return
the
match
we
need
to.
We
need
to
have
a
memory,
but
if
we
don't
return
the
match,
we
can
just
operate
on
spans.
H
L
J
K
K
K
G
G
H
In
in
this
case,
as
you
were
discussing
like
time
management
stuff,
this
would
be
easy.
Correct,
like
this,
doesn't
actually
do
any
more
work
on
the
background
thread.
Once
you
call
match,
or
once
you
call
right
so
I
mean
span,
would
be
appropriate,
assume
return,
values,
I'm,
trying
to
figure
out
the
in
live
scenario
is
you're
going
to
have.
K
H
K
T
T
G
K
Yeah
I'm
just
I'm
trying
to
avoid
the
situation
where
we
need
to
use
pointers
inside
if
we
think
it's
sensible
to
avoid
it
and
to
have
an
API
that
says
span.
So
you
think
it's
fast
and
then
the
first
thing
it
always
does
is:
go
rent,
an
array,
the
size
of
the
span
to
copy
into
it.
So
it
can
use
an
inner.
K
J
Someone
I
think,
is
it?
Is
it
basically
when
you
call
match
so
it
is
match?
You
know
that
you're
never
ever
going
to
return
the
capture,
so
it's
completely
fine
to
just
pin
the
span
and
then
have
the
rest
of
the
engine
basically
allocated
stuff
from
the
heat
that
we
know
can
never
leak
but,
like
logically,
once
you've
returned.
These
objects
are
all
pointing
to
network.
They
should
never
access
anymore,
I,
hope.
H
J
J
G
J
I
J
Megabyte
X
file
right,
so
you
know
in
order
for
us
to
avoid
copies
from
the
capture
stuff
back
to
the
original
thing.
By
allocating
strings,
we
kind
of
need
a
way
to
do
that,
so
we
can
either
say
screw,
be
always
using
memory
of
T,
remember
of
char
and
never
use
that
or
you
have
to
store
a
pointer,
but
it's
one
or
the
other.
J
P
J
Yeah
I
mean,
if
you
kid
replumb
you
implementation
to
basically
never
hold
on
to
span
inside
of
a
class
and
I
guess
that
is
definitely
beneficial.
What
I'm
saying
is
that
there's
too
many
we
can't
do
that
without
massive
cost.
Then
I
don't
see
an
alternative
to
what
we
currently
and
which
is
I.
Think.
K
The
way
that
you
would
do
it
to
make
this
band
work-
and
everything
be
saying,
is
in
once
you
get
inside,
the
thing
is
match
calls
match
with
and
don't
allocate
the
return
craft,
and
so
it
gets
to
go
through
all
the
same
common
codes.
It
just
doesn't
return
into
the
objects,
so
then
it
can
be
playing
with
the
like.
You
give
it
a
span
and
a
memory
it
like
the
memory,
but.
J
K
O
U
Presumably,
that
cost
also
comes
with
additional
perf
benefits
for
the
is
match,
yeah
I'm
sure
that
would
help,
and
there
you
know
the
just
want
to
make
sure
that
I
call
out
the
specific
scenario.
That's
interesting
for
the
file
matching
is
like
we're
doing
very
small
strings
so
is
match.
Is
super
useful
to
be
super
performant,
so
the.
U
J
Oregon
and
so
let's
say
we
can't
change
the
implementation
to
make
it
restaurants
or
villages
of
this.
Let's
say
we
can't
do
that
politically
will
be
then
either
say
we
never
take
the
span
ever
and
we
only
take
memories
in
the
public
API
to
avoid
having
storing
a
border
all
we're
doing
what
Victor
is
currently
doing,
which
is
me
story,
basically
pointers,
Oh.
H
H
H
N
U
G
J
G
U
G
J
J
G
K
J
Our
problem
is,
we
have
existing
API
suppose
it
happens
to
be
classes
right
so
like
we
either
have
an
option
to
say
the
old
talk
in
terms
of
memory,
because
it's
the
only
thing
you
can
stored
in
a
class
or
we
say
no
school,
we
add
new
types
capture
of
a
new
match,
made
it
whatever
that
are
restaurants.
Well,.
J
We
basically
have
to
say
you
get
back
a
basically
this
panel,
you
get
back,
I
lose
the
bathroom
every
for
that
sale.
Well,
it
would
be
you
pass
on
this
panel,
everybody
to
it.
Yeah
it
gets
on
safe,
but
I
mean
like
ignoring
that
for
a
second.
That
will
be
the
only
way
we
can
use
spans
everywhere
in
okay,
so
yeah.
J
I
agree
with
you
that
I
think,
once
you
see
trying
to
replicate,
but
current
mention
capture,
give
you
and
do
it
as
best
tracks,
it
would
not
be
a
knowing
the
fact
that
we
know
that
we
have
the
API
service
for
the
results.
It
also
is
messy
in
terms
of
you
know
what
the
API
ship
it's,
especially
because
when
you
think
of
the
typical
interaction
point
of
spans,
you
give
it
a
span
that
divided
into
it
is
not
large
enough.
K
J
K
G
Sure
saying
like
well
they're,
you
know
the
shape
of
the
API
that
we
want
and
we
want
to
have
consistency
with
existing
API
so
that
our
classes
and
store
things
and
whatnot
sure
and
then
I'm
fine
with
memory.
It's
more
tricky
to
use
those
api's,
but
it's
fine.
What
I
don't
want
to
do
is
well
unless
the
cost
is
like
enormous
month,
but
I
would
not
want
to
say
jeez.
You
know
this
is
this
is
gonna
be
a
week
more
work,
let's
have
a
sub
optimal
API.
K
J
R
G
S
K
H
K
S
K
H
Due
to
the
existing
implementation,
well,
we
already
said
that
if
you
are,
if
you're
returning
the
past
commercial,
but
you
can't
do
that
with
rough
trucks,
you
have
to
take
it
as
a
match
as
voters.
At
that
point
like
what
are
you
returning
aside
from
zero
boss,
it
then
the
other
thing
is
now.
You
have
potentially
issue
of
air
somebody's
calling
match,
like
regex,
does
Oman
work
that
process
the
data
and
then,
after
doing
a
lot
of
work,
says
I
hope
I
had
a
trillion
matches
yeah,
you
should
tumble
and
try
again.
G
K
G
E
K
K
K
So
Steve,
the
implementation
of
value
right
now
is
essentially
capture
is
capture
is
memory,
it
holds
the
original
string
and
an
offset
in
the
links.
So
the
implementation
of
value
is
same
value,
dot
substring
off
suddenly,
so
that
will
return
will
change
capture
to
hold
a
memory.
It
will
return
that
memory
dot
go,
allocate
a
string
and
stuff
the
value
spans
value
slice
whatever
we
want
to
call.
It
would
just
return
that
memory.
No.
K
S
G
E
K
Mean
we
could
we
can
take
that
argument
and
say
well
then
clearly
it
needs
to
be
a
memory
representing
the
same
reference
eNOS
of
value,
but
we're
not
like
we're
intentionally
not
doing
that
because
we
don't
want
to
copy
value,
has
existing
semantics.
But
if
we
only
look
at
the
semantic
value
that
is
returned
then
introduced
a
derived
class
and
use.
Remember
writing.
H
P
P
P
J
H
J
K
Have
modes
where
both
returns
persisted
reference
against
the
memory
you
gave
it
and
just
a
boot
like
if
it
was
always
the
span
based
thing,
that's
fine,
and
if
it
was
always
the
thing,
that's
fine.
The
problem
is
this:
one
bridges,
the
gap
and
I
just
want
to
make
sure
we
don't
end
up
with
an
implementation
state
where
we
start
leaking
pointers
to
deallocate
yeah
yeah
I
mean
if
we
have
to
make
the
trade-off.
We
got
to
you.
It's
just
I
mean
I.
J
In
which
point
it
might
be
cleaner
to
Disney
projects
as
it
is,
and
just
have
a
new
API
on
the
side
and
design
that
API
above
the
constraints?
And
is
we
don't
end
up
having
to
do
this
crazy,
X,
because
I
think
it
might
be
first
I
mean
even
with
yun
suggestion
like,
even
if
we
could
pull
it
off
I
think
you
make
regex
substantially
worse.
J
G
So
but
I
think
that
you
know
well,
but
it
would
be
usefully
like
forget
about
implementation.
It
would
be
useful
to
if
somebody
sketch
like
what
would
the
API
look
like,
because
if
it's
very
similar,
maybe
it's
okay
to
just
you
know,
bolt
it
on
top
of
this.
If
it's
very
different
than
I
I
kind
of
agree
yeah,
it
would
look
like
a
frank
and
design
of
two
different
ideas
put
together.
J
And
that's
the
one
I
don't
have
a
good
handle
on
I
like
talking
to
Dan.
There
were
a
few
things
where
you
know
we
have
this
concept
of
about
what
it
is.
I
think
it's
was
it
captures
like.
This
is
one
thing
that
the
regex
engine
has
indoor
netball
that
nobody
else
has
which
makes
it
really
hard
to
replicate
it
over
the
other
engine.
So
there's
certain
things
we
can
do
I
forgot,
but
there
was
one
thing
where
we
yeah.
We
can't
do
that
if
you,
if
you
allow
that
we.
G
C
C
P
J
G
G
P
Yeah
the
thing
is
started
marks
the
start
of
the
location
where
to
start
searching.
P
P
P
You
call
away
extra
place,
we've
start
at
six.
He
will
still
get
the
zero
to
five
slice
as
the
first
as
the
first
capture
are.
G
P
P
J
G
C
J
J
J
M
P
Yeah,
if
you,
if
you
call
hwagok
split,
which
returns
a
numerator,
the
thing
is,
if
you
part
right
to
left
as
an
option
in
you
can
only
get
to
return,
they
returned
in
you,
enumerable
objects
from
right
to
left,
not
from
left
to
right
because
you
start
matching
from
right
to
left.
So
in
the
current
implementation,
we
store
all
the
return
values
in
the
list
and
then
call
reverse
on
the
list.
Then
returned
return
objects
from
left
to
right,
but
as
we
introduce
an
enumerator
here,
we
can't
do
that.
C
U
E
H
J
G
E
H
Detroit
integrating
over
when
you
call
for
each
over,
because
I
am
rater
Albany
house
state,
it
has
position,
presumably
whoever
thought
it
already
has
it
inside
of
it
using
statement
orange
yeah.
So
now
you
have
like
now
you're
intentionally
doing
things
like
the
whole
disposed.
Double
integration.
G
C
E
C
J
J
Fast
response
to
that,
because
I
mean
acoustic
is
Katun
right,
it
has
it
been
weird
for
each
over
a
numerate
or
in
general,
because
it
does
make
the
question
of
like
what
you
want
the
semantics
to
be.
Do
it
I
can
think
your
particular
case.
It
was
actually
like
for
each.
You
know
bar
item
in
split
its
looks,
reasonable
and
but
I
like
in
the
other
cases
that.
U
E
E
P
E
The
question
constants
that
to
this
is
a
case
where
we're
artificially
injecting
in
a
weight
of
a
numeral,
in
order
to
make
this
thing
for
each
of
all,
and
if
we
believe
that's
going
to
be
more
common
now,
maybe
we
should
revisit
it
in
the
language.
If
it
really
is
going
to
be
one-off
things
like
this,
then
we
can
introduce
the
extra
layer
of
the
innumerable
we've.
J
I
would
say
that
I
mean
one
thing.
It
is
reasonable,
like
towards
most
of
the
problems.
If
you
I
was
mentioning,
is
that
to
say
you
know
for
each
works
with
a
method
called
if
the
method
returns
it
in
your
Mariah
tour,
but
you
cannot
actually
for
each
instance
right.
Then
you
don't
have
to
dealt
with
this
whole
issue
because
you
clearly
acquired
the
thing.
It's
the
ownership,
so
really
an
issue.
H
G
J
G
J
Is
literally
like
the
same
as
today
like,
if
you
you
can
totally
so,
they
say
say
for
each
bar
acts
in
split
right,
I
can
totally
take
the
split
thing
and
assign
it
to
a
variable,
and
it
just
means
that
you
don't
have
this
thing
there.
Don't
you?
Oh,
you
can't
actually
do
this
well
now
you
cannot
for
each
over
the
instance
yeah
only
for
each
it
in
the
context
when
you
acquired
it,
yeah
I.
G
J
J
U
U
We've,
unfortunately,
so
those
are
the
approved
ones
up
there,
it
so
the
second.
The
second
block,
is
the
ones
that
I
want
to
add.
There's
one
other
weird
piece
to
this
and
I
guess
it's
also
true
for
joining.
Although
you
can
kind
of
calculate
it
yourself,
but
is
that
I
wasn't
sure
we
already
had
a
pattern
where
we
could
pass
out
like
cars
needed,
because
we
know
what
the
likely
count
is
going
to
be
and
I
call
it
out
in
the
notes.
So
can
you
try
to
get
full
path?
You
know
we'll
get.
U
J
U
G
99.9
percent
of
the
time
so
yeah.
So
this
is
a
bit
dangerous,
because
if
it's
marks
it
will
never
fail.
If
you
don't
have
it,
the
color
of
this
API
is
like
geez
I
guess
you
know,
I'm
gonna
try
this
destination
and
if
it
doesn't
work,
I'm
gonna
try
something
else.
If
we
have
a
method
that
is
not
the
upper
bound,
somebody
writes
called,
it
always
works,
they
never
hear
they
fall
back
and
then
it
stops
working.
U
H
U
So
one
of
the
things
I
was
considering.
Well,
it's
effectively
static,
so
you
can
change
the
environment
variable
and
blow
everything
to
hell
but
like
if
you
do,
it
I
mean
system-wide,
but
if
you
do
it
in
the
process
and
it's
not
her
dough
that
people
do
this
sort
of
thing.
It's
like,
oh
well,
I
want.
U
My
I
want
my
taxi
to
have
a
different
tempo
right,
that
I'm
gonna
control
and
set
the
environment
variable,
and
they
do
it
some
time
after
setup
startup
and
it's
kind
of
it's
playing
with
fire,
but
I
mean
I.
I
was
considering
changing
the
the
get
temp
path
to
actually
cash.
The
value,
yeah
I
didn't
do
I
didn't
do
it
because
we're
so
late,
it's
something
I
would
do
in
the
early
part
of
the
well.
U
No
that's.
There
is
no
real
point
outside
of
late
that
if
we
find
in
the
case
in
that
particular
case,
you
know
it'll
be
something
well.
Yeah
yeah
try
that,
because
it
seems
like
a
rational
thing
to
do,
and
then
we
find
out
good
lord.
It
like
falls
over
in
all
these
cases
where
people
are
doing
these,
these
sort
of
semi
normal
things
it
becomes
a.
We
can
abstract
the
behind
the
implementation
detail
right.
J
U
J
U
Well,
the
only
the
only
tricky
part
is
it's
like
you
know
on
unix,
it's
typically
a
thousands
of
characters
and
mac,
it's
four
thousand,
but
like
on
windows,
it
could
be
32,000
characters.
Long,
it
seems
seems
abusive
to
me
no,
for
example,
right
off
the
bat
and
it's
probably
going
to
be
a
thousand
characters
and
make
the
users
jump
through
that
hoop
I.
Just.
H
B
G
H
J
U
You
know
the
one
of
the
things
that
would
be
potentially
useful
going
forward
is,
if
we
actually
like
develops
like
the
value
string,
building
or
something
that
allows
people
to
do
the
patterns
around
building
off
the
stack
and
then
I
mean
we're
using
internally.
But
if
we
had
something
public
like
that
and
took
that
as
a
roof.
J
G
I
would
I
wonder
whether
we
shouldn't
start
with
just
this
API
without
the
hint
think
about
the
value
builder
solution
or
some
other
solution.
If
we
get
feedback
that
you
know,
we
cannot
do
the
other
solution
and
we
get
feedback
that
people
still
need
this
property.
We
can
add
it
later,
but
I
would
add
something
that
kind
of
it's
never
happy
or
how
the
overload
that's.
My.
J
G
G
C
S
U
U
J
E
U
U
G
U
U
G
U
M
J
U
G
H
N
J
H
J
H
N
N
Example
that
yeah
I
just
mentioned
to
me,
is
if
you
have
a
struct
with
a
private
int,
yes,
and
you
call
a
special
that
struggle,
it.
M
N
H
D
M
J
Honestly,
like
you
to
me,
it's
a
good
way
to
say
you
know:
I
can
I
mean
I
can
do
this
state
right,
I
can
I
can
stay,
I
can
just
take
an
arbitrary
object.
Grab
go
to
binary
for
murder
and
I.
Have
a
bunch
of
bias
and
I
can't
be
done
whose
utilize
private
state,
then
you
you
have
to
skip
verifiability.
J
G
G
So,
ok,
so
there's
another
one
which
is
if
we
said:
okay,
we,
let's
not
do
it
for
decimal
I
would
be
I,
am
also
ok
with
it.
What
I
would
not
want
to
happen?
Suddenly
binary,
primitives,
try,
read
machine
and
Ian
doesn't
work.
A
I
want
to
read
an
int
out
of
this
pan
and
you
have
to
use
some
memory
marshal
API
stuff.
N
G
N
G
H
G
So
let
me
give
you
a
scenario
where
I
don't
played
it
back,
so
we
have
transformation
interfaces
and
they
all
operate
on
bytes
because
they
are
typeless.
They
just
transform
bytes.
So
if
I
have
a
span
of
chars
and
I
want
to
transcode
it
to
span
of
bytes,
I
need
to
use
this
one
cast
it
to
bytes,
and
then
it
just
do
the
transformation
and.
G
S
G
J
N
G
J
J
G
H
J
But
the
argument
goes
either
way,
one
which
is
so,
let's
say,
let's
say,
I,
buy
your
argument
that
this
is
a
this
is
something
you
need
to
think
about.
The
downside
of
pushing
everybody
to
memory
marshal
is
that
all
memory
martially
also
eighty
is
that
have
a
quite
large
continuum
from
potentially
unsafe
to
holy.
This
is
probably
extremely
unsafe
rights
if
you
point
them
to
one
time.
D
H
You
you
just
can't
arbitrarily
go
from
char
to
fight,
for
instance,
without
with,
without
special
case
in
your
platform,
for
example
like
what
I
don't
even
know
what
that
could
be,
but
you
can't
send
those
bikes
across
a
wire
like
I
mean
I.
Suppose
you
can,
but
now
you
have
to
tell
the
person
on
the
other
side,
this
is
utf-16,
maybe
big,
endian,
baby
little
endian
blah
blah
blah
like
I
hope
you
had
a
byte
order
mark
on
there
somewhere
sure.
G
B
G
J
From
like
the
API
is
very
context,
sensitive
right,
so,
for
example,
I
can
you
know
GC
right
is
an
API.
You
should
use
sparingly
because
if
you
don't,
then
bad
things
might
happen
right
but
like
if
you,
if
you
use
it
incorrectly,
what's
the
worst
that
can
happen.
Your
just
run
slower
right,
those
guys
when
you're
do
it
incorrectly.
Well,
you
know,
depending
on
what
things
you
reinterpreted
it.
G
Might
actually
be
pretty
bad?
No,
it's
you
have
to
this.
One
always
works
and
there's
nothing
wrong
with
it.
What
you
do
with
this
data
sure,
but
we
have
already
api's,
we
have
encoders
in
you
know
in
nothing.
We
have
basically
api's
that
produced
by
a
race.
Okay.
Now,
if
you
send
the
bytearray-
and
you
know
like
you-
put
the
the
bytes
in
the
wrong
order
and
send
it
over
the
wire
you're
gonna
have
problems
sure
like
API.
J
J
The
raw
bytes,
yes
and
I
can
know
whatever
I
want
so
and
so
that
so
the
thing
is
you
I
think
you'll
end
up
a
memory
wall
and
just
by
the
correct,
which
you
know
we
have
on
Danaher,
with
disabled,
private
reflection,
at
least
in
store,
because
people
misuse
it
all
the
time
and
it
to
get
access
to
private
state.
Now,
when
you
combine
these,
the
bottom
is
each
of
those
API
is
has
one
it's
like
the
sequence
of
this
one
followed
by
week,
machine
and
you
may
basically
click
once
tracked
to
a
difference
tracked.
H
J
N
N
When
are
you
in
a
transfer
from
one
representation
to
the
other?
Well
that
it
stays
on
the
same
right?
Let's
say
yourself,
you
are
in
operation,
you've
got
as
bytes
and
you
take
operation,
York
Airport,
the
bytes
in
them
cells.
You
just
get
what
the
result,
which
is
the
input
index.
You
found
the
values
that
yeah
but
index
of.
We
already
have
an
implementation,
but
it
doesn't
example
that
some
people.
B
J
H
G
Another
thing,
okay,
so
another
proposed
fix
I,
would
be
fine
if
we
move
it
to
binary
primitives
right,
because,
basically,
it's
the
same
thing.
It's
like
there
are
many
API.
Is
there
that
you
need
to
know
what
you're
doing
with
and
E&S
and
and
in
the
name
we
could
say
as
machine
endianness
bites
I'm
fine
with
that
too.
It
makes
it
very
clear
that
it
is
just
give.
H
G
We
get
another
tweet
before
I
mentioned
that
I
would
not
be
happy
if
we
had,
as
as
bytes
for
each
primitive
type
to
memory
extensions,
because
I
feel
like
suddenly
like
we
are
adding
thousands
and
thousand
overloads
the
binary
primitive.
It
already
has
this
done
for
the
very
same
reason.
So
again,
if
we
move
these
api's
to
binary
primitives
and
make
them
work
just
on
the
primitives
I
think
it's
fine.