Changelog

=== Polymake 3.2 ===

-- distribution --
 * build system changed to ninja
 * support gcc 7 and clang 5
 * support for perl 5.26 and blead up to 5.27.7
 * tutorials available as jupyter notebooks

-- interfaces --
 * new python interface to callable library (thanks Sebastian Gutsche)
 * new jupyter-kernel interface (thanks Sebastian Gutsche)
   - threejs visualization now working again in jupyter
 * libnormaliz:
   - update bundled version to 3.5.0
	- support preexisting installation (version >= 3.1.0)
 * cdd and lrs: support debugging output
 * lrs: fix segfault with non-quiet lrslib
 * ppl: requires version >= 1.2
 * soplex: requires version >= 2.2.1
 * callable library: major improvements for emulating command line

-- general --
 * fixes and improvements for various visualization methods

-- common --
 * many improvements in polyDB interface including new database format
 * new substitute method for polynomials
 * replace rgb.txt by perl optional module Graphics::ColorNames
   - polymake includes a short list of fallback colors now
 * induced group actions on arbitrary containers

-- fan --
 * rename SymmetricFan to PolyhedralFan and incorporate SymmetricFan's properties there
 * fixes in regularity checks
 * new property PSEUDO_REGULAR

-- graph --
 * several fixes for props::Graph

-- group --
 * fixes for linear_symmetries
 * improved support of matrix group actions
 * rename MATRIX_GROUP_ACTION and MatrixGroupAction to MATRIX_ACTION and matrix_action, respectively

-- polytope --
 * fixed parser for LP file format
 * new property MAHLER_VOLUME for Polytope
 * new client for reduced 3-polytopes
 * user method Polytope::VISUAL now takes Transformation and Offset as optional arguments
 * zero vectors in input properties throw an exception
 * major refactoring of VoronoiDiagram
 * groups added to several basic constructions
 * improved support for root systems
 * beneath_beyond support for non-full-dim / non-pointed cases

-- topaz --
 * new big object type HyperbolicSurface
   - encoded via an doubly connected edge list

-- tropical --
 * tropical double description method
 * feasibility check for tropical linear inequality systems
 * several improvements to and refactoring of basic clients


=== Polymake 3.1 ===

-- distribution --
 * polymake now requires C++ 14 to compile, in particular we need gcc >= 5 or clang >= 3.4 and perl >= 5.16.
 * support for perl 5.24.
 * fix endianness issue and update struct magic_state (thanks Jerry James)
 * support for gcc 6 and clang up to 4.0.
 * workaround for compile error under clang 3.8 / xcode 7.3.
 * fix incompatibility of the Integer type with libnormaliz on 32bit platforms.
 * fix several other minor compilation issues.
 * ship test-driver to allow example-code to be tested in the distribution
 * boost is now required for the polymake core (for permlib)
 * perl module Term-ReadKey is now a requirement

-- interfaces --
 * include beta jupyter-polymake kernel (thanks: Sebastian Gutsche)
 * include nauty interface in minimal tarball.
 * warn when neither bliss nor nauty are enabled.
 * polydb interface is now in the polymake core
 * updated bundled permlib to 0.2.9
 * improved interfaces for permlib and sympol:
   - both have (experimental) support for using non-bundled installations
   - permlib is now a core requirement
   - bundled:group disbanded into bundled:sympol / core functionality
   - bundled permlib headers are now installed with polymake unless external permlib is used
 * improved handling of matrices with zero cols xor zero rows in convex hull interfaces
 * improved singular configuration to support pkg-config (e.g. on Ubuntu)

-- general --
 * polymake can now generate xml schemes and validate the data files against those
 * completely refactored Polynomial related data types:
   - rings are now uniquely identified by coefficient type, exponent type and number of variables
   - variable names are only used for pretty printing and parsing (and can be customized)
   - improved parser for polynomials
   - types Monomial, Term and Ring are gone
 * improved visualization with graphviz and ThreeJS.
 * new and improved visualization client svg.
 * basic support for output of 3-polytopes in STL file format (common in 3d printing).
 * new mechanism for "twin" properties (such as Matroid.DUAL).
 * many more example code fragments, in particular for construction of big object types.
 * improvements for map and set types:
	- only accept ordered types as keys / elements
 * various bugfixes and code optimizations.
 * fixes for find_permutation with unordered types
 * fixes for the TikZ visualization:
   - for drawing PointConfigurations.
   - for drawing lattice points in polytopes.
   - for drawing subobjects
 * fixes in singular value decomposition

-- fan --
 * new big object types SubdivisionOfPoints and SubdivisionOfVectors.
 * new subobject SubdivisionOfPoints.TIGHT_SPAN with method VISUAL_METRIC_TIGHT_SPAN for metric tight spans.
 * new functions metric_extended_tight_span and metric_tight_span
 * new client to compute the k-skeleton of a fan
 * secondary_cone is now a method of SubdivisionOfVectors.
 * improved heuristics for planar nets of 3-polytopes.
 * improved visualization for fans
 * fix in regularity client (thanks: Sebastian Gutsche).
 * another fix in regularity client.
 * fixed issues with empty matrices

