[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