* 3.4 (Dec 13, 2018)
 - Evolutionary models
   - Add Doublet alphabet for RNA stems.
   - Add generic +mut_sel model modifier.
   + Add models x2, x2_sym, x2x2 for RNA stems.
   + Add RNA.m16a model for RNA stems.
 - Fixes
   - "--" should not become a single long dash (en-dash) in man pages.
   + Don't crash if --scale is set to a constant (e.g. --scale=1).
   - Allow reading (a,b):1.0; by ignoring the root branch length.
   + Properly translate newick labels with quotes or _.
   + Don't replace W with A in observed sequences unless --set infer-ambiguous-observed=true
 - Misc
   - Correctly log things inside a let binding.
   + Allow selecting character ranges from a file: "sequences.fasta:100-240,300-900"
   + Rename subsample to bali-subsample (to avoid conflicts with other software).
   + Install bali-phy-pkg.
   + Make BES package work again.
   + Reorganize fields on C1.log
   - Hold Numeric[k] or Doublets[DNA/RNA] alignments fixed.
   - Allow writing alignments every iteration.
   - tree-tool: add scaling, pruning, computing diameter, etc.
   - cut-range: allow selection samples from more than 1 alignment file
   - alignment-thin: clean up options and man page.
   - alignment-distances: new tool, add accuracy and recall metrics.
 - MCMC
   - Only compute probability *ratios*
     + Allow recovery from initial -infinity.
   - Improved mixing for [0,1] random variables.
 - Graphical model framework
   - Interpreted models now separate the likelihood from the prior in logged output.
   - Interpreted models (e.g. LinearRegression.hs) are now a lot faster.
   - Simplify constructing loggers.
   - Allow using poisson distribution.
 - Haskell
   - Allow "import modid ( .... )" and "import modid hiding ( .... )"
   - Add Data.JSON module
   - Implement quot, rem, div, mod.
   - Implement -X NoImplicitPrelude
   - Refactored functions out of Prelude into Data.List, etc.
   - Implement layout-sensitive parsing.
   - Implement pattern bindings (i.e. let (x,y) = E1 in E2)
   - Implement @-patterns (i.e. x@(y,z) )
   - Implement lazy patterns (i.e. ~(y,z)  )
   - Implement guards for functions and case.
   - Allow modules with no "module Name where" clause.
   - Implement running a module with --run-module
   - Encode strings as (listFromString String)
   - Add flags for dumping parsed, renamed, desugared, etc. code.
   - [FIX] float let out of let if it reveals a constant.

* 3.3 (Aug 6, 2018)
  - Fixes
    - make bp-analyze able to parse output files from 3.0-beta.
    - rename Goldman & Yang codon model to gy94 from incorrect yn94.
    - fix run file for f81 model.
    - fix incorrect LG model.
    - normalize WAG and LG standard frequencies.
  - Codon models
    - gy94 and mg94 now have no submodels and are rate matrices.
    - f1x4, f3x4, and f61 now compute named codon frequencies.
    - add gy94_ext and mg94_ext for using any nucleotide rate matrix.
    - add mg94k for mg94_ext[hky85]
  - Triplet models
    - fix up x3, x3_sym, x3x3
    - add +dNdS function so we can do e.g. hky85+x3+dNdS
  - Functions in models
    - Add new syntax function[x,...] for specifying models.
    - new functions map, zip, zipWith.
    - m1a,m2a,..,m8a_test,branch-site, etc. now take functions as arguments.
    - let-bind names for lambda-dependent arguments, but inside the lambda.
  - Model framework
    - +fe as synonym for +f[Frequencies.uniform]
    - +f and +gwF now take exchange models like wag as a submodel.
    - logging now returns an object that can change shape dynamically.
    - function calls can now look like f[g[x],y] instead of just f[x,y]
    - arguments now referenced with @arg to fix function[x,add[x,x]]
    - fixes to unification and constraints.
    - suppress gamma:shift and exponential:shift
  - Haskell
    - modules can now re-export imported modules.
    - refactor module SModel into SModel.Codons, SModel.ReversibleMarkov, etc.
    - remove hky85', etc now that models can call hky85 directly.
    - add lazy IO
    - make sampling in the Random monad lazy
    - correctly set rates in sample'
    - do normal 0 1 => do sample $ normal 0 1
  - Docs
    - Reorganize docs on substitution models.
    - Move docs on partitions to new section.
  - Etc
    - Allow specifying alphabet for --print.
    - Allow running gy94 from --print.
  - Testing
    - Find out why different package disagree on wag+f[wag_freq]