-- graph --
 * completely rewritten and modularized Hasse diagram data types and functions
 * new client all_spanningtrees, which finds all spanning trees in a connected graph.
 * new properties for bi-,weak and strong connectedness of a (directed) graph.
 * new property EIGENVALUES_LAPLACIAN, containing the eigenvalues of the discrete Laplacian of a graph.
 * new client for graph homomorphisms
 * fixes in hungarian method and tropical::tdet


-- group --
 * major refactoring of symmetries on objects:
   - new big object types Action, PermutationAction, PermutationActionOnSets, ImplicitActionOnSet, MatrixGroupActionOnVector.
   - objects with symmetries now contain multiple subobjects of type Group, which in turn can contain different kinds of Actions as properties.
 * boost_dynamic_bitset replaced with polymake Bitset

-- ideal --
 * new client pluecker_ideal, computing the Plücker ideal of the Grassmannian.
 * new property INITIAL_FORMS in Ideal.

-- matroid --
 * refactoring of dual matroids:
   - each matroid has a twin property DUAL, which is a matroid again.
   - there are various rules, which compute properties in a matroid from its dual.
 * new big object type ValuatedMatroid.
 * added many new properties to Matroid: AUTOMORPHISM_GROUP, CATENARY_G_INVARIANT, G_INVARIANT, IDENTICALLY_SELF_DUAL, LAMINAR, LATTICE_OF_CYCLIC_FLATS, N_CONNECTED_COMPONENTS, N_CYCLIC_FLATS, N_FLATS, NESTED, SELF_DUAL, SIMPLE, SPLIT, SPLIT_FLACETS, SPARSE_PAVING, TRANSVERSAL, UNIFORM.
 * various clients for matroid operations: various lifts and extensions, truncation, union, intersection.
 * replaced client "oxley_matroids" by client "special_matroids", where matroids can be selected by name.
 * matroids can now be defined via their flats or cyclic flats.

-- polytope --
 * updated bundled extension libnormaliz to version 3.1.3.
 * new properties in Polytope for excess vertex and facet degree.
 * new client face to create Polytope from a face of a polytope
 * new visualization for cones
 * revived OrbitPolytope type as object specialization PointOrbit
 * improved handling of matrices with zero cols xor zero rows
 * improved initial rules for polytopes and cones
 * improved computation of separating hyperplanes, which allows for weak separation as well.
 * improved computation of whether a point lies in (the interior of) a polytope. In particular, this works now for generic polytopes, not just over the rationals.
 * removed Object TightSpan. Functionality is now in fan:
   - moved functions min_metric, max_metric, thrackle_metric into application fan.
   - splitstree is moved to fan as a userfunction
 * fix for degenerate hypersimplices (thanks: Charles Wang).
 * fixes for solving LPs with lineality
 * fixes in TOPCOM interface.
 * fixed loading of old data files with OrbitPolytope and SymmetricPolytope

-- topaz --
 * homology can be computed for arbitrary chaincomplexes, represented by their boundary matrices.
 * new clients for computing Vietoris-Rips complexes and filtrations.
 * new client for computing persistent homology, both over arbitrary fields and the integers.
 * new function to compute boundary matrices of simplicial complexes
 * new function to compute betti numbers of chaincomplexes and simplicial complexes
 * added property VERTEX_MAP for subcomplexes (e.g. BOUNDARY)
 * various fixes and improvements regarding subcomplexes

-- tropical --
 * renamed tropical::Cone to tropical::Polytope.
 * new clients for tropical distance, perimeter, Cramer's rule and variants of the determinant.
 * new clients for computing the star of a cycle in bundled extension atint.
 * new big object type MatroidRingCycle in bundled extension atint, which represents linear combinations of matroid fans.
 * new client for computing tropical linear spaces of arbitrary valuated matroids.
 * refactoring of function linear_space


=== Polymake 3.0 ===

-- distribution --
 * support for libc++
 * better support for compiling on MacOS X
 * support compilation with C++11 enabled
 * fix for gcc-5.x
 * fix rare build issues
 * support for perl 5.22
 * fix build issue with gmp-6.1
 * fixes for build-reproducibility

-- general --
 * significant improvement in rule scheduling
 * examples for various properties and clients:
     - in online help
     - in HTML documentation
     - focused on application polytope
 * various bugfixes and improvements, especially in documentation and visualization
 * fixes and improvements in TAB-completion and F1-help
 * merge github pull #2 (fix -Werror=format-security issues)
 * fix jReality visualization on various Intel HD Graphics (updated jogl)
 * fix jReality startup issues

-- common --
 * add new coordinate type PuiseuxFraction
 * new client for Hermite normal form
 * basic numerical linear algebra for double coordinates:
     - new client for QR-decomposition
     - new client for singular value decomposition
     - better solving of linear systems with double coordinates
 * improvements for FacetList type
 * matrix element access now via ->elem(,)

