Polymake.jl-0.5 release
29 Aug 2020Polymake.jl
v0.5.0 has been released!
The main and show-stealing reason to bump the major version is the transition of Polymake.jl
from BinaryBuilder
dependencies to modern Julia artifacts system. Thanks to the transition there is literally no compilation happening during add Polymake
and all our libraries should be shining and working with each other.
A huge round of applause is due to @benlorenz, who single-handedly cross-compiled perl
for MacOsX on a MIPS router dev-board to make this happen. Without him, nobody would dare to look into the eyes of the beast.
Happy coding,
on the behalf of polymake Team,
Marek
Note:
The package has been split into Julia-only Polymake.jl
and C++
library libpolymake-julia.
While this is much easier for the users (and hopefully less error-prone on our side), the development process is somehow more involved (when working on the C++
library). This involves setting your own Overrides.toml
in your package depot as well as compiling and linking the library against current versions of libcxxwrap_julia
and libjulia
. Since these come from artifacts the appropriate paths need to be set while cmake
ing. Example work-flow could look as follows
git clone https://github.com/oscar-system/libpolymake-julia
cmake -DJulia_PREFIX=/opt/julia-1.5.1 \ % your julia installation
-DPolymake_PREFIX=~/.julia/artifacts/eb44608582f284a712e85f226d09d4d2ada2f06c \ % autogenerated artifact
-DJlCxx_DIR=~/.julia/artifacts/fd5dfb5dee87c41c238d98bd7ff2fdd4f307e824/lib/cmake/JlCxx \ % your cxxwrap_julia artifact
-DCMAKE_INSTALL_PREFIX=~/local/prefix \ % your installation prefix
-DCMAKE_BUILD_TYPE=Release \
-S libpolymake-julia -B build
cmake --build build --config Release --target install -- -j2
Note that the Polymake_PREFIX
artifact is generated on the fly and needs to be checked against the ENV["POLYMAKE_DEPS_TREE"]
which is populated after using polymake_jll
.
Additionally ~/.julia/artifacts/Overrides.toml
must contain the following line
[4d8266f6-2b3b-57e3-ad7a-d431eaaac945]
libpolymake_julia = "/home/user/local/prefix"
to replace the library loaded by Julia.
For more details please have a look at readme of libpolymake-julia or test-prepare.jl file.
Changes between Polymake-0.4 and Polymake-0.5:
Library updates
Polymake.jl
can be used now withCxxWrap
^0.11
polymake
was upgraded to v4.1 (but you can always bring your own)- julia compatibility includes v1.5
New features and changes
- the completion of the interface to
Polydb
usingMongoc.jl
(@alexej-jordan) - various functions/types in
topaz
application was wrapped and are available for use (@IvanSpirandelli) - docstrings imported from
polymake
are now in 1-1 correspondence with docstrings inpolymake
- the C++ part was split off as a separate
libpolymake-julia
library which is shipped using artifacts framework (@benlorenz)
Fixed notable bugs
libpolymake
no longer requiresGLIBCXX_3.4.26 (again)
, i.e.Polymake.jl
is compatible with libstdc++ shipped by julia, even when using very modern Linux systems (due to the shift to the artifact system). This may occasionally happen, but only if you’re developinglibpolymake-julia
. Then we hope that you know what you’re doing :)- a weird issue with
Polymake.Integer
/Polymake.Rational
occasionally holding garbage was solved byGC.@preserve
ing operations on raw pointers, as they always should have been disable_sigint()
was added aroundinternal_calls
andinternal_give
calls tolibpolymake
, essentially blocking users ability to Ctrl^C during most calls topolymake
.