  
  [1X1 [33X[0;0YIntroduction to [5XJuliaInterface[105X[101X[1X[133X[101X
  
  [33X[0;0YThe  [5XGAP[105X package [5XJuliaInterface[105X is part of a bidirectional interface between
  [5XGAP[105X and [5XJulia[105X.[133X
  
  
  [1X1.1 [33X[0;0YAims of the [5XJuliaInterface[105X[101X[1X package[133X[101X
  
  [33X[0;0YThe  low  level  interface  between  [5XGAP[105X  and [5XJulia[105X allows one to access [5XGAP[105X
  objects  and  to  call  [5XGAP[105X  functions  in  a [5XJulia[105X session, to access [5XJulia[105X
  objects  and  to  call  [5XJulia[105X functions in a [5XGAP[105X session, and to convert low
  level    data   such   as   integers,   booleans,   strings,   arrays/lists,
  dictionaries/records between the two systems.[133X
  
  [33X[0;0YIn  particular,  this  interface is [13Xnot[113X intended to provide a very [21X[5XJulia[105X-ish[121X
  interface  to  [5XGAP[105X  objects  and functions, nor a [21X[5XGAP[105X-ish[121X interface to [5XJulia[105X
  objects and functions.[133X
  
  [33X[0;0YAlso,  the  interface  does not provide conversions to [5XGAP[105X for [5XJulia[105X objects
  whose  types are defined in [5XJulia[105X packages (that is, not in the [21Xcore [5XJulia[105X[121X).
  For  example,  the  [5XJulia[105X  package [5XOscar.jl[105X provides several data types that
  correspond  to  objects  in [5XGAP[105X. Their conversions between [5XJulia[105X and [5XGAP[105X are
  handled  in  [5XOscar.jl[105X, see its [11Xsrc/GAP[111X subdirectory, [5XJuliaInterface[105X does not
  deal with these issues.[133X
  
  [33X[0;0YThe interface consists of[133X
  
  [30X    [33X[0;6Ythe  integration  of [5XJulia[105X's garbage collector into [5XGAP[105X (which belongs
        to the [5XGAP[105X core system),[133X
  
  [30X    [33X[0;6Y[10XC[110X code for converting and wrapping low level objects (which belongs to
        [5XJuliaInterface[105X),[133X
  
  [30X    [33X[0;6Y[5XJulia[105X  code  for  converting  low  level objects (which belongs to the
        [5XJulia[105X package [10XGAP.jl[110X, see [7Xhttps://github.com/oscar-system/GAP.jl[107X),[133X
  
  [30X    [33X[0;6Yand  [5XGAP[105X  code  (again  in  [5XJuliaInterface[105X) which is described in this
        manual.[133X
  
  [33X[0;0YThe  [5XJuliaInterface[105X  manual  takes the viewpoint of a [5XGAP[105X session from where
  one  wants  to  use  [5XJulia[105X  functionality. The opposite direction, using [5XGAP[105X
  functionality  in  a [5XJulia[105X session, is described in the documentation of the
  [5XJulia[105X package [10XGAP.jl[110X.[133X
  
  
  [1X1.2 [33X[0;0YInstallation of the [5XJuliaInterface[105X[101X[1X package[133X[101X
  
  [33X[0;0YThe  package can be used only when the underlying [5XGAP[105X has been compiled with
  the  [5XJulia[105X  garbage collector, and the recommended way to install such a [5XGAP[105X
  is to install [5XJulia[105X first (see [7Xhttps://julialang.org/downloads/[107X) and then to
  ask [5XJulia[105X's package manager to download and install [5XGAP[105X, by entering[133X
  
  [4X[32X  Julia  [32X[104X
    [4Xusing Pkg; Pkg.add( "GAP" )[104X
  [4X[32X[104X
  
  [33X[0;0Yat the [5XJulia[105X prompt.[133X
  
  [33X[0;0YOne way to start a [5XGAP[105X session from the [5XJulia[105X session is to enter[133X
  
  [4X[32X  Julia  [32X[104X
    [4Xusing GAP; GAP.prompt()[104X
  [4X[32X[104X
  
  [33X[0;0Yat  the  [5XJulia[105X  prompt,  afterwards  the  package  [5XJuliaInterface[105X is already
  installed and loaded.[133X
  
  [33X[0;0YAlternatively,  one  can  start  [5XGAP[105X  in the traditional way, by executing a
  shell  script. Such a script can be created in a location of your choice via
  the  following  [5XJulia[105X  command,  where [11Xdstdir[111X is a directory path in which a
  [11Xgap.sh[111X script plus some auxiliary files will be placed:[133X
  
  [4X[32X  Julia  [32X[104X
    [4Xusing GAP; GAP.create_gap_sh(dstdir)[104X
  [4X[32X[104X
  
  [33X[0;0YNote  that  the  [5XJuliaInterface[105X  code  belongs  to  the [5XJulia[105X package [10XGAP.jl[110X
  ([7Xhttps://github.com/oscar-system/GAP.jl[107X), hence it can be found there.[133X
  
