StructTypes encourage piracy
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- julia
- Área
- backend-api-design, tooling
Línea de trabajo
Revisa los métodos de StructTypes.StructType y los métodos de JSON3 mencionados en el issue, y compáralos después con el diseño propuesto de AbstractEncoder. Determina si los mapeos de structs específicos del encoder podrían evitar el type piracy sin romper a los usuarios existentes; se considera terminado cuando se haya producido un diseño acordado para una futura versión con cambios incompatibles.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Suppose I have a package, in which I need to serialize some data that contain a LongDNA{4}, but do not want to expose the private (non-documented) memory layout of LongDNA. In that case, I'd need to overwrite StructTypes.StructType(::Type{LongDNA{4}}) - or, alternatively, overwrite some JSON3 methods.
Both are type piracy, which can have rather bad consequences. For example, it's unknown to me if the user installs another package which also need to serialize LongDNA, but may choose to do it differently. In that case, my code may randomly malfunction.
I don't see a non-breaking way of getting around it, but perhaps it's worth considering for a potential breaking release in the future:
- This package defines a
struct AbstractEncoder end - Struct mapping is done by
StructTypes.StructType(::AbstractEncoder, ::Type{MyType}) - Default struct mapping can use
::AbstractEncoder directly. - Users can then subtype
AbstractEncoder, and create struct mapping using their own subtype.
- Lenguaje dominante
- Julia
- Estrellas
- 86
- Forks
- 21
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 JuliaData/StructTypes.jl
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
JuliaData/StructTypes.jl#104 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
JuliaData/StructTypes.jl#102 · 1 comentario ·
-
Register v1.11.0?Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
JuliaData/StructTypes.jl#98 · 2 comentarios · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
JuliaData/StructTypes.jl#96 · 1 comentario ·
-
`StructTypes.x` is not definedPosiblemente ocupada @sunoru la tomó hace 1122 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
JuliaData/StructTypes.jl#92 · 3 comentarios ·
Todos los issues de JuliaData/StructTypes.jl
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
SciML/PETScDiffEq.jl#196 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
SciML/Catalyst.jl#1571 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
SciML/Optimization.jl#1414 ·
Los mantenedores suelen responder en 1 día