-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Description
Turn https://github.com/dotnet/corefxlab/tree/master/src/System.Slices into efficient first class feature.
- Initial implementation: Merge SpanOfT branch into master coreclr#7886
- Design document: https://github.com/dotnet/corefxlab/blob/master/docs/specs/span.md
- JIT - Correctness – proper GC reporting of the special byref field
- Re-enable GC layout reporting for Span https://github.com/dotnet/coreclr/blob/f42984160f5f9407f70ebc2e86edfcf226fccd81/src/vm/jitinterface.cpp#L2306. JIT chokes on it - fragile assumption introduced by recent JIT throughput fix.
- Intrinsic for reading/writing byrefs https://github.com/dotnet/coreclr/blob/f42984160f5f9407f70ebc2e86edfcf226fccd81/src/mscorlib/src/System/Span.cs#L39, multiple places
- VM - Correctness
- proper GC reporting: https://github.com/dotnet/coreclr/issues/8517
- enforcement of byreflike constrains https://github.com/dotnet/coreclr/issues/8516
- https://github.com/dotnet/coreclr/issues/9032
- VM - Stress
- GC reporting for tailcalls - https://github.com/dotnet/coreclr/issues/9032
- GC reporting for struct passed in regs on Unix - https://github.com/dotnet/coreclr/issues/9033
- JIT - Optimizations – apply same sort of optimizations to Span as it does for Strings or Arrays (treat indexers as intrinsics, range check elimination, etc.)
- Span methods may not inline when called from shared methods dotnet/coreclr#10031
- Improve aliasing model for implicit-by-ref struct passing dotnet/coreclr#10049
- Recognize/optimize Span bounds checks more like array bounds checks dotnet/coreclr#10050
-
Better optimization for CORINFO_HELP_RUNTIMEHANDLE_METHODdotnet/coreclr#10051 [moved to future]
- Update buildtools with Roslyn that has local byref and locals C# 7 feature
- Implement the full public surface dotnet/coreclr#5857
- Add
Span<T>
to framework contracts - Add
Span<T>
tests - Add
Span<T>
andReadOnlySpan<T>
as yet another ByRef-like type in Roslyn, so that unsupported operations onSpan<T>
like boxing or creatingSpan<T>[]
are compile errors: https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.2/span-safety.md - Make sure there is a way to pin
Span<T>
for interop - Debugging https://github.com/dotnet/coreclr/issues/8518 / https://github.com/dotnet/corefx/issues/14376
- Reflection - https://github.com/dotnet/coreclr/issues/17296
- Performance optimizations
- Optimize Copy, Clear, Fill - https://github.com/dotnet/coreclr/issues/9161
- Marshaler support (as with arrays) https://github.com/dotnet/coreclr/issues/14460
- APIs across corefx that accept spans (https://github.com/dotnet/corefx/issues/21281)
- APIs for working with specialty spans (https://github.com/dotnet/corefx/issues/21395)
benaadams, pkudrel, qooroo, sherry-ummen, nevoroman and 55 moreomariom, benaadams, i3arnon, khellang, qooroo and 19 moreadamsitnik, benaadams, omariom, khellang, qooroo and 36 more