Goto Chapter: Top 1 2 3 4 5 6 7 8 9 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

2 Changes between GAP 4.9 and GAP 4.10
 2.1 GAP 4.10.0 (November 2018)

2 Changes between GAP 4.9 and GAP 4.10

This chapter contains an overview of the most important changes introduced in GAP 4.10.0 release (the first public release of GAP 4.10). Later it will also contain information about subsequent update releases for GAP 4.10.

These changes are also listed on the Wiki page https://github.com/gap-system/GAP/wiki/gap-4.10-release-notes.

2.1 GAP 4.10.0 (November 2018)

2.1-1 New features and major changes
Reduce impact of immediate methods

GAP allows declaring so-called "immediate methods". The idea is that these are very simple and fast methods which are immediately called if information about an object becomes known, in order to perform some quick deduction. For example, if the order of a group is set, there might be immediate methods which update the filters IsFinite and IsTrivial of the group suitably.

While this can be very elegant and useful in interactive GAP sessions, the overhead for running these immediate methods and applying their results can become a major factor in the runtime of complex computations that create thousands or millions of objects.

To address this, various steps were taken:

As a result of these and other changes, consider the following example; with GAP 4.9, it takes about 130 seconds on one test system, while with GAP 4.10 it runs in about 22 seconds, i.e., more than six times faster.

G:=PcGroupCode( 741231213963541373679312045151639276850536621925972119311,11664);;
IsomorphismGroups(G,PcGroupCode(CodePcGroup(G),Size(G)))<>fail;

Relevant pull requests and issues: #2386, #2387, #2522.

Change definition of IsPGroup to not require finiteness

This is a small change in terms of amount of code changed, but we list it here as it has a potential (albeit rather unlikely) impact on the code written by GAP users: In the past, the GAP manual entry for IsPGroup defined \(p\)-groups as being finite groups, which differs from the most commonly used definition for \(p\)-groups. Note however that there was not actual implication installed from IsPGroup to IsFinite, so it always was possible to actually created infinite groups in the filter IsPGroup. In GAP 4.10, we adjusted (in #1545) the documentation for IsPGroup to the commonly accepted definition for \(p\)-groups. In addition, code in the GAP library and in packages using IsPGroup was audited and (in a very few cases) adjusted to explicitly check IsFinite (see e.g. #2866).

Experimental support for using the Julia garbage collector

It is now possible to use the garbage collector of the Julia language instead of GAP's traditional GASMAN garbage collector. This is partly motivated by a desire to allow tight integration with GAP and Julia in the future. Warning: right now, this is slower, and also requires a patched version of Julia.

Relevant pull requests: #2092, #2408, #2461, #2485, #2495, #2672, #2688, #2793, #2904, #2905, #2931.

libGAP (work in progress)

We now provide a experimental way to allow 3rd party code to link GAP as a library; this is based on the libGAP code by SageMath, but different: while we aim to provide the same functionality, we do not rename any symbols, and we do not provide the same API. We hope that a future version of SageMath can drop its custom modifications for GAP and use this interface instead. Work is underway to achieve this goal. If you are interested in this kind of interface, please get in touch with us to help us improve it. See also this email.

To get an idea how libGAP works, you can configure GAP as normal, and then execute make testlibgap which will build a small program that uses some of the existing API and links GAP. Relevant pull requests:

2.1-2 Improved and extended functionality

2.1-3 Changed documentation

2.1-4 Fixed bugs that could lead to crashes

2.1-5 Fixed bugs that could lead to incorrect results

2.1-6 Fixed bugs that could lead to break loops

2.1-7 Other fixed bugs

2.1-8 Removed or obsolete functionality

2.1-9 Packages

GAP 4.10.0 distribution includes 140 packages.

Added to the distribution:

No longer redistributed with GAP:

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 Ind

generated by GAPDoc2HTML