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

5 Changes between GAP 4.4 and GAP 4.5
 5.1 Changes in the core GAP system introduced in GAP 4.5
 5.2 Packages in GAP 4.5
 5.3 GAP 4.5.5 (July 2012)
 5.4 GAP 4.5.6 (September 2012)
 5.5 GAP 4.5.7 (December 2012)

5 Changes between GAP 4.4 and GAP 4.5

This chapter lists most important changes between GAP 4.4.12 and the first public release of GAP 4.5. It also contains information about subsequent update releases for GAP 4.5. It is not meant to serve as a complete account on all improvements; instead, it should be viewed as an introduction to GAP 4.5, accompanying its release announcement.

5.1 Changes in the core GAP system introduced in GAP 4.5

In this section we list most important new features and bugfixes in the core system introduced in GAP 4.5. For the list of changes in the interface between the core system and packages as well as for an overview of new and updated packages, see Section 5.2.

5.1-1 Improved functionality

Performance improvements:

New and improved kernel functionality:

New and improved library functionality:

Many problems in GAP have have been fixed, among them the following:

Potentially incompatible changes:

No longer supported:

In addition, we no longer recommend using the GAP compiler gac to compile GAP code to C, and may withdraw it in future releases. Compiling GAP code only ever gave a substantial speedup for rather specific types of calculation, and much more benefit can usually be achieved quite easily by writing a small number of key functions in C and loading them into the kernel as described in LoadDynamicModule (Reference: LoadDynamicModule). The gac script will remain available as a convenient way of compiling such kernel modules from C.

Also, the following functions and operations were made obsolete: AffineOperation, AffineOperationLayer, FactorCosetOperation, DisplayRevision, ProductPol, TeXObj, LaTeXObj.

5.1-2 Changes in distribution formats

The GAP 4.5 source distribution has the form of a single archive containing the core system and the most recent "stable" versions of all currently redistributed packages. There are no optional archives to download: the TomLib package now contains all its tables of marks in one archive; we do not provide separate versions of manuals for Internet Explorer, and the former tools archive is now included as an archive in the etc directory. To unpack and install the archive, user the script etc/install-tools.sh.

We no longer distribute separate bugfix archives when the core GAP system changes, or updated packages archives when a redistributed package is updated. Instead, the single GAP source distribution archive will be labelled by the version of the core GAP system and also by a timestamp. This archive contains the core system and the stable versions of the relevant packages on that date. To upgrade, you simply replace the whole directory containing the GAP installation, and rebuild binaries for the GAP kernel and packages. For new versions of packages, we will also continue to redistribute individual package archives so it will be possible to update a single package without changing the rest of the GAP installation.

Furthermore, by default GAP will now automatically read a user-specific GAP root directory (unless GAP is called with the -r option). All user settings can be made in that directory, so there will be no risk of them being lost during an update (see Section 5.1-3 below for more details). Private packages can also be installed in this directory for the same reason.

There are some changes in archive formats used for the distribution: we continue to provide .tar.gz, .tar.bz2 and -win.zip archives. We have added .zip, and stopped providing .zoo archives. We no longer provide GAP binaries for Mac OS 9 (Classic) any more. For installations from source on Mac OS X one may follow the instructions for UNIX.

With the release of GAP 4.5, we also encourage more users to take advantage of the increasingly mature binary distributions which are now available. These include:

In the near future, we also hope to have a binary distribution for Mac OS X.

Internally, we now have infrastructure to support more robust and frequent releases, and an improved system to fetch and test new versions of the increasingly large number of packages. The Example package documents technical requirements for packages, many of which are checked automatically by our systems. This will allow us to check the compatibility of packages with the system and with other packages more thoroughly before publishing them on the GAP website.

5.1-3 Improvements to the user interface

By default, GAP now uses the readline library for command line editing. It provides such advantages as working with unicode terminals, nicer handling of long input lines, improved TAB-completion and flexible configuration. For further details, see Reference: Editing using the readline library.

We have extended facilities for user interface customisation. By default GAP automatically scans a user specific GAP root directory (unless GAP is called with the -r option). The name of this user specific directory depends on the operating system and is contained in GAPInfo.UserGapRoot. This directory can be used to tell GAP about personal preferences, to load some additional code, to install additional packages, or to overwrite some GAP files, see Reference: GAP Root Directories. Instead of a single .gaprc file we now use more flexible setup based on two files: gap.ini which is read early in the startup process, and gaprc which is read after the startup process, but before the first input file given on the command line. These files may be located in the user specific GAP root directory GAPInfo.UserGapRoot which by default is the first GAP root directory, see Reference: The gap.ini and gaprc files. For compatibility, the .gaprc file is still read if the directory GAPInfo.UserGapRoot does not exist. See Reference: The former .gaprc file for the instructions how to migrate your old setup.

