Skip to content

Typesafe Coordinates and Reference Counting

Compare
Choose a tag to compare
@jblachly jblachly released this 02 Mar 22:37
· 52 commits to develop since this release
0f284df

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 and FORMAT 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

New Contributors

Full Changelog: v0.10.3...v0.13.3+htslib-1.13