* 3.2 (Jun 25, 2018)
  - Fixes
    - Increase test timeout for internal testsuite and testiphy.
    - HTML report: don't hide header behind top-bar in Chrome.
  - alignment-smc improvements.
  - change alignment-diff back to red
  - Add NEWS file.

* 3.1.5 (Jun 13, 2018)
  - Fixes
    - Make all programs use shipped libstdc++
    - Make MDS plots handle bp-analyze --subsample
    - Increase test timeouts
    - Correctly write initial alignment for fixed alignment partitions.
    - Don't write "file:" for MDS URLs in HTML report
  - Help
    - Print citations with pmid and pmcid in help.
    - Print help for 0-argument functions like 'dna'
    - Improve help for fMutSel and fMutSel0
  - Add Frequencies.uniform[] function.
  - Make SEV handle site-compression.
  - HTML report: print version number + lots of cosmetic improvements.
  - Add new tool tree-tool (and map page, etc.)
  - Change alignments-diff highlight color back to red.
  - Clean up DP matrix code.

* 3.1.4 (Jun 9, 2018)
  - Fix prior on alpha in Rates.gamma

* 3.1.3 (Jun 9, 2018)
  - Fix mean_length prior in RS05 model.
  - Add some more color-schemes for drawing alignments-diff output.
  - Add ferns exon/intro data set.

* 3.1.2 (May 6, 2018)
  - Fix a testsuite bug
  - Haskell
    - parse exports list

* 3.1.1 (May 5, 2018
  - Fixes
    - Don't require testiphy
  - Print priors on models in their own section.

* 3.1 (May 2, 2018)
  - Fixes
    - Build alignment-thin and alignments-diff
  - Show model and priors readably
  - bali-phy accepted into Debian
  - Change 'logp' => 'posterior'

* 3.0.2 (Mar 10, 2018)
  - Docs
    - man pages for bali-phy and tools
    - man pages online

* 3.0.1 (Mar 6, 2018)
  - Fixes
    - Fix crash in alignment-thin

* 3.0 (Feb 12, 2018)
  - Models
    - Mixture models now work.
    - MultiRate[model,dist,n_bins] also works
    - let[var=E1,E2] now works
    - Rename RA[a] to RevCTMC[a]
    - Stop representing integer, double, and bool as strings.
  - Report
    - subsample trees when running trees-distances for MDS plot
  - Docs
    - Add help for more functions.
  - MCMC
    - Implement SPR+A
    - Destroy SPR_by_NNI with fire.

* 3.0-beta6 (Jan 5, 2018)
  - Fixes
    - Make sorting of DP:rates and M3:omegas work again.
    - sample branch lengths from prior -- fixes very long initial tree.
  - specify branch lengths as a List[Double]
  - Models
    - Make lists into a collection of Cons[ ] functions.h
  + Speedup on 25-muscle because we aren't proposing the branch lengths badly
  - Eliminate compiler warnings.
  * Print expressions
  - Allow non-modifiable branch lengths if we aren't doing MCMC.
  - Improve pre-burnin
  - read parameter values as json
  - write out run parameters as json.
  - Improve help, add help for more functions.
  * stop finding branch lengths by parameter name
  * stop finding scales by parameter name
  * print parameter values that are data structures
  * meson build infrastructure
  * Read json using nlohmann::json
  * Switch to new ptree structure.

3.0-beta5 (Dec 6, 2017)
  - Fixes
    - Don't crash on --smodel=GTR+x3
  - Short parameter names
  - Add --link option.
  - Complain if linking non-existant attributes.
  - Logging
    * Logging of [(String,a)]
    * Rationalize logging of frequencies and exchangabilities
    * DirichletOn prior for frequencies and exchangabilities.
  * Loading functions from files.
  - Allow expressing the branch length prior in terms of the tree.
  - Automatically convert integers to double when needed, and hide the conversions.
  - Help
    - Make simple|advanced|expert|(developer) options.
    - Help for all commands.