# Polymake.jl-0.5 release

Polymake.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 cmakeing. 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
-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:

• Polymake.jl can be used now with CxxWrap ^0.11
• polymake was upgrated 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 using Mongoc.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 in polymake
• 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 requires GLIBCXX_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 developing libpolymake-julia. Then we hope that you know what you’re doing :)
• a weird issue with Polymake.Integer/Polymake.Rational occasionally holding garbage was solved by GC.@preserveing operations on raw pointers, as they always should have been
• disable_sigint() was added around internal_calls and internal_give calls to libpolymake, essentially blocking users ability to Ctrl^C during most calls to polymake.