changes in version 1.6.5 (2023-10-23)

- add Python bindings for the `TypeChecker*` classes
- add Python bindings for `gt_gff3_in_stream_enable_tidy_mode()`,
  `gt_gff3_in_stream_check_id_attributes()` and
  `gt_gff3_in_stream_enable_strict_mode()`


changes in version 1.6.4 (2023-10-08)

- build compatibility improvements (e.g. newer clang, GCC 13.2)
- upgrade bundled zlib to v1.3.0.1
- remove text README
- adjust release documentation to new process
- avoid use of deprecated `File.exists?()` in Ruby


changes in version 1.6.3 (2023-09-19)

- bugfixes
  - `gt gff3 --sortlines`: address issues with pseudo-features and
    annotations unsorted in a specific way that broke sorting
  - deduplicate pseudo node roots
  - ensure validity checks are done for orphan (out of order) nodes
  - fix failing assertion in `repeat_region`s without `LTR_retrotransposon`s
  - fix quicksort segfault caused by integer overflows
  - support BED files with zero length blocks
- make `errorcheck` optional, no longer active by default
- unify Python byte/string handling
- various fixes to support newer compilers
- update website structure to reflect new GitHub-based release process


changes in version 1.6.2 (2021-06-23)

- use concurrent communication with hmmscan process
- make 'threads=yes' a default make option`
- extend line buffer for hmmscan output parsing in LTRdigest
- migrate CI to GitHub Actions
- remove unused license manager code
- various fixes to support newer compilers
- add Go bindings
- only warn when strand annotations conflict in LTRdigest
- add `feature_node.set_attribute()` and `genome_node.set_range()` to
  Python bindings


changes in version 1.6.1 (2020-01-08)

- Further extension of the C API.


changes in version 1.6.0 (2020-01-06)

- improve error handling in some tools
- C API has been extended significantly


changes in version 1.5.10 (2017-08-04)

- bugfixes and cleanups
- add Readjoiner output in GFA format
- improve building on GCC 7
- add arbitrary N values for `gt seqstat`
- install gtdata into $PREFIX/share/genometools by default
- improve robustness of test suite
- add Travis tests for Mac OS X
- `gt seed_extend` now speaks GFA2
- improvements to `gt seed_extend` w.r.t. runtime and
  output format
- new implementation of functionality for computing
  E-values for local alignments according to the
  Karlin-Altschul statistics


changes in version 1.5.9 (2016-07-21)

- bugfixes and cleanups
- update MD5 module to upstream version 1.2
- set verbatim dates in documentation files
- add support for GCC 6
- gtlua: complete GtRegionMapping bindings
- extend wording options for speck matchers
- add tabular output format for speck
- make unit tests compatible with Python 2.6
- improvements on `gt seed_extend'
- improve compatibility with Ruby <1.9.2
- several changes to build system (verbosity etc.)
- allow to sort sequences by header (`gt seqorder')


changes in version 1.5.8 (2016-01-06)

- bugfixes and cleanups
- change number of spaces in GFF3 header
- improve documentation of 'gt gff3 -checkids'
- change GenBank and EMBL parsers to name sequences after LOCUS/ID fields
- add Python 3 support for Python bindings
- make build reproducible
- allow speck templates to be given as files
- updated genetic code table to most recent NCBI revision


changes in version 1.5.7 (2015-09-11)

- bugfixes and cleanups
- optimizations within `gt condenseq create'
- `gt stat` shows generic type counts
- rework of TIRvish code
- allow execution of 'gt-<name>' user scripts in $PATH by calling
  `gt <name>' (git-style)


changes in version 1.5.6 (2015-06-21)

- many bugfixes and cleanups
- C API gt_assert() calls abort(3) instead of exit(3) in case of failure
- new Lua API methods added
- optional numeric sequence ID sorting


changes in version 1.5.5 (2015-03-24)

- bugfixes and cleanups
- multiple improvements to GFF3 parser
- `gt interfeat` handles top-level multi-features correctly
- PPT detection working again in LTRdigest
- additional input/output options for Lua stream bindings


changes in version 1.5.4 (2014-12-11)

- many small bugfixes and cleanups, see issue tracker on GitHub
- added full Lua support for custom visitors/streams
- extended feature node bindings for Lua
- parallelization for test suite
- improvements to GTF parser
- merge stream performance improved for many input files
- sequence mapping performance improved for `-matchdescstart' option
- add `-sortlines' parameter to `gt gff3' tool
- added template system and HTML/JSON output to `gt speck' tool
- many performance improvements to `gt speck'
- add SO API to `gt speck'
- add font selection options to AnnotationSketch style files
- Python bindings re-enabled on recent Mac OS X versions
- SQLite updated to 3.8.7.1
- `gt sequniq': do not filter out "palindromic" sequences. Before that a
  sequence which equals the reverse complement of itself was filtered out.
- improved interface for calling external blast
- `gt shredder': add option to have informative header for shredded elements


changes in version 1.5.3 (2014-06-13)

- many small bugfixes and cleanups
- Lua Range bindings extended
- Lua bindings for all node types added
- new option `-matchdescstart' to reduce ambiguity when matching seqids
- mtrying to match ambiguous seqids is an error now
- escaping of regex-relevant characters in `-matchdesc' and `-matchdescstart'
- improved LTRharvest X-drop code to fix a common bug (#323 and others)
- Ruby bindings extended and stability improved
- flanking whitespace is now no longer considered as part of a seqid
- improved support for platforms where char is unsigned
- shared library only exports symbols in _api.h headers (only on platforms with
  GNU ld)
- added `gt speck' tool for specification-based annotation checking (WIP)
- added `gt fastq_sample' tool to print samples by random choice from FastQ
- tidy mode for GTF parser added
- Improved robustness of GTF parser
- GtIntset classes and GtNREncseq added
- for more details see the GitHub issue tracker
  (https://github.com/genometools/genometools/issues)


changes in version 1.5.2 (2014-02-18)

- many bugfixes and cleanups
- options `-j' and GT_MEM_BOOKKEEPING now usable together in a multithreaded
  environment
- automatic man page building (`gt -createman') implemented
- LTRharvest seed extension now multithreaded , use `gt -j'
- LTRharvest internal pipeline restructured to be deterministic during
  multithreaded runs
- LTRharvest now considers transitively overlapping candidates in `-overlaps'
  option
- LTRharvest optionally outputs GFF3 on stdout for piping (option `-tabout')
- LTRharvest now outputs sequence IDs (optionally MD5 tagged, options `-seqids'
  and `-md5')
- LTRdigest now accepts `-seqfile(s)', `-regionmapping', `-encseq',
  `-matchdesc', `-usedesc' options
- LTRdigest now uses external hmmscan/hmmpress binaries, no HMMER code will be
  built into gt (licensing and redistributability reasons)
- LTRdigest output does not contain Pfam IDs anymore
- LTRdigest now assigns a strand to _every_ feature in element CC if possible
- LTRdigest code refactored for reusability
- added GtCompressedBitsequence, abstract GtWTree and implementation thereof
  GtWtreeEncseq
- further work towards native Windows compatibility
- C API: replace 'unsigned long long' by 'GtUint64'
- C API: replace 'uint64_t ' by 'GtUint64'
- C API: replace 'unsigned long' by 'GtUword'
- C API: replace 'long' by 'GtWord'
- C API: replace 'uint8_t ' by 'unsigned char'
- C API: replace 'long double' by 'double'
- the dependency on ncurses has been removed
- SQLite updated to 3.8.2 and removed from Gt amalgamation
- syntax checking for GFF3 Ontology_term, Dbxref and gap attributes has been
  extended
- testsuite now accepts an external randomization seed
- GtCheckBoundariesVisitor added
- GT_NO_FLOCK introduced to disable file locking
- formatted alignment output added
- support for Start_range and End_range GFF attributes added (v1.22)
- sortedness constraint for custom streams removed
- libtre now used for regular expressions
- GtFeature{In,Out}Stream added


changes in version 1.5.1 (2013-03-07)

- bugfixes and cleanups
- code generator script extended to create interface/implementation code
- reference counting in GtAlphabet is now thread-safe
- GtCodon, GtCodonIterator* now part of the API
- GtFile, GtFileUtils APIs extended
- GtDiscDistri now part of the API
- GtMD5Encoder, GtMD5Fingerprint now part of the API
- GtSeqIterator* now part of the API
- multithreading interface now part of the API
- GtTool, GtToolbox now part of the API
- GtTransTable now part of the API
- GtORFIterator now part of the API
- GtFeatureStream moved to extended/, independent of Cairo presence
- GtFeatureIndex and implementations moved to extended/, independent of
  Cairo presence


changes in version 1.5.0 (2013-02-05)

- bugfixes and cleanups
- development tool `gt sain' added to run an induced suffix array sorting
  algorithm
- the -typecheck option in the `gt gff3` and `gt gff3validator` tools now also
  validates parent (part-of) relationships, see -help output for details
- new option -encseq besides -seqfile(s) and -regionmapping to select a
  encseq index as a sequence source
- GtBioseq backend switched to GtEncseq
- GtSeqCol is now an interface, GtEncseqCol added
- GtRankedList added
- GtSNPAnnotatorStream and `gt snpper' tool added
- node sorting code is now aware of MD5 hash presence
- compatibility with old Pango versions inproved
- Lua updated to 5.1.5
- zlib updated to 1.2.7


changes in version 1.4.2 (2012-10-02)

- bugfixes and cleanups
- GFF3 parser now correctly handles GVF input
- GtMD5Encoder added
- GtRDB relational database wrapper added
- database-backed feature index implementation added (SQLite, MySQL)
- scripting bindings now support GtMetaNode and GtEOFNode
- AnnotationSketch now uses Pango instead of the Cairo toy API for font
  rendering
- `gt convertseq` tool has new options -contract{protein,dna}wc
- `gt select` tool can use custom filters defined in Lua
- `gt hop` tool added
- LTRharvest is more space-efficient using streaming of indexes
- LTR filtering, clustering and classification code added, used e.g. in the
  LTRsift software (http://www.zbh.uni-hamburg.de/LTRsift)
- match iterators for BLAST and LAST added
- CDS features with multiple parents are split in tidy-mode (if possible)
- changed format for MD5 sequence IDs:
  It now uses md5:063b1024d68e26716b7f38caf958316f:1877523 instead of
  md5:063b1024d68e26716b7f38caf958316f. That is, the ``original'' sequence ID is
  kept after the MD5 hash.
- `gt genomediff` tool has changed options and improved performance.
- added tools for compression of short reads (with quality, fastq) either
  direct: tool `gt compreads compress` or using a reference genome: tool `gt
  compreads refcompress`.
- improved running time and space requirements in suffix-prefix match
  computation
- `gt chain2dim` has new option -global all, allowing for computing all best
  chains rather than a single best chain
- add linear time functions to check the suffix array and the lcptable
- added radixsort as new method when sorting buckets of suffixes


changes in version 1.4.1 (2012-04-12)

- the GFF3 parser now handles children which are defined before their parents
- many small improvements to the GFF3 parser


changes in version 1.4.0 (2012-04-02)

- bugfixes and cleanups
- the tool `gt mutate` has been renamed to `gt seqmutate`. The same
  functionality is still available with `gt mutate` in order not to break
  existing scripts.
- `gt extractfeat` has new options -seqid and -target
- `gt suffixerator` has new options -lcpdist, -genomediff
- `gt readjoiner' toolbox added for sequence assembly
- `gt encseq encode' has new option -lossless
- `gt gff3 -tidy' recognizes and fixes more GFF3 errors
- test suite is now multithreaded
- added GtSamAlignment, GtSamfileIterator for SAM/BAM access
- added GtHuffman*, GtGolomb*, GtEliasGamma* for integer encoding
- added GtBit{In,Out}Stream
- further optimizations in GtEncseq
- ensure compatibility with GCC >=4.6 (as in Ubuntu oneiric)
- BSD-licensed implementation is now used in GtRBTree
- added GtRMQ class for efficient range minimum queries


changes in version 1.3.9 (2011-07-02)

- various bugfixes and cleanups
- fix option -translate in `gt extractfeat` tool
- mirroring and seqnum/filenum support added for gtruby/gtpython


changes in version 1.3.8 (2011-06-16)

- bugfixes and cleanups
- GtEncseq completed, Lua bindings added
- `gt encseq` toolbox added for encoded sequence handling
- `gt suffixerator` and `gt packedindex mkindex` have new option -memlimit
- `gt bed_to_gff3` has new options -o, -gzip, -bzip2 and -force
- `gt gtf_to_gff3` has new options -o, -gzip, -bzip2 and -force
- `gt splicesiteinfo` has new options -o, -gzip, -bzip2 and -force
- `gt eval` has new options -o, -gzip, -bzip2 and -force
- `gt gff3` has new option -show
- `gt gff3_to_gtf` has new options -o, -gzip, -bzip2 and -force
- file suffix of fingerprint tables has been changed from ".gt_bsf" to ".md5"
- file suffix of bioseq index files has been changed from ".gt_bsi" to ".bsi"
- file suffix of bioseq raw files has been changed from ".gt_bsr" to ".bsr"
- the tool `gt filter` has been renamed to `gt select`. The same functionality
  is still available with `gt filter` in order not to break existing scripts
- `gt id_to_md5` has new option -subtargetids


changes in version 1.3.7 (2011-01-28)

- bugfixes and cleanup
- `gt suffixerator` now creates ssp/des/sds tables by default


changes in version 1.3.6 (2011-01-07)

- `gt stat` has new options -addintrons and -cdslengthdistri
- the tool `gt bioseq` has been renamed to `gt seq`
- `gt seq` has new options -o, -gzip, -bzip2 and -force
- `gt stat` has new options -o, -gzip, -bzip2 and -force
- `gt extractfeat` has new option -width
- `gt splitfasta` has new option -width
- `gt sequniq` has new option -width
- `gt fingerprint` has new options -width, -o, -gzip, -bzip2 and -force
- `gt mutate` has new options -width, -o, -gzip, -bzip2 and -force
- `gt shredder` has new options -width, -o, -gzip, -bzip2 and -force
- `gt seqfilter` has new options -width, -o, -gzip, -bzip2 and -force
- `gt seqfilter` has new option -maxseqnum
- new tool `gt seqtransform` added
- `gt cds`, `gt extractfeat` and `gt splicesiteinfo` have new option -usedesc
- new tools `gt md5_to_id` and `gt id_to_md5` added
- `gt gff3` has new option -addids
- `gt stat` has new option -source
- `gt filter` has new option -source


changes in version 1.3.5 (2010-07-12)

- `gt gff3 -tidy` cleans up multi-features with different parents
- `gt stat` shows number of multi-features
- `gt gff3 -sort` joins sequence regions with the same ID
- `gt cds` has new options -minorflen, -startcodon, and -finalstopcodon


changes in version 1.3.4 (2009-11-19)

- majority: bug fixes, cleanups
- new tool `gt ltrdigest` added
- new tool `gt convertseq` added
- new tool `gt repfind` added
- track order can be specified in AnnotationSketch
- new gcc compatibility fixes
- CustomStream and CustomVisitor base classes allow implementation of new
  functionality in {Ruby, Python}


changes in version 1.3.3 (2009-07-10)

- new tool `gt interfeat` added
- new tool `gt mergefeat` added
- new tool `gt dupfeat` added
- `gt gff3 -tidy` cleans up features with duplicate attributes
- new tool `gt ltrdigest` added


changes in version 1.3.2 (2009-04-29)

- bug fixes and cleanup


changes in version 1.3.1 (2009-04-24)

- `gt extractfeat` has new options -o, -gzip, and -bzip2
- `gt splitfasta` has new option -numfiles
- new tool `gt sketch_page` added
- `gt sketch` has new option -flattenfiles
- bug fixes


changes in version 1.3.0 (2008-12-03)

- `gt bed_to_gff3` has new options -featuretype, -thicktype, and -blocktype
- `gt sketch` has new option -input
- many extensions and some changes to the C API. E.g., AnnotationSketch now
  allows one to define track selector functions and custom tracks.


changes in version 1.2.2 (2008-11-04)

- new tool `gt tallymer` added
- new tool `gt congruence` added
- the GenomeTools Python bindings (see gtpython/README) have been added
- new tool `gt bed_to_gff3` added


changes in version 1.2.1 (2008-11-03)

- bug fixes


changes in version 1.2.0 (2008-10-04)

- `gt shredder` has new option -sample
- `gt filter` has new options -targetbest and -maxgenescore
- `gt gff3` has new option -typecheck
- the GFF3 parser can handle embedded FASTA sequences
- `gt gff3` has new option -width to format embedded FASTA sequences
- new tool `gt gff3validator` has been added
- `gt view` has been renamed to `gt sketch`
- `gt gff3` has new option -tidy


changes in version 1.1.2 (2008-07-04)

- new tool `gt fingerprint` has been added
- new tool `gt shredder` has been added
- `gt stat` shows number of CDSs and protein-coding genes
- `gt filter` has new options -hascds, -contain, and -targetstrand
- `gt splitfasta` has new options -splitdesc and -force


changes in version 1.1.1 (2008-04-11)

- bug fixes


changes in version 1.1.0 (2008-03-20)

- `gt filter` has new optios -strand, -overlap, and -minaveragessp
- new tool `gt mgth` has been added
- new tool `gt seqfilter` has been added
- new tool `gt sequniq` has been added


changes in version 1.0.9 (2008-02-04):

- `gt extractseq` has new options -frompos and -topos
- bug fixes


changes in version 1.0.8 (2007-12-13):

- the GenomeTools Ruby bindings (see gtruby/README) have been added


changes in version 1.0.7 (2007-11-27):

- `gt view` has new option -addintrons
- `gt stat` has new option -exonnumberdistri
- `gt bioseq` has new option -seqlengthdistri


changes in version 1.0.6 (2007-10-19):

- new `gt extractseq` tool


changes in version 1.0.5 (2007-10-17):

- bug fixes


changes in version 1.0.4 (2007-10-15):

- `gt gff2` has new option -checkids (was the default behavior before)
- new tool `gt chseqids` added which replaces the option -chseqids of the
  `gt gff3` tool
- new `gt ltrharvest` tool
- new `gt splicesiteinfo` tool
- new `gt uniq` tool


changes in version 1.0.3 (2007-09-12):

- `gt view` can process multiple GFF3 files
- the interactive mode has been improved (multiple line input, command line
  editing, similar to the Lua interpreter)
- `gt gff3` has new option -offset
- `gt gff3` has new option -offsetfile
- `gt gff3` has new option -chseqids
- all tools which process GFF3 files can read compressed GFF3 files, if the
  ending is correct (i.e., '.gz' for gzip compressed files and '.bz2' for bzip2
  compressed files)


changes in version 1.0.2 (2007-08-29):

- `gt suffixerator` tool added
- `gt mkfmindex` tool added
- `gt uniquesub` tool added
- bug fixes
- new option -i added to `gt`


changes in version 1.0.1 (2007-07-17):

- undefined sequence-regions are added automatically
- new feature types added
- bug fixes


changes in version 1.0.0:

- `gt view` tool added (optional: compile with `make libgtview=yes`)
- `gt eval` has new options -ltr and -ltrdelta which allow to evaluate LTR
  retrotransposon predictions instead of gene predictions
- (from here on release numbers are synced with GenomeThreader)


changes in version 0.7.5:

- `gt splitfasta` runs faster and can process compressed files


changes in version 0.7.4:

- `gt gtf2gff3` has been renamed to `gt gtf_to_gff3`
- new tool `gt gff3_to_gtf` has been added


changes in version 0.7.3:

- new exercise `gt exercise linearalign` added


changes in version 0.7.2:

- `gt splitfasta` tool added


changes in version 0.7.1:

- compilation output shortened
- new functions added to libgtcore


changes in version 0.7.0:

- `gt eval` shows much more details
- `gt cds` has new options -seqfile and -regionmapping (interface change)
- `gt bioseq` can now read from stdin, too
- `gt bioseq` has new option -gc-content
- new tool `gt mutate` added
- libgt has been split up into libgtcore and libgtext


changes in version 0.6.9:

- `gt stat` has new options -exonlengthdistri and -intronlengthdistri
- `gt gff3` has new option -addintrons
- a singular environment object and a memory allocator have been introduced


changes in version 0.6.8:

- Lua has been imported into the source tree
- `gt extractfeat` has a new option -regionmapping
- `gt bioseq` can be used with more then one sequence file
- `gt filter` has a new option -seqid
- `gt filter` has a new option -maxgenenum
- the error() function has been removed
- the GFF3 parser handles additional attributes