Furthermore, there are functions to deal with user preferences, for example, to specify how GAP's online help is shown or whether the coloured prompt should be used. Calls to set user preferences may appear in the user's gap.ini file, as explained in Reference: Configuring User preferences.

In the Windows version, we include a new shell which uses the mintty terminal in addition to the two previously used shells (Windows command line and RXVT). The mintty shell is now recommended. It supports Unicode encoding and has flexible configurations options. Also, GAP under Windows now starts in the %HOMEDRIVE%%HOMEPATH% directory, which is the user's home directory. Besides this, a larger workspace is now permitted without a need to modify the Windows registry.

Other changes in the user interface include:

5.1-4 Better documentation

The main GAP manuals have been converted to the GAPDoc format provided by the GAPDoc package by Frank Lübeck and Max Neunhöffer (http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc). This documentation format is already used by many packages and is now recommended for all GAP documentation.

Besides improvements to the documentation layout in all formats (text, PDF and HTML), the new GAP manuals incorporate a large number of corrections, clarifications, additions and updated examples.

We now provide two HTML versions of the manual, one of them with MathJax (http://www.mathjax.org) support for better display of mathematical symbols. Also, there are two PDF versions of the manual - a coloured and a monochrome one.

Several separate manuals now became parts of the GAP Reference manual. Thus, now there are three main GAP manual books:

Note that there is no index file combining these three manuals. Instead of that, please use the GAP help system which will search all of these and about 100 package manuals.

5.2 Packages in GAP 4.5

Here we list most important changes affecting packages and present new or essentially changed packages. For the changes in the core GAP system, see Section 5.1.

5.2-1 Interface between the core system and packages

The package loading mechanism has been improved. The most important new feature is that all dependencies are evaluated in advance and then used to determine the order in which package files are read. This allows GAP to handle cyclic dependencies as well as situations where package A requires package B to be loaded completely before any file of package A is read. To avoid distortions of the order in which packages will be loaded, package authors are strongly discouraged from calling LoadPackage (Reference: LoadPackage) and TestPackageAvailability (Reference: TestPackageAvailability) in a package code in order to determine whether some other package will be loaded before or together with the current package - instead, one should use IsPackageMarkedForLoading (Reference: IsPackageMarkedForLoading). In addition, there is now a better error management if package loading fails for packages that use the new functionality to log package loading messages (see DisplayPackageLoadingLog (Reference: DisplayPackageLoadingLog) and the rest of the Chapter Reference: Using GAP Packages which documents how to use GAP packages), and package authors are very much encouraged to use these logging facilities.

In GAP 4.4 certain packages were marked as autoloaded and would be loaded, if present, when GAP started up. In GAP 4.5, this notion is divided into three. Certain packages are recorded as needed by the GAP system and others as suggested, in the same way that packages may need or suggest other packages. If a needed package is not loadable, GAP will not start. Currently only GAPDoc is needed. If a suggested package is loadable, it will be loaded. Typically these are packages which install better methods for Operations and Objects already present in GAP. Finally, the user preferences mechanism can be used to specify additional packages that should be loaded if possible. By default this includes most packages that were autoloaded in GAP 4.4.12, see ShowUserPreferences (Reference: ShowUserPreferences).

GAP packages may now use local namespaces to avoid name clashes for global variables introduced in other packages or in the GAP library, see Reference: Namespaces for GAP packages.

All guidance on how to develop a GAP package has been consolidated in the Example package which also contains a checklist for upgrading a GAP package to GAP 4.5, see Example: Guidelines for Writing a GAP Package.

5.2-2 New and updated packages since GAP 4.4.12

At the time of the release of GAP 4.4.12 there were 75 packages redistributed with GAP (including the TomLib which was distributed in the core GAP archive). The first public release of GAP 4.5 contains precisely 99 packages.

The new packages that have been added to the redistribution since the release of GAP 4.4.12 are:

Furthermore, some packages have been upgraded substantially since the GAP 4.4.12 release:

Finally, the following packages are withdrawn:

5.3 GAP 4.5.5 (July 2012)

Fixed bugs which could lead to crashes:

Other fixed bugs:

Improved functionality:

5.4 GAP 4.5.6 (September 2012)

Improved functionality:

Fixed bugs which could lead to crashes:

Other fixed bugs:

Improved documentation:

New packages added for the redistribution with GAP:

5.5 GAP 4.5.7 (December 2012)

Fixed bugs which could lead to crashes:

Other fixed bugs:

New packages added for the redistribution with GAP:

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

generated by GAPDoc2HTML