StructTypes encourage piracy
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- julia
- Domínio
- backend-api-design, tooling
Direção de pesquisa
Revise os métodos de StructTypes.StructType e os métodos de JSON3 mencionados na issue e, em seguida, compare-os com o design proposto de AbstractEncoder. Determine se mapeamentos de structs específicos do encoder poderiam evitar type piracy sem quebrar os usuários existentes; considera-se concluído quando um design acordado para uma futura breaking release tiver sido produzido.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Julia
- Estrelas
- 86
- Forks
- 22
- Merge médio
- 1d 3h
- PRs com merge (30d)
- 4
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de JuliaData/StructTypes.jl
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
JuliaData/StructTypes.jl#104 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 30/100
JuliaData/StructTypes.jl#96 · 1 comentário ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
JuliaData/StructTypes.jl#76 ·
-
Default to OrderedStruct for NamedTuples?Talvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
JuliaData/StructTypes.jl#68 · 3 comentários ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
JuliaData/StructTypes.jl#56 ·
Todas as issues de JuliaData/StructTypes.jl
Issues semelhantes
-
lux
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100