-- fan --
 * new client planar_net, including visualization and flaps generation
 * new clients for dual fans of graph associahedra and manipulating tubings
 * new objects SubdivisionOfPoints and -Vectors:
	  - some refactoring of related properties

-- group --
 * refactored orbit and group action
 * new client for generic orbit computations
 * improvements / fixes for linear symmetries computation

-- matroid --
 * new client for rank of arbitrary sets
 * new client for minimum weight bases
 * new client for free extensions
 * new property transversal_presentation
 * new property splitting_flacets
 * fixed bug in check_basis_exchange_axiom

-- polytope --
 * clients for all Johnson solids:
     - with correct combinatorics
     - many with exact QuadraticExtension or Rational coordinates
 * clients and wrappers for Platonic, Archimedean and Catalan solids
 * new client to count triangulations for 2-dim. point configurations (Alvarez,Seidel)
 * new client long_and_winding
 * new client goldfarb_sit
 * new client for lattice width
 * new client for decomposing a polytope into direct summands
 * LatticePolytope is now a specialization of Polytope instead of a separate type
 * renamed several integer programming related clients to fractional_
 * fixed some problems with Minkowski sum client
 * wythoff client now produces maximally symmetric polytopes whenever possible, i.e. except for G2
 * fixes for h^*-vector and Ehrhart polynomial computation

-- topaz --
 * new client random_discrete_morse, used for improved heuristic sphere recognition
 * new header tools for dealing with posets (construction, homomorphisms, etc)
 * new properties UNIMODULAR and  N_UNIMODULAR for GeomertricSimplicialComplex
 * renamed P_sum_triangulation client to sum_triangulation and improved functionality
 * new auxiliary clients for supporting sum-triangulations

-- tropical --
 * Major refactoring:
     - new object type Cycle, based on polyhedral complex
     - templated hypersurface client for Min/Max
     - renamed TropicalPolytope to Cone
 * added atint as a bundled extension for tropical intersection theory
 * added support for infinite coordinates
 * new client covector
 * new data type CovectorLattice
 * cleanup of obsolete functionality

-- interfaces --
 * new interface to LP-solver SoPlex 2.2.0
 * update lrs to 6.0
 * update cdd to 094h
 * update nauty to 2.5r9
 * update libnormaliz to 3.0.90
 * update threejs to 73
 * singular:
     - division of polynomials by ideals
     - contains monomial test
     - access to singular polynomials as matrix / vector pair
 * sympol:
     - convex hull computation up to symmetry now supports ppl
 * improvements in TOPCOM interface
 * normaliz2 file based interface removed


=== Polymake 2.14 ===

-- General --
 * support for perl 5.20
 * support for MacOS 10.10 (Bundle)
 * utf-8 encoding for java build recipes (merges github pull request #1)
 * libpolymake improvements
 * fixed equal_bases (thanks to ChoF @polymake-forum)
 * new client for hadamard product of matrices
 * many minor bugfixes and improvements
 * documentation improvements
 * substantial further modularization of configuration and installation

-- fan --
 * new client for product of fans
 * new client for mixed subidivions
 * proper handling of empty and trivial fans

-- graph --
 * new client for Johnson graphs
 * new client for the complement of graphs

-- group --
 * new client for converting action on columns to action on rows

-- matroid --
 * new properties for matroids
 * renaming of some properties (e.g. POINTS is now called VECTORS)
 * lattice of flats
 * improvements on basis exchange test
 * new client for direct and 2-sum
 * new client for parallel and series extensions
 * new client for lexicographic extensions
 * new client for modular cut check
 * computation of circuits via 4ti2

-- polytope --
 * added vector configurations
 * lp2poly returns a polytope with rational coordinates by default instead of float coordinates
 * new client for cayley embeddings
 * new client for regular simplex and fano simplex
 * new client for weighted digraph polyhedron
 * new client for archimedian solids
 * new client for quotient of triangulations
 * new client for del Pezzo and pseudo del Pezzo polytopes
 * corrected handling of COORDINATE_LABELS in print_constraints
 * added flag for computing the outer normal cone
 * added combinatorial versions of product and join
 * added E6 and E7 to wythoff client
 * new script for converting boolean circuits to polytopes
 * new script 'analyze_this'. Creates a .tex file with basic information about a polytope

-- topaz --
 * new client for calculating a P-Sum-Triangulation
 * new client for independence complex of a matroid

-- tropical --
 * new coordinate type TropicalNumber

-- visualization --
 * new visualization backend: ThreeJS (view in browser)
 * improvements in TikZ and Sketch interfaces
 * TikZ supports face lattices (it is the new default)
 * visualization for unbounded polyhedra
 * fixes in fan visualization

-- interfaces --
 * singular interface:
     - compatibility
     - support for more term orders
 * libnormaliz interface updated to v2.12.2
 * TOSimplex: OpenMP support and other improvements
 * interfaces of cdd and lrs:
     - moved to bundled extensions
     - support for external cdd and lrs installations

=== older versions ===
see http://polymake.org/doku.php/news
