1- Version 1.16.0
2- --------------
1+ Version 1.16.0 (5th May 2026)
2+ ==============
33
4- This release is not ABI compatible with 1.15.x, and loses some API
5- compatibility too. All BAM and CRAM I/O is now performed via htslib,
6- which is a newly added dependency. This change was made due to recent
7- CRAM security fixes in htslib and the desire to no longer support two
8- independent CRAM implementations. However with this comes a loss of
9- some functionality.
4+ INCOMPATIBILITY: this release is * not ABI compatible* with 1.15.x, and
5+ loses some API compatibility too. All BAM and CRAM I/O is now
6+ performed via htslib, which is a newly added dependency. This change
7+ was made due to recent CRAM security fixes in htslib and the desire to
8+ no longer support two independent CRAM implementations. However with
9+ this comes a loss of some functionality.
1010
1111For SAM, BAM and CRAM support we would encourage developers to upgrade to
1212using htslib natively as this is the package with significantly better
1313support and is better tested.
1414
15- API visible changes:
15+ API visible changes
16+ -------------------
1617
1718* io_lib/cram_bambam.[ch] and the CRAM_IO_CUSTOM_BUFFERING definitions have
1819 been removed. This means the libmaus2 / biobambam2 API has been removed.
@@ -74,7 +75,8 @@ API visible changes:
7475 https://github.com/samtools/htslib/.
7576
7677
77- Internal changes:
78+ Internal changes
79+ ----------------
7880
7981* While htslib's header API was derived from the original API in io_lib, it
8082 does not expose all of the functions that io_lib did. This means we have
@@ -94,15 +96,11 @@ Internal changes:
9496 this for some file formats.
9597
9698
97- Benchmarks:
99+ Benchmarks
100+ ----------
98101
99102Some benchmarks on 10 million NovaSeq alignments follow. Values are
100103real (elapsed), user CPU and system CPU times in seconds.
101- Conversions to uncompressed BAM (BAMu) are demonstrative of read-only
102- times, while BAM to ??? format conversions are indicative of write times
103- (given a fixed cost of decoding the input BAM which can be deduced from
104- BAM->BAMu).
105-
106104
107105Reading:
108106 0 threads
@@ -145,6 +143,110 @@ variable in the reading tests), SAM and BAM writing are broadly comparable
145143to before (using libdeflate) while CRAM writing is significantly faster.
146144
147145
146+ External function names removed
147+ -------------------------------
148+
149+ Note: most of these should have been declared as static and were
150+ never intended for public use.
151+
152+ There are many more functions which are absent from this library but
153+ are now inherited via htslib. However we have not validated the API
154+ is the same, so the functionality will exist but the code may still
155+ needing changing.
156+
157+ BAM:
158+ bam_close
159+ bam_copy
160+ bam_get_seq
161+ bam_next_seq
162+ bam_open
163+ bam_open_block
164+ bam_put_seq
165+ bam_set_option
166+ bam_set_voption
167+ bam_write_header
168+ bgzf_decode_thread
169+ bgzf_encode_thread
170+
171+ CRAM:
172+ add_read_names
173+ cram_allocate_encoder
174+ cram_block_method2str
175+ cram_deallocate_encoder
176+ cram_decode_TD
177+ cram_default_version
178+ cram_dependent_data_series
179+ cram_encoder_get_fd
180+ cram_enque_compression_block
181+ cram_index_load_via_callbacks
182+ cram_init_varint
183+ cram_io_allocate_output_buffer
184+ cram_io_close
185+ cram_io_deallocate_output_buffer
186+ cram_io_flush_output_buffer
187+ cram_io_input_buffer_fgets
188+ cram_io_input_buffer_read
189+ cram_io_input_buffer_seek
190+ cram_io_input_buffer_underflow
191+ cram_io_open
192+ cram_io_open_by_callbacks
193+ cram_io_openw_by_callbacks
194+ cram_io_output_buffer_putc
195+ cram_io_output_buffer_write
196+ cram_mem_write_callback
197+ cram_nop_decode_reset
198+ cram_open_by_callbacks
199+ cram_openw_by_callbacks
200+ cram_process_work_package
201+ cram_stats_dump
202+ cram_stats_qual
203+ expand_cache_path
204+ expected_template_count
205+ generate_consensus
206+ int32_decode
207+ int32_encode
208+ int32_put
209+ itf8_size
210+ load_ref_portion
211+ lossy_read_names
212+ refs_load_fai
213+ safe_itf8_put
214+ safe_ltf8_put
215+
216+ Misc:
217+ mkdir_prefix
218+ paranoid_fclose
219+ scram_input_bam_block
220+ scram_open_cram_via_callbacks
221+
222+ Thread pool:
223+ t_pool_delete_result
224+ t_pool_destroy
225+ t_pool_dispatch
226+ t_pool_dispatch2
227+ t_pool_flush
228+ t_pool_init
229+ t_pool_next_result
230+ t_pool_next_result_wait
231+ t_pool_results_queue_empty
232+ t_pool_results_queue_len
233+ t_pool_results_queue_sz
234+ t_results_queue_destroy
235+ t_results_queue_init
236+
237+ New external functions added
238+ ----------------------------
239+
240+ bam1_to_bam_seq
241+ bam_seq_to_bam1
242+ sam_hdr_convert
243+ sam_hdr_convert_to_htslib
244+ sam_hdr_nref
245+ sam_hdr_ref2len
246+ sam_hdr_ref2name
247+
248+
249+
148250Version 1.15.1 (14th July 2025)
149251--------------
150252
0 commit comments