Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

StructTypes encourage piracy

Ouverte
#87 5 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JuliaData/StructTypes.jl

Toutes les issues de JuliaData/StructTypes.jl

Issues similaires

Plus d'issues Julia

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.