The GAP package JuliaInterface is part of a bidirectional interface between GAP and Julia.
The low level interface between GAP and Julia allows one to access GAP objects and to call GAP functions in a Julia session, to access Julia objects and to call Julia functions in a GAP session, and to convert low level data such as integers, booleans, strings, arrays/lists, dictionaries/records between the two systems.
In particular, this interface is not intended to provide a very Julia-ish
interface to GAP objects and functions, nor a GAP-ish
interface to Julia objects and functions.
Also, the interface does not provide conversions to GAP for Julia objects whose types are defined in Julia packages (that is, not in the core Julia
). For example, the Julia package Oscar.jl provides several data types that correspond to objects in GAP. Their conversions between Julia and GAP are handled in Oscar.jl, see its src/GAP
subdirectory, JuliaInterface does not deal with these issues.
The interface consists of
the integration of Julia's garbage collector into GAP (which belongs to the GAP core system),
C
code for converting and wrapping low level objects (which belongs to JuliaInterface),
Julia code for converting low level objects (which belongs to the Julia package GAP.jl
, see https://github.com/oscar-system/GAP.jl),
and GAP code (again in JuliaInterface) which is described in this manual.
The JuliaInterface manual takes the viewpoint of a GAP session from where one wants to use Julia functionality. The opposite direction, using GAP functionality in a Julia session, is described in the documentation of the Julia package GAP.jl
.
The package can be used only when the underlying GAP has been compiled with the Julia garbage collector, and the recommended way to install such a GAP is to install Julia first (see https://julialang.org/downloads/) and then to ask Julia's package manager to download and install GAP, by entering
using Pkg; Pkg.add( "GAP" )
at the Julia prompt.
One way to start a GAP session from the Julia session is to enter
using GAP; GAP.prompt()
at the Julia prompt, afterwards the package JuliaInterface is already installed and loaded.
Alternatively, one can start GAP in the traditional way, by executing a shell script. Such a script can be created in a location of your choice via the following Julia command, where dstdir
is a directory path in which a gap.sh
script plus some auxiliary files will be placed:
using GAP; GAP.create_gap_sh(dstdir)
Note that the JuliaInterface code belongs to the Julia package GAP.jl
, hence it can be found there.
generated by GAPDoc2HTML