►
From YouTube: .NET Design Reviews Awaiter APIs
Description
-01:00:-09 - Rejected: Change OwnedMemory(T) to IOwnedMemory(T) https://github.com/dotnet/corefx/issues/26002#issuecomment-359105642
00:13:35 - Approved: Move Span.DangerousCreate to MemoryMarshal.Create https://github.com/dotnet/corefx/issues/26139#issuecomment-359111438
00:38:14 - Approved: Move Span.NonPortableCast to MemoryMarshal and rename to Cast https://github.com/dotnet/corefx/issues/26368#issuecomment-359109249
A
E
E
G
B
We
cannot
like
string,
cannot
be
encouraged
from
Mount
memory,
so
we
had
to
inside
memory
of
te
we
have
to.
We
have
an
object
field
and
we
say
like
in
table
jek
to
feel
this
on
memory
then
do
something.
If
it's
a
string
then
do
some.
You
know
exactly
same
thing
except
now.
We
know
that
it's
a
string
and
so
on
and
so
on.
We
have
like
a
basically
because.
B
Then
we
realize
that
we
will
have
more
types
in
the
future,
so
let's
say
we
have
utf-8
string
now
again,
it
cannot
inherit
from
out
memory.
So
we
have
to
play
that
trick
and
Steve
to
ask
me
once
like
you
know,
should
we
just
change
the
type
to
an
interface
now
we
can
implement
it
on
all
these
types
may
be
the
future
event
on
array
and
string,
and
then
we
can
simplify
memory
to
be
not
a
union
type,
but
just
has
a
field
that
is
own
memory
order
or
nothing.
B
K
I
K
B
I
B
K
O
K
A
M
A
That's
the
that's
very
good
I
mean,
if
you
get
mean
I,
would
prefer
the
avoid
chipping
something
that
we
don't
think
is
the
proper
exchange
that,
because
introducing
that
later
is
just
noise,
so
it's
like.
If
we
don't
think
the
type
is
video
we
don't
want
to
do
the
work
now
then
I
mean
we
certainly
can't
ship
it
later.
It's
not
anything
a
member.
You
would
ask
the
air
fit.
That
would
so.
B
L
K
It's
so
much
perf
right.
We
gotta
check
if
it
well.
B
B
Like
if
you
keep
scrolling,
you
know
get
this
final
get
memory
like
you
la
spec,
so
you
cannot
become
that
and
let's
not
exaggerate,
it's
a
visual
method,
call
or
interface,
this
much
cool
but
like.
If
you
don't
do
it
often
it's
nothing.
The
main
problem
I
have.
Our
main
concern
is
that
you
not
modify
experiences.
That
is
the
only
thing
might
be.
I
A
A
But
they've
basically
can
it.
You
have
a
TriCaster
the
defect
of
the
undiscoverable
like
they
like
the
active
ability
api
on
the
base
time,
because
there's
still
only
one
time
did
you
ever
have
to
know
about
there's
only
one
fact
ever
costume,
there's
only
one
type
to
ever
store,
like
I
mean,
there's
a
whole
bunch
of
like
videos
but
sitting
it
on
one
time.
So
I
would
say
yes
retro
actively
adding
conceptually
abstract
things
is
hard,
but
like
I,
don't
know
what
Halsey
would
do
it.
A
Q
B
Happens
with
with
the
versions
that
don't
take
like
they
are
still
there
is,
somebody
can
call
them.
What
are
the
semantics
method?
The
moment
you
call
the
methods
that
doesn't
take
it.
This
type
would
have
to
record
it
and
say
I'm,
not
volleyball
anymore,
like
I'm
Paula,
Zahn,
now,
I,
don't
know
the
ID.
I
won't
give
you
it
anyway.
So
then.
B
K
Nausea
we
offer
well.
Why
would
we
implement
whether
we
would
really
encourage
this
new
interface
from
pirate,
a
noble?
What,
if
you
want
to
represent
an
memory?
That's
not
retain
and
right.
I
guess
is
that
it's
less
discoverable
that
you
have
to
guess
to
retain
able,
but
maybe
like,
if
you're,
creating
interfaces.
Why
not
separate
them.
S
G
J
B
G
J
The
same
for
efficiency
right.
B
A
N
B
K
E
K
T
R
R
B
B
Out
moving
the
non-portable
cast,
Marshall
and
I
never
write
this
API
and
the
reason
I
didn't
like
the
API
is
I.
Don't
know
how
to
use
it
correctly.
So
we
have
this
API
called
non-political
cast,
which
I
don't
know
how
to
check
whether
I'm
running
in
a
particle
context
or
not
they'll
check
what
does
it
mean
so?
B
Okay?
So
now,
let
me
explain
the
reason
it's
non-portable
is
that
on
some
in
some
configurations
or
Center
process
or
operating
systems,
and
many
like
some
configuration,
you
carry
underlined
memory,
so
you
cannot
read
an
int.
You
cannot
treat,
you
know
a
twice
or
four
bytes
from
arbitrary
memory
location.
So
you
cannot
cast
an
arbitrary
Spano
fights
when
place
panel
int,
because
then
read
on
this
in
would
attempt
to
read
L
it.
It's
not
aligned,
it
would
say,
and
it
failed
fails
with
basically
each
CPU
fault.
What.
K
B
V
B
B
B
E
G
B
B
I,
don't
know
like
anyway,
so
there
are
sometimes
it
works.
Sometimes
it
does
in
the
point,
is
we
don't
have
a
test
in
the
dress
and
and
then
it's
even
more
complicated
to
what
you
do
if
you
discover
that
the
test
doesn't
pass
right.
So
after
some
ideas,
we
came
up
with
this
signature.
I
propose
that
we
have
a
test
early
on
said.
Well,
why
have
a
tester?
Let's
just
try
gas
and
then.
B
K
B
T
T
B
C
E
I
I
B
You
know
what
one
option
is
allocated
buffer
that
is
aligned
any
copy
which,
basically,
you
know,
shifts
the
data
to
be
aligned.
Another
option
is
you
read
one
by
one
instead
of
casting
to
the
whole
path
where
you
need
one
by
one,
and
you
want
to
choose
which
option
you
want,
depending
on
what
your
scenario
is
like,
if
you
really
want
to
end
up
with
you
know
very
long
buffer
of
ends.
Well,
you
cannot
read
one
by
one.
B
C
K
U
But
it's
like
well
yeah.
What
about
second,
the
next
is
that
we
can
do
this
if
the
try
gas
fails,
but
it's
pretty
verbose,
so
questioning.
A
B
B
B
Now,
let's
talk
about
the
test
first,
which
is
try
cast
and
I,
think
that
so
there
are
only
two
like
trade-off
between
a
tester
and
a
to
wear
like
a
test,
and
this
try
is
that
tester
and
adware
is
a
bit
more
performant
if
you,
because
you
can
do
the
test
once
and
then,
if
you
know
that
you
kind
of
keep
doing
the
same
thing
you
can
just
cast
without
doing
the
track.
This
try
would
have
to
do
the
check
every
single
time.
A
K
B
Q
B
K
E
B
B
B
I
B
B
B
K
Can
implement
it
by
try
casting
the
machine
aligned
like
just
by
making
up
some
memory
and
storing
the
result?
If
you
wanted
boo
to
now,
because
this
method
check
a
stiff,
it's
reinforced,
it
doesn't
ask
for
it
yeah,
but
you
can
do
the
checker
thing
on
your
own,
like
try
casting
something
that
you
pre-allocated
and
storing
the
whaler
yeah.
Then.
N
B
N
A
J
S
B
B
I
I
X
G
N
B
B
K
I
T
I
I
That
that
seems
like
way,
what's
the
assumption,
so
we
find
the
the
assumption
is
if
I
want
to
know
that
my
understand
I'm
going
to
get
back
would
be
aligned
if
it
were
to
be
returned
to
me.
How
do
I
know
what
the
align
of
T
result
is
because,
unlike
size'
so
herself,
you
were
saying
we
just
assumed
after
ourselves.
B
I
B
Yes
and
the
existing
code
doesn't
change,
so
we
don't
have
to
I
find
so
what
do
they
mean?
It
is
basically
we
load
them
all.
We
remove
the
on
multiple
cast
to
memory
Marshall,
it's
unsafe,
to
check
your
alignment
yourself,
but
then
we
just
let
you
cast
and
great
provide
life.
You
know
it's
a
live
example
and.
Q
B
B
B
B
U
B
M
H
M
A
M
E
E
U
E
H
A
A
E
I
E
U
M
P
U
I
E
K
E
H
M
A
K
A
L
A
O
A
N
O
D
B
I
I
Yeah
but
the
ax
is
going
to
change
the
theater
no
collar,
basically
like
it
at
least
forcing
the
collar
to
make
to
actually
explicitly
write.
Graphic
also
means
the
collar
has
to
make
sure
that
that
variable
lives
both
before
and
after
the
mountain
college
and
Rosario,
and
then
have
it
just
from
a
jacket
in
that
situation.
So
we
just
use
reference
Center
from
the
headlands
and
it'll,
be
the
sole.
E
B
L
A
E
Thing
is
like
I
think
that
in
a
waiter
site
you
know
like
a
resettable
past
or
whatever
like
has
value,
is
like
an
exchange
type
and
so
forth,
but
it
doesn't
need
to
be
used
by
pipelines.
That's
the
question
is
the
risk
is
that
we
will
have
a
one-off
type.
That
is
the
biggest
risk.
If
we
don't
do
this
generic
type
right
now,
okay,
but.
L
A
A
B
K
Like
so,
it
used
to
be
a
scheduler.
The
reason
we
changed
it
is
we
wanna.
E
E
K
B
E
E
So,
let's
kinda
API
before
we
change
tune-up
try
base
class
and
it
basically
has
a
bunch
of
places
that
kind
of
would
turn
into
schedulers
today
so
spread.
Pool
cues
work
item
is
an
example.
Basically
any
place.
That
has
a
call
back.
You
can
pass
it
good.
Passing
one
needs
to
get
coop
on
that
scheduler,
so
I
have
a
bunch
of
this
is
where.
M
K
Q
G
B
A
H
E
K
A
E
G
E
E
Q
E
L
K
E
B
H
B
K
A
G
A
E
I
think
name
is
the
name
was
fine,
but
I
think
there
is
because
I
had
scheduled
with
action.
I
think
he
thought
it
was
too
generic,
but
I.
Think
after
going
through
a
bunch
of
round
I
think
he
thought
I
was
fine,
then
he
said:
okay,
let's
call
it.
I
actually
bring
tea.
Crystals
just
propose
to
type
called
index
for
the.
T
Q
Q
L
K
Q
H
A
F
B
I
think
it
makes
my
plans
to
Monaco.
So
if
these
types
are
they
implemented
like,
firstly,
people
learn
how
they
work.
Then
they
approach
five
times.
Oh
my
god.
This
is
a
method,
and
it
just
it
is
one
of
these
times.
I
know
what
it
does.
Business
orgies
is
sound
like
you,
a
sick
model
on
my
pants
I,
let
my
trousers
I
mean
the
only
other
option.
B
N
K
E
K
E
K
K
K
V
E
A
A
A
Q
E
K
K
T
K
K
Don't
even
know
what
those
two
extra
classes
for
either
in
writer,
then
we
don't
have
any
very
have
an
issue.
We
know
that
we
would
want
to
add
more
in
async,
like
methods
to
every
side,
so
work
yeah.
The
thing
I'd
talk
to
you
about
in
the
were
like
real,
with
a
way
to
read.
There
starts
on
the
writer
side.
We'd
like
is
that
was
like.
E
U
W
H
H
M
H
M
Y
B
E
B
E
And
plastic,
but
that's
mostly
so
we
can
implement
stream
well,
it
influences
the
way
cancellation,
it's
very
tropical
that
one
actually
will
throw
which
one
whoo.
So
the
cancellation
we're
talking
about
is
for
the
reader
to
cancel
it
similar,
but
it
will
grow
when
it
cancels
and
it's
less
efficient
because
you
have
to
register
like
there's
some
optimization
talking.
D
E
There's
no
polling
going
on
in
second
home
and,
secondly,
the
they're,
not
mutually
exclusive
they're,
two
orthogonal
futures
really
and
they
can
work
together.
I
didn't
before
I
mean
my
costume
check,
but
the
point
is
they're
orthogonal
you
can
have
both
like
you
can
use
the
cancel
pending
agreed
with
the
cancellation
token
like
that
work.
E
M
E
M
G
E
K
E
So
we
can
implement
an
abstract
stream
type
using
pipelines
like
anyth.
All
it
is
is
we
want
to
trigger
it
a
register,
a
tweeter
callback
whenever
that
triggers
yeah
we're
ready,
we're
subscribing
to
the
cancellation
of
there's
a
slight
optimization
if
you
use
the
same
token
a
lot,
but
yes,
you
have
to
Alec
in
token
whatever
that
fires.
So
it's
kind
of
kind
of
wonky
everything's
allocating
in
that
like
namespace,
starting
to
sleep
so.
E
E
E
With
always
yeah,
which
I
mean
flushes,
that
safe
relative
to
the
read
operation
right,
so
that's
kind
of
the
say,
I
didn't
make
sure
that
that
somebody
observed
the
fly
before
resetting
it.
Well,
it
makes
sure
that
we
return
to
read
result
with
the
bit
apply
to
area
there's
no
like
property
getter,
which
is
later.
E
At
this
is
seems
to
be
above
via
wiener
there's
Castle
Syrians,
like
I,
know,
Castle
I
would
not
like
I
get
that
there's
kind
of
this
correlation
between
tasks
and
I
wave
will
exceed
and
like
we
kind
of
want
to
bring
them
together
with
this
cancellation
concept.
But
I
will
to
you
so
much
simpler
tasks
like
don't
bring
cancellation
into
it.
The
problem
with
this.
E
K
Is
below
no
no
I
mean
Castle
ability
is
a
new
feature
of
I
waiter,
then
yeah,
because
it's
a
sink
operation.
You
cannot
return
canceled
immediately.
You
have
to
return
cancellation
as
a
result
in
uncompleted,
when
you
call
on
completed
combat
it's
part
of
result
that
you
said
after
oh
yeah,
no,
there
you
go
racing.
Rightly
thank
you.
Come
by
register.
You
come
back
and
then
is
check.
Where
do
get
is
canceled.
H
E
Well,
it
can
be
on
the
result,
but
I
think
it's
better
on
AIA
later
I
am
convinced
there's
over
like
on
oh,
not
not
if
you
want
to
put
it
directly
on
yeah
you're
right
so
to
the
point
where
we
care
about
a
not
CIO
inner,
then
they
really
just
like
today
right,
it's
not
read
result
or
whatever.
We
just
look
to
be
the
T
in
the
IOA
turret
see
yeah
yeah,
but
you're
saying
just
move
it
up
because,
like
you
know
that
they
were
saying,
let's
put
it
on
another
task,
but.
E
S
C
B
E
Task
is
wrapping
the
I
way.
The
later
is
computed.
Okay,
that's
it
it's
counselor
yeah,
so
yeah.
If
you
want
to
implement
value
taxes,
cancel
that
you
probably
would
yeah
okay,
what
if
or
is
completed,
we
we
do
what
stream
does
and
then
we
remove
is
canceled
off
for
you
agreed
reload
right.
Let
me
just
is
that
what.
K
T
Q
E
E
Y
G
E
D
Y
I'll
tell
you
what
I
have
zero
net
flushes
right
and
it's
because
I
make
a
writer
I
allocate
Alec,
Oh,
Alec
and
then
I
commit
and
something
else
Alex
and
Alex
and
commits,
and
then
you
get
all
the
way
to
back
up
to
the
top
back
into
where
there's
async
code.
But
you
don't
have
that
original
writer.
So
you
don't
know
how
much
has
been
written
on.
Y
X
K
E
E
K
H
E
E
Good,
that's
why
I
thought
you
guys
wanted
so
for
is
completed.
That
has
a
certain
symmetry
with
his
canceled.
It
does
seem
a
little
denormalize
because,
like
what
the
heck
is,
like
you
know,
a
non
completed,
0
like.
Y
S
Y
E
Completed
like
and
the
reason
you
need
is
completed
over
just
like
the
zero
length
read
like
I
think
this
is
really
a
committee
works
fine
for
pipes
any
positive,
but
since
we're
talking
about
Iowa
turd,
if
we
have
t
get
result
right,
like
they're,
not
might
not
be
like
the
equivalent
like
doll
or
a
t-value.
That
really
makes
a
ton
of
sense
see
how.
E
K
E
K
K
Y
Y
Y
D
E
And,
given
that
that's
the
case
like
okay,
then
you
get
arbitrary,
like
state
pieces
and,
potentially
you
know
zero
too
many
right,
because
you
don't
know
how
many
times
you
flush
and
then
like
okay.
So
maybe
it's
enough
just
to
know
the
list
of
state
objects
that
were
flush
since
last
time
you
read,
but
it's
some
kind.
B
Y
Y
E
S
Mean
these
partial
is
a
B,
that's
basically
what
stream
does
because
you've
got
right,
async
and
flushed
async
to
differentiate
here's.
You
know,
I've
got
some
I'm
writing
some
data.
If
you're
writing
in
a
loop,
that's
not
the
same
size
as
the
next
stage
and
that
you're
outputting
say
you
know
I'm
reading
from
a
file
in
400
by
trunks
and
writing
that
out
he's
still
want
to
flush
it
140
1400.
J
S
Y
S
G
S
S
Y
So
the
problem
is
the
upper
layer,
so
say:
you're.
Writing
a
protobuf
thing
that
serializes
three
gigs
of
of
objects
that
upper
layer
doesn't
know
the
network
packet
size.
So
it's
going
to
have
to
guess
that
I
should
flush
every
2048,
bytes
or
whatever,
whereas
if
it
could
do
a
partial
flush,
partial
flush,
the
whole
way,
along
till
the
end
of
the
three
gigabytes,
the
next
layer
down
understands
what
it's
ideal
packet
sizes
and
can
make
the
decision.
S
S
S
Y
X
K
Y
Decided
your
layer,
every
10,
K
you're,
going
to
do
this
partial
flush
or
whatever,
but
if
today
you
do
a
flash,
then
the
SSL
Lance
is
well
I,
don't
know
if
there's
any
more
data
coming
so
I
have
to
wrap
that
in
a
packet
and
encrypt
it
and
send
it
out,
even
though
I
could
have
sent
16
K,
whereas
if
you
do
a
partial
flash,
it
says
it's
a
simple:
if
you
know
if
flushes,
full
or
greater
than
16
K,
you
know
slice
out,
one
packets
ended.
It's.
E
Y
E
Y
E
B
E
C
S
S
S
Y
S
Y
E
U
E
E
H
Y
B
E
H
E
H
E
G
Y
E
S
K
K
E
E
Kynaston,
live
it
or
not,
I
know:
okay,
you
don't
wiggle
duplexing!
You
can
make
an
analogy
for
printer
writing
to
a
thing
so
I'm
saying
you're,
just
infinitely
arrivals.
That's
the
value
right
like
so
implementing
a
right,
Will
Smith
is
a
lot
like
reading
from
a
pipe,
and
so
in
that
case,
right
commit
is
no
comparable
concept.
That's
because
there's
no
way
for
streams
like
take
data,
and
then
you
not
observe
it
in
a
street
if
you're
living
the
stream.
So
no
analogy
for
right.
That
is
a
lot
like
they're.
E
You
know,
pen
are
partial
flush
idea
where
it's
like
hey.
You
received
write.
If
you
want
to
write
it
immediately,
good
on
you,
if
you
think
that
you
want
to
write
in
10,
K
chunks,
good
on
you,
you
know
what,
because
rates
called
you
know
that
pretty
soon
after
there's
going
to
be
a
flush
call.
So
if
you
don't
want
to
do
anything
with
it
good
on
you,
I'm.
S
B
S
Y
E
V
E
E
D
B
V
H
A
H
E
Gone
alright,
let's
think
about
this
one
that'll
be
till
everything
was
scared,
just
worries
like
we
like
it,
but
we're
worried
that
I'll
get
shot
down.
Yeah
and
I'll
kill
the
other
good
idea
yeah
later
damn,
but
it's
actually
not
a
bad
idea,
not
actually
worse,
really
good.
Oh
my
gosh
buddy
task
ya
know
the
device
has
good
use.