This page aims to give a short technical overview of the architecture of OSCAR. A more in-depth overview of the various components of OSCAR is given on the OSCAR homepage.
OSCAR is developed as a pure julia package
Oscar.jl and builds on the features and interfaces provided by the julia packages for the cornerstones:
The packages are integrated into the julia package manager and will be installed automatically as dependencies of OSCAR. They can be accessed directly by their names once OSCAR is loaded.
The current versions of these packages can be inspected with the
OSCAR version 0.11.2 combining: AbstractAlgebra.jl v0.27.7 GAP.jl v0.9.2 Hecke.jl v0.16.5 Nemo.jl v0.32.5 Polymake.jl v0.8.3 Singular.jl v0.14.0
Both Polymake.jl and Singular.jl use CxxWrap.jl together with the corresponding
libcxxwrap-julia library as an intermediate layer between the julia packages and the C / C++ libraries.
All dependencies have been integrated into the BinaryBuilder ecosystem which provides precompiled binaries for all supported architectures. The build-recipes are maintained in julia's Yggdrasil repository. These are used to automatically build binary artifacts together with the corresponding
jll packages which allow automatic installation of all required binaries as dependencies for OSCAR.
The binary packages can be found under the JuliaBinaryWrappers organization. Each repository has an autogenerated Readme file which gives some details on the original sources, supported platforms, and dependencies.
Oscar.versioninfo function can also include the versions of all binary packages that are maintained by the OSCAR developers:
OSCAR version 0.11.2 combining: AbstractAlgebra.jl v0.27.7 GAP.jl v0.9.2 Hecke.jl v0.16.5 Nemo.jl v0.32.5 Polymake.jl v0.8.3 Singular.jl v0.14.0 building on: Antic_jll v0.201.500+0 Arb_jll v200.2300.0+0 Calcium_jll v0.401.100+0 FLINT_jll v200.900.1+0 GAP_jll v400.1200.102+0 Singular_jll v403.101.500+0 libpolymake_julia_jll v0.8.3+1 libsingular_julia_jll v0.27.0+1 polymake_jll v400.700.1+1 See `]st -m` for a full list of dependencies.
For a full list of all dependencies of the current project please use
using Pkg; Pkg.status(mode=PKGMODE_MANIFEST) or the Pkg REPL command
Oscar.versioninfo(io::IO=stdout; branch=false, jll=false, julia=false, commit=false, full=false)
Print the versions of all Oscar-related dependencies.
branch::Bool=false: include git branch name in the output
commit::Bool=false: include git commit hash and date where applicable
jll::Bool=false: include binary packages (jll) in the output
julia::Bool=false: include julia
full::Bool=false: include all of the above