- Upgrade to newer GAP snapshot
- Give helpful error if
GAP_jll
is not available - Change
@gapattribute
to use prefixeshas_
andset_
instead ofhas
andset
. So for example for@gapattribute isfinite(obj) = ...
the tester function now ishas_isfinite
instead ofhasisfinite
and the setter function isset_isfinite
instead ofsetisfinite
. - Remove
Base.big(obj::GapObj)
: nothing was using it and it does not really fit conceptually into this package.
- Add
quiet
argument toPackages.load
- Fix compatibility with Julia nightly
- Replace some calls to low-level GAP functions by high-level synonyms, for better compatibility with future GAP releases
- Improve how we show the error messaged triggered by a user trying to load GAP.jl on native Windows (which isn't supported)
- Rewrite
@wrap
,@gapwrap
and@gapattribute
to be better compatible with future Julia versions.
- Improve type stability of the code for converting from GAP to Julia objects; now in many cases code calling it will get precise information about the result type, enabling better optimizations
- Fixed a bug in
@gapattribute
that manifested in a runtime error
- Better banner suppression logic
- Restore use of
GAP_pkg_juliainterface_jll
(accidentally broken in the previous release)
- Restore compatibility with Julia nightlies
- Use a
GAP_pkg_juliainterface_jll
to installed a compiled version of the bundled C code, thus for basic use of GAP.jl no C/C++ compiler is needed anymore; this also avoids compatibility issues when switching back and forth between Julia 1.6 and 1.7 - Add support for REPL tab completion on members of
GAP.Globals
; e.g. if you enterGAP.Globals.MTX.Is
into the REPL and press the TAB key twice, you should be offered a list of members of the recordGAP.Globals.MTX
whose name starts withIs
. - Fix a bug where running GAP through Julia via a
gap.sh
wrapper created usingGAP.create_gap_sh
could produce an error (specifically when aQUIT
statement is encountered while processing a GAP file by passing its path as argument togap.sh
) - Fix printing of certain containers; e.g.
repr(GAP.GapObj[])
confusingly produced the string"GAP_jll.MPtr[]"
; it now gives"GapObj[]"
resp."GAP.GapObj[]"
(depending on whetherusing GAP
orimport GAP
were used to load GAP.jl)
- Fix compatibility with Julia 1.6.0 and 1.6.1. (Note that we recommend using Julia 1.6.3 or newer anyway)
- Improve the GAP.jl manual; in particular, it now includes the manual of the JuliaInterface GAP package
- Optimize conversion of Julia ranges to GAP
- Update to a slightly newer GAP 4.12dev snapshot
This is the first release of the 0.7.x series. It contains the following breaking changes compared to the 0.6.x release:
- Require Julia 1.6 or later.
- Remove
LoadPackageAndExposeGlobals
. If you are using this, see oscar-system#696 for alternatives. - Remove all
convert
methods. If you were usingconvert(GapObj, val)
, you can useGapObj(val)
orjulia_to_gap(val)
instead. If you were usingconvert(T,gapobj)
, useT(gapobj)
orjulia_to_gap(gapobj)
instead. - Remove
GAP.gap_exe()
. Instead please useGAP.create_gap_sh(path)
. - Remove GAP function
IsArgumentForJuliaFunction
. No replacement should be necessary. - Remove GAP function
ImportJuliaModuleIntoGAP
. As a replacement, useJuliaEvalString("import MODULENAME")
. - Restrict
GapObj
constructor by adding a return type annotation that ensures only values of typeGapObj
are returned. If you relied on this also returningInt
,Bool
orFFE
, please use theGAP.Obj
constructor instead. If you relied on also Julia objects being returned, you should probably revise your code; but if you determine that you still really really have to do this, you can by usingjulia_to_gap
.
Other changes:
- Add
GapInt
type union - Patch the GAP package manager to perform downloads via Julia's
Downloads.download
to avoid certain failure scenarios - Add
@wrap
macro as an alternative to@gapwrap
for certain use cases. - Don't show the GAP banner if Julia is started with the
--quiet
flag - Call the GAP AtExit handler when exiting Julia, so that e.g. the command line history is saved (if the user enabled this in their preferences) or temporary directories are removed.
- Many internal changes and refactoring
- use latest versions of
GAP_jll
,GAP_lib_jll
- Add GAP.prompt() function which gives a GAP prompt inside Julia
- Add support for Julia keyword arguments on the GAP side
- Overload the Julia 'in' operator for GAP objects
- Add conversion constructors for various Julia types, to allow for more idiomatic Julia code accessing GAP objects
- Improve GAP <-> Julia conversion
- Show the GAP banner again by default, unless we are being loaded from Oscar.jl
- Switch to Julia "artifact" system for downloading the GAP sources, which can save time and disk space when rebuilding or reinstalling GAP.jl
- Complete overhaul of the build process for GAP, making it more robust
- Ensure that we link against the same GMP and readline as other components of OSCAR do
- Remove the implicit dependency on LinearAlgebra.jl
- Fix a bunch of minor bugs
- Various janitorial changes