Typesafe Coordinates and Reference Counting
jblachly
released this
02 Mar 22:37
·
52 commits
to develop
since this release
This release involves breaking changes to the D API: Typesafe Coordinates (manuscript forthcoming; see https://github.com/blachlylab/typesafe-coordinates) are used throughout the entire interface to eliminate off-by-one errors.
New features since 0.12.0:
- Support htslib 1.13, 1.12, and 1.11 (including all new functions available through 1.13)
- Moved all wrapper structs (SAM/VCFFile; SAM/VCFReader/Writer, CIGAR, TagValue, etc.) to reference counted with automatic memory cleanup when out of scope
- This uses new HtslibMemory wrapper struct with transparent pointer aliasing if you are feeling dangerous
- Typesafe Coordinates (https://github.com/blachlylab/typesafe-coordates/)
- Typesafe Coordinates is a subpackage, so you can use
dhtslib:coordinates
without needing htslib! - The entire D side of the package (i.e. all high level interfaces, but not not the C bindings) take and/or receive typesafe coordinates.
- Integration of the GFF3D (https://github.com/blachlylab/gff3d) GFF3 reader package; add writer
- BED reader/writer (again, you guessed it, using typesafe coordinates)
- Remove GC allocation from coloration of log messages
- Markedly improved test coverage
- VCF:
INFO
andFORMAT
field getters and setters, along with structs to represent and convert those data - Support
-dip1000
compilation - Marked many D side functions as one or more of
@safe @nogc nothrow pure
- Marked the most of C htslib bindings as
@nogc nothrow
; some also@system
- Made some ranges (like BAM
RecordRange
) a forward range for better Phobos range API compat - FASTA faidx
opDollar
(i.e.,fai["chrom1", 1 .. $]
) indexing
Bugfixes
- Many and sundry
- Tabix bugfixes
- Random buffer overflows
- Rare early-deallocation errors with reference counted wrapper structs
What's Changed
- Initial support for SAMReader["chrWHATEVA", x .. $] by @jblachly in #50
- changes to qscore functions by @charlesgregory in #53
- Cigar and md changes by @charlesgregory in #58
- Bgzf reader by @charlesgregory in #28
- htslib 1.12 compatibility by @charlesgregory in #79
- CoordinateSystem Implementation and Adoption by @charlesgregory in #71
- Other file formats by @charlesgregory in #80
- Fix typo in readme by @thewilsonator in #83
- apt-get update github actions by @jblachly in #87
- Remove GC allocation from coloration of log messages by @thewilsonator in #84
- htslib 1.13 compatibility by @charlesgregory in #90
- Coordinate system improvements by @charlesgregory in #88
- VCF Overhaul by @charlesgregory in #105
- Htslib package changes by @charlesgregory in #109
- Coordinate subpackage by @charlesgregory in #111
- Reference Counting fixes and consolidation by @charlesgregory in #108
- Release v0.13.3+htslib-1.13 by @charlesgregory in #113
New Contributors
- @thewilsonator made their first contribution in #83
Full Changelog: v0.10.3...v0.13.3+htslib-1.13