StructTypes encourage piracy
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- julia
- Domaine
- backend-api-design, tooling
Piste de recherche
Examinez les méthodes de StructTypes.StructType et les méthodes de JSON3 mentionnées dans l’issue, puis comparez-les à la conception proposée d’AbstractEncoder. Déterminez si des mappings de structs spécifiques à l’encoder pourraient éviter le type piracy sans casser les utilisateurs existants ; le travail est considéré comme terminé lorsqu’une conception acceptée pour une future breaking release a été produite.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Julia
- Étoiles
- 86
- Forks
- 22
- Merge moyen
- 3 j 22 h
- PR mergées (30 j)
- 5
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JuliaData/StructTypes.jl
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
JuliaData/StructTypes.jl#104 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 30/100
JuliaData/StructTypes.jl#96 · 1 commentaire ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaData/StructTypes.jl#76 ·
-
Default to OrderedStruct for NamedTuples?Peut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaData/StructTypes.jl#68 · 3 commentaires ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
JuliaData/StructTypes.jl#56 ·
Toutes les issues de JuliaData/StructTypes.jl
Issues similaires
-
io
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
-
docs
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
JuliaGPU/GPUArrays.jl#837 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour