Some MemoryMarshal methods are source incompatible in .NET11
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- csharp
- Área
- documentation
Línea de trabajo
Empieza por leer el cambio de prioridad de sobrecargas en PR #126252 y las convenciones de documentación de .NET Runtime para las notas de compatibilidad de código fuente. Documenta que los métodos de readonly struct que pasan this a las sobrecargas de MemoryMarshal afectadas pueden no compilar, e incluye el ejemplo o las soluciones alternativas del issue. La tarea estará terminada cuando la incompatibilidad y su alcance estén documentados formalmente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
#126252 added [OverloadResolutionPriority(1)] to several methods in System.Runtime.InteropServices.MemoryMarshal to prefer Span<T> over ReadOnlySpan<T>. This change fixed source incompatibility for a larger issue, but at the expense of source compatibility for edge cases.
One such example is attempting to use these methods by passing this inside an instance method of a struct that has implicit conversions to both Span<T> and ReadOnlySpan<T> when the method is marked readonly.
This change should be formally documented to acknowledge that such code patterns will now fail to compile.
Minimum example
[InlineArray(8)]
public struct CoolInlineArray {
byte data;
// Works in .NET10 - chooses ReadOnlySpan<T> overload
// Fails in .NET11 - chooses Span<T> overload
internal readonly ulong GetLongA() => MemoryMarshal.Cast<byte, ulong>(this)[0];
// Works in .NET10
// Works in .NET11
internal ulong GetLongB() => MemoryMarshal.Cast<byte, ulong>(this)[0];
}
Workarounds
This pattern is likely incredibly rare, and easily addressed:
- Explicitly cast
thistoReadOnlySpan<T> - Remove
readonlyfrom the method (potentially undesirable for performance reasons)
- Lenguaje dominante
- C#
- Estrellas
- 18.4k
- Forks
- 5.8k
- Merge medio
- 2 d 19 h
- PR fusionados (30 d)
- 590
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dotnet/runtime
-
area-Setup untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
dotnet/runtime#137376 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
ImmutableSortedSet<T>.Builder: enumerating through IEnumerable<T> doesn't throw on modification and can return wrong itemsPosiblemente ocupada @aw0lid la tomó hace 3 días. Abiertoarea-System.Collections
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/runtime#137167 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
DbTransaction.SupportsSavepoints docs say Release/ReleaseAsync are expected to throw, but they are no-ops by designPosiblemente ocupada @alaricd la tomó hace 7 días. Abiertoarea-System.Transactions untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dotnet/runtime#137040 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
FileSystemGlobbing: Matcher throws ArgumentOutOfRangeException when the rootDir is the same value as the filePosiblemente ocupada @makazeu la tomó hace 7 días. Abiertoarea-Extensions-FileSystem
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/runtime#136989 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Configuration binder source generator emits unqualified List<T> when binding arrays without implicit usingsPosiblemente ocupada @makazeu la tomó hace 7 días. Abiertoarea-Extensions-Configuration bug source-generator
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/runtime#136972 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de dotnet/runtime
Issues similares
-
bug emitter:client:csharp
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
microsoft/typespec#12572 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
needs-area-label
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
AWS Lambda: KeyNotFoundException drops HTTP-triggered transactions when allowAllHeaders is disabledAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
newrelic/newrelic-dotnet-agent#3949 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area-networking
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/aspnetcore#70545 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
Los mantenedores suelen responder en 1 día