Skip to content

v0.3.0

Compare
Choose a tag to compare
@github-actions github-actions released this 20 Feb 15:07
· 769 commits to master since this release
f8f5bc0

Polymake v0.3.0

Library updates

  • polymake binaries were updated to version 4.0r1 (released 19.02.2020)
  • Polymake.jl depends now on CxxWrap ^0.9.0 (released 29.01.2020)
  • polymake binaries link to SingularBuilder and FlintBuilder binaries.
  • Polymake.jl supports julia versions: 1.0, 1.1, 1.2, 1.3 and 1.4.

Breaking changes

  • constructors for big objects no longer support Pair{Symbol, Any} or Dict{Symbol, Any} arguments. The only supported syntax is through keyword arguments, i.e.
    polytope.Polytope(:POINTS => ...)
    needs to be replaced with
    polytope.Polytope(POINTS = ...)

Changes in exports

  • internal (small) types are no longer exported in order to facilitate the use of Polymake.jl within Oscar project.
  • Small types (the c++ wrapped structures) in Polymake.jl were renamed dropping the unfortunate pm_ prefix, so that:
    • pm_Matrix <: AbstractMatrix became Polymake.Matrix <: AbstractMatrix,
    • pm_Integer <: Base.Integer became Polymake.Integer <: Base.Integer, etc.
  • internal modules of Polymake.jl have been renamed to lowercase (matching polymake application names), i.e. Polymake.Tropical became Polymake.tropical.
  • those modules remain exported from Polymake.jl, i.e. upon using Polymake one can immediately call polytope.Cone(...).

To summarize: the only names exported from Polymake at the moment are: visual, application names and macros: @pm and @convert_to.

New features

  • All BigObjects from polymake (i.e. Cones, Polytopes, Fans, etc) gained the corresponding constructors with doc-strings attached, i.e. polytope.Polytope is an actual struct with constructors producing an instance of BigObject. Asking for @doc polytope.Polytope will bring polymake helpstring.

  • updated syntax for @pm macro. The rule of thumb is

    use @pm macro when julia throws UndefinedVariable error.

    Examples:

    • @pm polytope.Polytope(...) can be safely replaced by polytope.Polytope(...) (call to an actual constructor);
    • @pm polytope.Polytope{Rational}(...) can be safely replaced by polytope.Polytope{Rational}(...) (call to a parametrized constructor);
    • @pm polytope.Polytope{QuadraticExtension}(...) must use the macro, as QuadraticExtension is not a valid object in julia;
  • @convert_to PerlType argument calls common::convert_to<PerlType> function to help with the conversion of Polymake.jl return types.

  • New small types are wrapped and accessible from julia:

    • IncidenceMatrix <: AbstractMatrix
    • SparseMatrix <: SparseArrays.AbstractSparseMatrix
    • TropicalNumber <: Number
    • SparseVector <: SparseArrays.AbstractSparseVector
    • Polynomial (based on libsingular).
  • All Polymake.jl array-style containers (except IncidenceMatrix, which stores only Bools) support the following element types:

    • Int64 (pm::Int, aka long)
    • Float64 (dobule)
    • Polymake.Integer (pm::Integer)
    • Polymake.Rational (pm::Rational)

Known Bugs:

Diff since v0.2.2

Closed issues:

  • TODO List (#30)
  • Wrapping Polymake types (#142)
  • Segmentation fault in MILP computation (#144)
  • Visualizing of subdivision (#163)
  • Option to disable warnings (#165)
  • cleaning polymake_caller.cpp (#168)
  • BigObject name completion and help strings (#177)
  • List of all small types (#188)
  • @convert_to macro (#189)
  • prefer function (#193)
  • Sparse system tests flaky (#196)
  • Options for visual broken (#204)
  • gcc internal compiler error: Segmentation fault (#206)
  • BigObject from another BigObject (#214)
  • Wrapper Compilation Errors (#217)
  • Bug: IncidenceMatrix becoming SparseMatrix (#218)
  • shell execute errors upon showing the result (#223)

Merged pull requests: