Repository navigation
Open
Description
I think BioSequences has accumulated enough warts and cruft since its v3 release in 2022 that it warrants a new breaking release.
I do recognize that breaking changes are disruptive. However, given that migration can now be automated with an AI agent given a good migration guide, I think it's more important to get the semantics right.
This is a long term project. I do not expect this to land in 2026, and maybe not even in 2027. It's possible this will not land until Julia 1.15 (at which point it is likely Julia 1.14 has been declared LTS).
- Switch
LongSequenceandLongSubSeqtoSeqBuf,SeqViewandLongSeqas discussed in Discussion: MakeLongSequencefixed-length? #329. Maybe retain type aliasesLongSequenceandLongSubSeq. Back all these types byRefVectorfrom MemoryViews.jl - Review
geneticcode.jl. Drop theAbstractDictsubtype ofGeneticCode. Maybe expose the creator of genetic codes as public. We should not haveGeneticCode <: AbstractDict{UInt64, AminoAcid}#347 - Redesign the
AlphabetCodesystem and Kmer'sRecodingSchemeinto one coherent trait-based copying system. We probably want one dispatch mechanism (RecodingScheme) between source type and destination alphabet. This should also encompass a mechanism for opting into ASCII encoded alphabet types. This is related to Document BioSequence interface(s) #328 - Review functions taking
NucleicAcidAlphabetwhich makes assumptions that actually only hold forDNAAlphabetandRNAAlphabet, and restrict these signatures - Remove convert from BioSequence (Remove
convertfor biosequences #321) - Hide inner constructors (Hide inner constructors of objects in this package #318)
- Degrade Random to a weakdep (Consider making Random a weak dep #289)
- Resolve Design of hash(::BioSequence). What to do? #243 by making generic BioSequence not comparable and re-implementing hashing. Maybe look at
AbstractString's hashing in Base which is fast. Make the SeqBuf / LongSeq / SeqView comparable. - Review
majorityvoteandseqmatrix- do we want them? - Consider a thorough aliasing policy for BioSequences. How do we handle aliasing arguments?
- Expose this package to a thorough API review by an AI agent for suboptimal APIs that are candidates for change
Metadata
Metadata
Assignees
Labels
No labels
Activity
kescobo commentedon Sep 10, 2026
All of this seems sensible to me. Should we add a post on discourse / bring this up at the first Community Call?
In general, I agree that breaking changes to improve semantics is worth it, especially with good migration guide. That said, we don't want to be willy-nilly - I think #328 in particular is worth a long discussion to avoid churn down the road. #329 already has some good discussion, and I'm mostly on board, but might also be worth a bit more discussion