[GAP Forum] The new major release: GAP 4.9.1
Alexander Konovalov
alexander.konovalov at st-andrews.ac.uk
Mon May 14 11:23:57 BST 2018
Dear GAP Forum,
The next major release of GAP, version 4.9.1, is now available at
http://www.gap-system.org/Releases/
A brief overview of major changes introduced in GAP 4.9.1 is given below
- GAP includes experimental code to support multithreaded programming in
GAP, dubbed HPC-GAP (where HPC stands for "high performance computing").
- GAP has a new build system, which resolves many quirks and issues with the
old system, and will be easier to maintain. For regular users, the usual
./configure && make should work fine as before. If you are interested in
technical details on the new build system, take a look at README.buildsys.md.
- The guidelines for developing GAP packages were revised and moved from the
Example package to the Reference manual.
- In addition to supporting single argument lambda functions like
`a -> a+1`, GAP now supports lambdas with fewer or more than one
argument, or even a variable number. For example,
{a,b} -> a+b
is a shorthand for
function(a,b) return a+b; end
- Function calls, list accesses and records accesses now can be nested.
For example, you can now write
y := f().x;
(essentially equivalent to y := f();; y := y.x;), which previously
would have resulted in an error.
- The performance of GAP's sorting functions (such as Sort, SortParallel,
etc.) has been substantially improved, in some examples by more than a
factor of four: as a trivial example, compare the timing for
`Sort([1..100000000] * 0)`. As a side effect, the result of sorting lists
with equal entries may produce different answers compared to previous GAP
versions. If you would like to make your code independent of the exact
employed sorting algorithm, you can use the newly added StableSort,
StableSortBy and StableSortParallel.
- We removed our old home-grown big integer code, and instead always use
the GMP based big integer code. This means that the GMP library now is a
required dependency, not just an optional one. Note that GAP has been
using GMP big integer arithmetic for a long time by default, and we also
have been bundling GMP with GAP. So this change mostly removed code that
was never in use for most users.
- A number of improvements have been made to Random. These may lead to
different sequences of numbers being created. On the up side, many more
methods for Random (and other RandomXYZ operations) now optionally take an
explicit RandomSource as first argument.
- The output and behaviour of the profiling system has been substantially
improved.
- In many cases GAP now outputs the filename and location of functions in
helpful places, e.g. in error messages or when displaying compiled
functions. We also try to always use the format FILENAME:LINE, which
various utilities already know how to parse (e.g. in iTerm2, cmd-clicking
on such a string can be configured to open an editor for the file at the
indicated line).
- GAP now supports constant variables, whose value cannot change anymore
during runtime; code using such constants can then be slightly optimized
by GAP. E.g. if `foo` is turned into a constant variable bound to the value
`false`, then GAP can optimize `if foo then ... fi;` blocks completely
away. For details, see `?MakeConstantGlobal`.
The complete description of these and other changes, with links to the
documentation and to GitHub pull requests is available at
https://www.gap-system.org/Manuals/doc/changes/chap2.html
Additionally, GAP 4.9.1 distribution contains 134 packages, including numerous
updates of previously redistributed packages. Some major changes are:
- The libraries of small, primitive and transitive groups which previously
were an integral part of GAP were split into three separate packages
PrimgGrp, SmallGrp and TransGrp. For backwards compatibility, these are
required packages in GAP 4.9 (i.e., GAP will not start without them).
We plan to change this for GAP 4.10, once all packages which currently
implicitly rely on these new packages had time to add explicit
dependencies on them.
- The new ZeroMQInterface package by Markus Pfeiffer and Reimer Behrends has
been added for the redistribution. It provides both low-level bindings as
well as some higher level interfaces for the ZeroMQ message passing library
for GAP and HPC-GAP enabling lightweight distributed computation.
- The HAPprime package by Paul Smith is no longer redistributed with GAP.
Part of the code has been incorporated into the HAP package. Its source
code repository, containing the code of the last distributed version,
can still be found at https://github.com/gap-packages/happrime.
- Also, the ParGAP package by Gene Cooperman is no longer redistributed with
GAP because it no longer can be compiled with GAP 4.9. Its source code
repository, containing the code of the last distributed version, plus
some first fixes needed for compatibility for GAP 4.9, can still be
found at https://github.com/gap-packages/pargap. If somebody is interested
in repairing this package and taking over its maintenance, so that it can
be distributed again, please contact the GAP team.
The full list of new and updated packages in GAP 4.9.1 distribution is:
Package name | Version | Date
----------------------------------------------------
AClib | 1.3 | 11/03/2018
AutoDoc | 2018.02.14 | 14/02/2018
AutPGrp | 1.9 | 07/03/2018
Carat | 2.2.2 | 28/03/2018
cohomolo | 1.6.6 | 02/12/2017
Congruence | 1.2.2 | 06/02/2018
Cryst | 4.1.17 | 13/04/2018
CrystCat | 1.1.8 | 09/02/2018
cvec | 2.6.0 | 20/03/2018
Digraphs | 0.12.1 | 26/04/2018
EDIM | 1.3.3 | 30/01/2018
Example | 4.1.0 | 26/04/2018
FactInt | 1.6.2 | 18/02/2018
FGA | 1.4.0 | 23/03/2018
FinInG | 1.4.1 | 31/03/2018
float | 0.9.0 | 14/12/2017
FORMAT | 1.4a | 19/03/2018
FPLSA | 1.2.2 | 04/02/2018
FR | 2.4.5 | 21/03/2018
fwtree | 1.1 | 08/03/2018
Gauss | 2018.04.03 | 03/04/2018
GaussForHomalg | 2018.02.05 | 05/02/2018
GradedModules | 2018.02.04 | 04/02/2018
GradedRingForHomalg | 2018.02.04 | 04/02/2018
groupoids | 1.55 | 02/02/2018
GrpConst | 2.6 | 08/03/2018
HAP | 1.12.6 | 16/04/2018
HomalgToCAS | 2018.03.19 | 19/03/2018
idrel | 2.41 | 18/03/2018
kan | 1.28 | 04/02/2018
kbmag | 1.5.5 | 04/02/2018
LAGUNA | 3.9.0 | 26/04/2017
LieAlgDB | 2.2 | 09/04/2018
LiePRing | 1.9 | 11/03/2018
LocalizeRingForHomalg | 2018.02.04 | 04/02/2018
MatricesForHomalg | 2018.04.06 | 06/04/2018
Modules | 2018.03.20 | 20/03/2018
NumericalSgps | 1.1.7 | 19/03/2018
orb | 4.8.0 | 10/11/2017
permut | 2.0.1 | 18/02/2018
Polycyclic | 2.13.1 | 27/04/2018
PrimGrp | 3.3.1 | 17/02/2018
profiling | 2.0.0 | 29/03/2018
qaos | 1.6 | 28/03/2018
RadiRoot | 2.8 | 23/04/2018
RingsForHomalg | 2018.04.04 | 04/04/2018
Semigroups | 3.0.15 | 24/03/2018
SglPPow | 2.1 | 08/03/2018
simpcomp | 2.1.8 | 05/02/2018
SLA | 1.4 | 24/04/2018
SmallGrp | 1.3 | 09/04/2018
Sophus | 1.24 | 09/04/2018
SymbCompCC | 1.3 | 20/03/2018
ToolsForHomalg | 2018.01.30 | 30/01/2018
TransGrp | 2.0.2 | 13/11/2017
Unipot | 1.4 | 09/04/2018
UnitLib | 4.0.0 | 01/05/2018
utils | 0.54 | 12/02/2018
Wedderga | 4.9.3 | 30/04/2018
XGAP | 4.27 | 21/03/2018
XMod | 2.68 | 01/05/2018
XModAlg | 1.16 | 29/01/2018
ZeroMQInterface | 0.10 | 02/03/2018
We encourage all users of the listed above packages to upgrade to GAP 4.9.1.
If you need any help or would like to report any problems, please do not
hesitate to contact us at support at gap-system.org, or submit new issues
on GitHub:
https://github.com/gap-system/gap/issues
There is also a 'gap' tag for questions about GAP at the Mathematics Q&A site:
http://math.stackexchange.com/tags/gap/info
In addition, you may find some GAP related news on Twitter:
http://twitter.com/gap_system
Wishing you fun and success using GAP,
Alexander Konovalov
on behalf of the GAP Group
More information about the Forum
mailing list