* changed how CISPEP is stored: previously, it was assumed that a link between two residues is either TRANS or CIS; if the residues have atoms with alternative conformations, both link types can be present at the same time
* riding hydrogens: previously, hydrogens had the same altlocs as the parent atom; now if the parent atom has a single conformation, but it has neighbors in multiple conformations, the hydrogens will be also added in multiple conformations
* major changes in NearestNeighbor: now it's possible to search atoms not only in the first nearest [cells][1], but in any number of nearest cells; find_nearest_atom() was changed to find, by default, a nearest atom within any distance
* changes in Mtz.reindex(), primarily to fix determination of the new space group
* gemmi-convert: added option --all-auth to write `_atom_site.auth_atom_id` and `auth_comp_id`, which are skipped by default (because they are always the same as label_…_id)
* added more options to gemmi-rmsz, gemmi-xds2mtz, gemmi-cif2mtz
* fix a recent regression in check_polymer_type(): RNA was returned instead of DNA
* improved heuristic of detecting where the polymer ends (if TER record is missing)
* selection syntax: fix parsing a single sequence id such as "A/208" (it was parsed as A/208-/)
* removed SMat33::calculate_eigenvector() – use eigen_decomposition() instead; SoftwareItem::pdbx_ordinal; NeighborSearch::Mark::x,y,z (use ::pos)
* more code was moved from headers to src/*.cpp
[1]: https://en.wikipedia.org/wiki/Cell_lists