CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
<Chapter Label="ChangesGAP44toGAP45">
2
<Heading>Changes between &GAP; 4.4 and &GAP; 4.5</Heading>
3
4
This chapter lists most important changes between &GAP; 4.4.12 and the
5
first public release of &GAP; 4.5. It also contains information about
6
subsequent update releases for &GAP; 4.5.
7
It is not meant to serve as a complete account on all improvements;
8
instead, it should be viewed as an introduction to &GAP; 4.5,
9
accompanying its release announcement.
10
11
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
12
<Section Label="Changes in the core GAP45 system">
13
<Heading>Changes in the core &GAP; system introduced in &GAP; 4.5</Heading>
14
15
In this section we list most important new features and bugfixes in the core
16
system introduced in &GAP; 4.5. For the list of changes in the interface
17
between the core system and packages as well as for an overview of new and
18
updated packages, see Section <Ref Sect="Packages in GAP45"/>.
19
20
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
21
<Subsection Label="Improved mathematical functionality">
22
<Heading>Improved functionality</Heading>
23
<!-- TODO: Remove anything non-mathematical to another section -->
24
25
Performance improvements:
26
27
<List>
28
<Item>
29
<Index><Package>GMP support</Package></Index>
30
The &GAP; kernel now uses <Package>GMP</Package> (GNU multiple precision
31
arithmetic library, <URL>http://gmplib.org/</URL>) for faster large integer
32
arithmetic.
33
</Item>
34
<Item>
35
Improved performance for records with large number of components.
36
</Item>
37
<Item>
38
Speedup of hash tables implementation at the &GAP; library level.
39
</Item>
40
<Item>
41
<Ref Oper="MemoryUsage" BookName="ref"/> is now much
42
more efficient, in particular for large objects.
43
</Item>
44
<Item>
45
Speedups in the computation of low index subgroups, Tietze transformations,
46
calculating high powers of matrices over finite fields,
47
<Ref Func="Factorial" BookName="ref"/>, etc.
48
</Item>
49
</List>
50
51
New and improved kernel functionality:
52
53
<List>
54
<Item>
55
By default, the &GAP; kernel compiles with the <Package>GMP</Package> and
56
<Package>readline</Package> libraries. The <Package>GMP</Package> library
57
is supplied with &GAP; and we recommend that you use the version we
58
supply. There are some problems with some other versions.
59
It is also possible to compile the &GAP; kernel with the system
60
<Package>GMP</Package> if your system has it.
61
The <Package>readline</Package> library must be
62
installed on your system in advance to be used with &GAP;.
63
</Item>
64
<Item>
65
<Index>Floats</Index>
66
Floating point literals are now supported in the &GAP; language, so that,
67
floating point numbers can be entered in &GAP; expressions in a natural
68
way. Support for floats is now properly
69
documented, see <Ref Chap="Floats" BookName="ref"/>. &GAP; has an interface
70
using which packages may add new floating point implementations and
71
integrate them with the parser. In particular, we expect that there will soon
72
be a package that implements arbitrary precision floating point arithmetic.
73
</Item>
74
<Item>
75
The Mersenne twister random number generator has been made
76
independent of endianness, so that
77
random seeds can now be transferred between architectures. See
78
<Ref Sect="GlobalMersenneTwister" BookName="ref"/> for details.
79
</Item>
80
<Item>
81
Defaults for <C>-m</C> and <C>-o</C> options have been increased.
82
Changes have been made to the way that &GAP; obtains memory from
83
the Operating System, to make &GAP; more compatible with C libraries.
84
A new <C>-s</C> option has been introduced to control or turn off the
85
new behaviour, see <Ref Sect="Command Line Options" BookName="ref"/>.
86
</Item>
87
<Item>
88
The filename and lines from which a function was read can now be
89
recovered using <Ref Func="FilenameFunc" BookName="ref"/>,
90
<Ref Func="StartlineFunc" BookName="ref"/> and
91
<Ref Func="EndlineFunc" BookName="ref"/>.
92
This allows you, for example, to implement a
93
function such as <Ref Func="PageSource" BookName="ref"/> to show the file
94
containing the source code of a function or a method in a pager,
95
see <Ref Func="Pager" BookName="ref"/>.
96
</Item>
97
<Item>
98
<Ref Oper="CallFuncList" BookName="ref"/> was made into an operation
99
so that it can be used to define behaviour of a non-function when
100
called as a function.
101
</Item>
102
<Item>
103
Improvements to the cyclotomic number arithmetic for fields with large conductors.
104
</Item>
105
<Item>
106
Better and more flexible viewing of some large objects.
107
</Item>
108
<Item>
109
Opportunity to interrupt some long kernel computations,
110
e.g. multiplication of compressed matrices, intercepting
111
<C>Ctrl-C</C> in designated places in the kernel code
112
by means of a special kernel function for that purpose.
113
</Item>
114
<Item>
115
<C>ELM_LIST</C> now allows you to install methods where the second argument is
116
NOT a positive integer.
117
</Item>
118
<Item>
119
Kernel function <Ref Func="DirectoryContents" BookName="ref"/> to get
120
the list of names of files and subdirectories in a directory.
121
</Item>
122
<Item>
123
Kernel functions for Kronecker product of compressed matrices,
124
see <Ref Func="KroneckerProduct" BookName="ref"/>.
125
</Item>
126
</List>
127
128
New and improved library functionality:
129
130
<Index>Data libraries</Index>
131
<List>
132
<Item>
133
Extensions of data libraries:
134
<List>
135
<Item>
136
Functions and iterators are now available to create and enumerate
137
simple groups by their order up to isomorphism:
138
<Ref Func="SimpleGroup" BookName="ref"/>,
139
<Ref Func="SmallSimpleGroup" BookName="ref"/>,
140
<Ref Func="SimpleGroupsIterator" BookName="ref"/> and
141
<Ref Func="AllSmallNonabelianSimpleGroups" BookName="ref"/>.
142
</Item>
143
<Item>
144
See also packages <Package>CTblLib</Package>,
145
<Package>IRREDSOL</Package> and <Package>Smallsemi</Package> listed
146
in Section <Ref Sect="New and updated packages since GAP 4.4.12"/>.
147
</Item>
148
</List>
149
</Item>
150
<Item>
151
Many more methods are now available for the built-in floating point numbers,
152
see <Ref Chap="Floats" BookName="ref"/>.
153
</Item>
154
<Item>
155
The bound for the proper primality test in
156
<Ref Func="IsPrimeInt" BookName="ref"/>
157
increased up to <M>10^{18}</M>.
158
</Item>
159
<Item>
160
Improved code for determining transversal and double coset representatives in large groups.
161
</Item>
162
<Item>
163
Improvements in <Ref Oper="Normalizer" BookName="ref"/> for <M>S_n</M>.
164
</Item>
165
<Item>
166
Smith normal form of a matrix may be computed over arbitrary euclidean rings,
167
see <Ref Oper="NormalFormIntMat" BookName="ref"/>.
168
</Item>
169
<Item>
170
Improved algorithms to determine the subgroup lattice of a group,
171
as well as the function <Ref Func="DotFileLatticeSubgroups" BookName="ref"/>
172
to save the lattice structure in <F>.dot</F> file to view it e.g. with
173
<Package>GraphViz</Package>.
174
</Item>
175
<Item>
176
Special teaching mode which simplifies some output and provides
177
more basic functionality, see <Ref Sect="Teaching Mode" BookName="ref"/>.
178
</Item>
179
<Item>
180
Functionality specific for use in undergraduate abstract algebra
181
courses, e.g. checksums (<Ref Sect="Check Digits" BookName="ref"/>);
182
string/integer list conversion; rings of small orders; the function
183
<Ref Func="SetNameObject" BookName="ref"/> to set display names for
184
objects for more informative examples, e.g. constructing groups
185
from <Q>named</Q> objects, such as, for example, <C>R90</C> for a
186
90-degree rotation).
187
<!-- See section 3.3 of "Abstract Algebra in GAP" booklet by AH:
188
http://www.math.colostate.edu/~hulpke/CGT/howtogap.pdf -->
189
</Item>
190
<Item>
191
Functions <Ref Func="DirectoryDesktop" BookName="ref"/> and
192
<Ref Func="DirectoryHome" BookName="ref"/> which provide uniform
193
access to default directories under Windows, Mac OS X and Unix.
194
</Item>
195
<Item>
196
Improved methods for hashing when computing orbits.
197
</Item>
198
<Item>
199
Functionality to call external binaries under Windows.
200
</Item>
201
<Item>
202
Symplectic groups over residue class rings,
203
see <Ref Func="SymplecticGroup" BookName="ref"/>.
204
</Item>
205
<Item>
206
Basic version of the simplex algorithm for matrices.
207
</Item>
208
<Item>
209
New functions, operations and attributes:
210
<Ref Attr="PrimeDivisors" BookName="ref"/>,
211
<Ref Oper="Shuffle" BookName="ref"/> for lists,
212
<Ref Func="IteratorOfPartitions" BookName="ref"/>,
213
<Ref Func="IteratorOfCombinations" BookName="ref"/>,
214
<Ref Func="EnumeratorOfCombinations" BookName="ref"/>
215
and others.
216
</Item>
217
<Item>
218
The behaviour of <Ref Func="Info" BookName="ref"/> statements can now be
219
configured per info class, this applies to the way the arguments are
220
printed and to the output stream, see <Ref Sect="Info Functions" BookName="ref"/>.
221
</Item>
222
<Item>
223
New function <Ref Func="Test" BookName="ref"/> which is a more flexible and
224
informative substitute of <C>ReadTest</C> operation.
225
</Item>
226
<Item>
227
<C>ConnectGroupAndCharacterTable</C> is replaced by more robust
228
function <Ref Func="CharacterTableWithStoredGroup" BookName="ref"/>.
229
</Item>
230
</List>
231
232
Many problems in &GAP; have have been fixed, among them the following:
233
234
<List>
235
<Item>
236
Polynomial factorisation over rationals could miss factors of degree
237
greater than <M>deg(f)/2</M> if they have very small coefficients, while
238
the cofactor has large coefficients.
239
</Item>
240
<Item>
241
<Ref Oper="IntermediateSubgroups" BookName="ref"/> called on a group and
242
a normal subgroup did not properly calculate maximal inclusion relationships.
243
</Item>
244
<Item>
245
<Ref Attr="CentreOfCharacter" BookName="ref"/> and
246
<Ref Attr="ClassPositionsOfCentre" BookName="ref" Label="for a character"/>
247
called for a group character could return a perhaps too large result.
248
</Item>
249
<Item>
250
<Ref Attr="Trace" BookName="ref"/> called for an element of a finite field
251
that was created with <Ref Oper="AlgebraicExtension" BookName="ref"/>
252
ran into an error.
253
</Item>
254
<Item>
255
<Ref Func="IrreducibleRepresentationsDixon" BookName="ref"/> did not accept
256
a list with one character as a second argument.
257
</Item>
258
<Item>
259
Composing a homomorphism from a permutation group to a finitely presented
260
group with another homomorphism could give wrong results.
261
</Item>
262
<Item>
263
For certain arguments, the function <Ref Func="EU" BookName="ref"/>
264
returned wrong results.
265
</Item>
266
<Item>
267
In the table of marks of cyclic groups,
268
<Ref Attr="NormalizersTom" BookName="ref"/> value was wrong.
269
</Item>
270
<Item>
271
The function <Ref Func="PermChars" BookName="ref"/> returned a perhaps
272
wrong result when the second argument was a positive integer (not a record)
273
and the trivial character of the character table given as the first argument
274
was not the first in the list of irreducibles.
275
</Item>
276
<Item>
277
&GAP; crashed when the intersection of ranges became empty.
278
</Item>
279
<Item>
280
<C>IsPSL</C>, and in turn <Ref Func="StructureDescription" BookName="ref"/>,
281
erroneously recognised non-PSL groups of the right order as PSL.
282
</Item>
283
<Item>
284
The semidirect product method for pcgs computable groups sometimes tried to use
285
finite presentations which were not polycyclic. This usually happened when the
286
groups were not pc groups, and there was a very low risk of getting a wrong result.
287
</Item>
288
<Item>
289
The membership test for a group of finite field elements ran into an error
290
if the zero element of the field was given as the first argument.
291
</Item>
292
<Item>
293
Constant polynomials were not recognised as univariate in any variable.
294
</Item>
295
<Item>
296
The kernel recursion depth counter was not reset properly when
297
running into many break loops.
298
</Item>
299
<Item>
300
&GAP; did not behave well when printing of a (large) object was
301
interrupted with <C>Ctrl-C</C>. Now the object is no longer corrupted
302
and the indentation level is reset.
303
</Item>
304
</List>
305
306
Potentially incompatible changes:
307
308
<List>
309
<Item>
310
The zero polynomial now has degree <C>-infinity</C>,
311
see <Ref Attr="DegreeOfLaurentPolynomial" BookName="ref"/>.
312
</Item>
313
<Item>
314
Multiple unary <C>+</C> or <C>-</C> signs are no longer allowed
315
(to avoid confusion with increment/decrement operators from other
316
programming languages).
317
</Item>
318
<Item>
319
Due to changes to improve the performance of records with large number of
320
components, the ordering of record components in <C>View</C>'ed records
321
has changed.
322
</Item>
323
<Item>
324
Due to improvements for vectors over finite fields, certain objects have
325
more limitations on changing their base field. For example, one can not
326
create a compressed matrix over <M>GF(2)</M> and then assign an element
327
of <M>GF(4)</M> to one of its entries.
328
</Item>
329
</List>
330
331
<Index>Completion files (withdrawn)</Index>
332
<Index>&GAP;&nbsp;3 compatibility mode (withdrawn)</Index>
333
No longer supported:
334
<List>
335
<Item>
336
Completion files mechanism.
337
</Item>
338
<Item>
339
&GAP; 3 compatibility mode.
340
</Item>
341
</List>
342
343
<Index>&GAP; compiler (no longer recommended)</Index>
344
In addition, we no longer recommend using the &GAP; compiler <F>gac</F> to
345
compile &GAP; code to <Package>C</Package>, and may withdraw it in future
346
releases. Compiling &GAP; code only ever gave a substantial speedup for
347
rather specific types of calculation, and much more benefit can usually be
348
achieved quite easily by writing a small number of key functions in
349
<Package>C</Package> and loading them into the kernel as described in
350
<Ref Func="LoadDynamicModule" BookName="ref"/>. The <F>gac</F> script will
351
remain available as a convenient way of compiling such kernel modules from
352
<Package>C</Package>.
353
<P/>
354
355
Also, the following functions and operations were made obsolete:
356
<C>AffineOperation</C>,
357
<C>AffineOperationLayer</C>,
358
<C>FactorCosetOperation</C>,
359
<C>DisplayRevision</C>,
360
<C>ProductPol</C>,
361
<C>TeXObj</C>,
362
<C>LaTeXObj</C>.
363
364
</Subsection>
365
366
367
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
368
<Subsection Label="GAP45 Distribution">
369
<Heading>Changes in distribution formats</Heading>
370
371
<Index Key="tools"><F>tools</F> archive</Index>
372
The &GAP; 4.5 source distribution has the form of a
373
single archive containing the core system and the most recent <Q>stable</Q>
374
versions of all currently redistributed packages. There are no optional
375
archives to download: the <Package>TomLib</Package> package now contains all
376
its tables of marks in one archive; we do not provide separate versions of
377
manuals for Internet Explorer, and the former <F>tools</F> archive is now
378
included as an archive in the <F>etc</F> directory.
379
To unpack and install the archive, user the script
380
<F>etc/install-tools.sh</F>.
381
<P/>
382
383
<Index>Bugfixes and packages archives (withdrawn)</Index>
384
We no longer distribute separate bugfix archives when the core &GAP;
385
system changes, or updated packages archives when a redistributed
386
package is updated. Instead, the single &GAP; source distribution
387
archive will be labelled by the version of
388
the core &GAP; system and also by a timestamp. This archive contains
389
the core system and the
390
stable versions of the relevant packages on that date.
391
To upgrade, you simply
392
replace the whole directory containing
393
the &GAP; installation, and rebuild binaries
394
for the &GAP; kernel and packages. For new versions of packages, we will also
395
continue to redistribute individual package archives so it will be
396
possible to update a single package without changing the rest of the
397
&GAP; installation.
398
<P/>
399
400
Furthermore, by default &GAP; will now automatically read a user-specific
401
&GAP; root directory (unless &GAP; is called with the <C>-r</C> option).
402
All user settings can be made in that directory, so there will be no risk
403
of them being lost during an update (see Section
404
<Ref Sect="GAP45 User interface"/> below for more details). Private
405
packages can also be installed in this directory for the same reason.
406
<P/>
407
408
There are some changes in archive formats used for the distribution: we
409
continue to provide <F>.tar.gz</F>, <F>.tar.bz2</F> and <F>-win.zip</F>
410
archives. We have added <F>.zip</F>, and stopped providing <F>.zoo</F> archives.
411
We no longer provide GAP binaries for Mac OS 9 (Classic) any more. For
412
installations from source on Mac OS X one may follow the instructions for UNIX.
413
<P/>
414
415
<Index>&GAP; binary distributions</Index>
416
With the release of &GAP; 4.5, we also encourage more users to take
417
advantage of the increasingly mature binary distributions which are
418
now available. These include:
419
420
<List>
421
422
<Item>
423
The binary <F>rsync</F> distribution for &GAP; on Linux PCs with i686
424
or x86_64 compatible processors provided by Frank Lübeck, see
425
<URL>http://www.math.rwth-aachen.de/~Frank.Luebeck/gap/rsync</URL>.
426
</Item>
427
428
<Item>
429
<Package>BOB</Package>, a tool for Linux and Mac OS X to download and build
430
&GAP; and its packages from source provided by M. Neunhöffer:
431
<URL>http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/bob.html</URL>.
432
</Item>
433
434
<Item>
435
The &GAP; installer for Windows provided by Alexander Konovalov:
436
<URL>https://www.gap-system.org/ukrgap/wininst/</URL>.
437
</Item>
438
439
</List>
440
In the near future, we also hope to have a binary distribution for Mac OS X.
441
<!-- TODO: when ready, add installers for Windows and Mac OS X by AH -->
442
<P/>
443
444
Internally, we now have infrastructure to support more robust and frequent
445
releases, and an improved system to fetch and test new versions of
446
the increasingly large number of packages. The
447
<Package>Example</Package> package documents technical requirements for
448
packages, many of which are checked automatically by our systems.
449
This will allow us to check
450
the compatibility of packages with the system and with other
451
packages more thoroughly before publishing them on the &GAP; website.
452
453
</Subsection>
454
455
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
456
<Subsection Label="GAP45 User interface">
457
<Heading>Improvements to the user interface</Heading>
458
459
<Index><Package>readline</Package> support</Index>
460
<Index>User interface customisation</Index>
461
By default, &GAP; now uses the <Package>readline</Package> library for
462
command line editing. It provides such advantages as working with
463
unicode terminals, nicer handling of long input lines, improved
464
TAB-completion and flexible configuration. For further details, see
465
<Ref Sect="Editing using the readline library" BookName="ref"/>.
466
<P/>
467
468
We have extended facilities for user interface customisation. By default
469
&GAP; automatically scans a user specific &GAP; root directory (unless
470
&GAP; is called with the <C>-r</C> option). The name of this user
471
specific directory depends on the operating system and is contained
472
in <C>GAPInfo.UserGapRoot</C>. This directory can be used to tell &GAP;
473
about personal preferences, to load some additional code, to
474
install additional packages, or to overwrite some &GAP; files,
475
see <Ref Sect="GAP Root Directories" BookName="ref"/>. Instead of
476
a single <F>.gaprc</F> file we now use more flexible setup based on
477
two files: <F>gap.ini</F> which is read early in the startup process,
478
and <F>gaprc</F> which is read after the startup process, but before the
479
first input file given on the command line. These files may be located
480
in the user specific &GAP; root directory <C>GAPInfo.UserGapRoot</C>
481
which by default is the first &GAP; root directory, see
482
<Ref Sect="The gap.ini and gaprc files" BookName="ref"/>.
483
For compatibility, the <F>.gaprc</F> file is still read
484
if the directory <C>GAPInfo.UserGapRoot</C> does not exist.
485
See <Ref Sect="The former .gaprc file" BookName="ref"/> for the
486
instructions how to migrate your old setup.
487
<P/>
488
489
Furthermore, there are functions to deal with user preferences, for example,
490
to specify how &GAP;'s online help is shown or whether the coloured prompt
491
should be used. Calls to set user preferences may appear in the user's
492
<F>gap.ini</F> file, as explained in
493
<Ref Sect="Configuring User preferences" BookName="ref"/>.
494
<P/>
495
496
In the Windows version, we include a new shell which uses the
497
<Package>mintty</Package> terminal in addition to the two
498
previously used shells (Windows command line and <Package>RXVT</Package>).
499
The <Package>mintty</Package> shell is now recommended. It supports Unicode
500
encoding and has flexible configurations options. Also, &GAP; under Windows
501
now starts in the <F>%HOMEDRIVE%%HOMEPATH%</F> directory, which is the
502
user's home directory. Besides this, a larger workspace is now permitted
503
without a need to modify the Windows registry.
504
<P/>
505
506
Other changes in the user interface include:
507
<List>
508
<Item>
509
the command line history is now implemented at the &GAP; level, it can be
510
stored on quitting a &GAP; session and reread when starting a new session,
511
see <Ref Sect="The command line history" BookName="ref"/>.
512
</Item>
513
<Item>
514
<C>SetPrintFormattingStatus("stdout",false);</C> may be used
515
to switch off the automatic line breaking in terminal output,
516
see <Ref Func="SetPrintFormattingStatus" BookName="ref"/>.
517
</Item>
518
<Item>
519
&GAP; supports terminals with up to 4096 columns (extendable at compile time).
520
</Item>
521
<Item>
522
Directories in <C>-l</C> command-line option
523
can now be specified starting with <C>~/</C>,
524
see <Ref Sect="Command Line Options" BookName="ref"/>.
525
</Item>
526
<Item>
527
Large integers are now displayed by a short string showing the first
528
and last few digits, and the threshold to trigger this behaviour
529
is user configurable (call <C>UserPreference("MaxBitsIntView")</C> to
530
see the default value).
531
</Item>
532
<Item>
533
The &GAP; banner has been made more compact and informative.
534
</Item>
535
<Item>
536
<Ref Func="SetHelpViewer" BookName="ref"/> now supports
537
the Google Chrome browser.
538
</Item>
539
<Item>
540
Multiple matches in the &GAP; online help are displayed via a function
541
from the <Package>Browse</Package> package, which is loaded in the
542
default configuration. This feature can be replaced by the known pager
543
using the command
544
<Verb>
545
SetUserPreference( "browse", "SelectHelpMatches", false );
546
</Verb>
547
</Item>
548
</List>
549
550
</Subsection>
551
552
553
554
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
555
<Subsection Label="GAP45 Documentation">
556
<Heading>Better documentation</Heading>
557
558
<Index><Package>MathJax support</Package></Index> The main &GAP;
559
manuals have been converted to the &GAPDoc; format provided by the
560
&GAPDoc; package by Frank Lübeck and Max Neunhöffer
561
(<URL>http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc</URL>).
562
This documentation format is already used by many packages and is now
563
recommended for all &GAP; documentation.
564
565
<P/>
566
567
Besides improvements to the documentation layout in all formats
568
(text, PDF and HTML), the new &GAP; manuals incorporate a large number
569
of corrections, clarifications, additions and updated examples.
570
<P/>
571
572
We now provide two HTML versions of the manual, one of them
573
with <Package>MathJax</Package> (<URL>http://www.mathjax.org</URL>)
574
support for better display of mathematical symbols. Also, there are
575
two PDF versions of the manual - a coloured and a monochrome one.
576
<P/>
577
578
Several separate manuals now became parts of the &GAP; Reference
579
manual. Thus, now there are three main &GAP; manual books:
580
<List>
581
<Item>
582
<E>&GAP; Tutorial</E> <Alt Only="HTML">(see <Ref BookName="tut" Label="Preface"/>)</Alt>
583
<P/>
584
</Item>
585
<Item>
586
<E>&GAP; Reference manual</E> <Alt Only="HTML">(see <Ref BookName="ref" Label="Preface"/>)</Alt>
587
</Item>
588
<Item>
589
<E>&GAP; - Changes from Earlier Versions</E> (this manual)
590
</Item>
591
</List>
592
593
Note that there is no index file combining these three manuals. Instead
594
of that, please use the &GAP; help system which will search all of
595
these and about 100 package manuals.
596
597
</Subsection>
598
599
</Section>
600
601
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
602
<Section Label="Packages in GAP45">
603
<Heading>Packages in &GAP; 4.5</Heading>
604
605
Here we list most important changes affecting packages and present new or
606
essentially changed packages. For the changes in the core &GAP; system,
607
see Section <Ref Sect="Changes in the core GAP45 system"/>.
608
609
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
610
<Subsection Label="Interface between the core system and packages">
611
<Heading>Interface between the core system and packages</Heading>
612
<Index>Namespaces</Index>
613
614
The package loading mechanism has been improved.
615
The most important new feature is that all dependencies are evaluated in
616
advance and then used to determine the order in which package files are read.
617
This allows &GAP; to handle cyclic dependencies as well as situations where
618
package A requires package B to be loaded completely before any file of
619
package A is read. To avoid distortions of the order in which packages will
620
be loaded, package authors are strongly discouraged from calling
621
<Ref Func="LoadPackage" BookName="ref"/> and
622
<Ref Func="TestPackageAvailability" BookName="ref"/> in a package code in
623
order to determine whether some other package will be loaded before or
624
together with the current package - instead, one should use
625
<Ref Func="IsPackageMarkedForLoading" BookName="ref"/>.
626
In addition, there is now
627
a better error management if package loading fails for packages that use
628
the new functionality to log package loading messages
629
(see <Ref Func="DisplayPackageLoadingLog" BookName="ref"/>
630
and the rest of the Chapter <Ref Chap="Using GAP Packages" BookName="ref"/>
631
which documents how to <E>use</E> &GAP; packages), and package authors
632
are very much encouraged to use these logging facilities.
633
<P/>
634
635
In &GAP; 4.4 certain packages were marked as <E>autoloaded</E> and
636
would be loaded, if present, when &GAP; started up. In &GAP; 4.5, this
637
notion is divided into three. Certain packages are recorded
638
as <E>needed</E> by the &GAP; system and others as <E>suggested</E>,
639
in the same way that packages may <E>need</E> or <E>suggest</E> other
640
packages. If a needed package is not loadable, &GAP; will not
641
start. Currently only &GAPDoc; is needed. If a suggested package is
642
loadable, it will be loaded. Typically these are packages which
643
install better methods for Operations and Objects already present in
644
&GAP;. Finally, the user preferences mechanism can be used to specify
645
additional packages that should be loaded if possible. By default this
646
includes most packages that were autoloaded in &GAP;&nbsp;4.4.12,
647
see <Ref Func="ShowUserPreferences" BookName="ref"/>.
648
<P/>
649
650
&GAP; packages may now use local <E>namespaces</E> to avoid name clashes
651
for global variables introduced in other packages or in the &GAP;
652
library, see <Ref Sect="Namespaces for GAP packages" BookName="ref"/>.
653
<P/>
654
655
All guidance on how to <E>develop</E> a &GAP; package has been consolidated
656
in the <Package>Example</Package> package which also contains a checklist
657
for upgrading a &GAP; package to &GAP;&nbsp;4.5, see
658
<Ref Appendix="Guidelines for Writing a GAP Package" BookName="Example"/>.
659
<P/>
660
661
</Subsection>
662
663
<Subsection Label="New and updated packages since GAP 4.4.12">
664
<Heading>New and updated packages since &GAP; 4.4.12</Heading>
665
666
At the time of the release of &GAP; 4.4.12 there were 75 packages
667
redistributed with &GAP; (including the <Package>TomLib</Package>
668
which was distributed in the core &GAP; archive). The first public release
669
of &GAP;&nbsp;4.5 contains precisely 99 packages.
670
<P/>
671
672
The new packages that have been added to the redistribution
673
since the release of &GAP; 4.4.12 are:
674
<List>
675
<Item>
676
<Package>Citrus</Package> package by J.D. Mitchell for computations with
677
transformation semigroups and monoids (this package is a replacement of
678
the <Package>Monoid</Package> package).
679
</Item>
680
<Item>
681
<Package>cvec</Package> package by M. Neunhöffer, providing an
682
implementation of compact vectors over finite fields.
683
</Item>
684
<Item>
685
<Package>fwtree</Package> package by B. Eick and T. Rossmann for
686
computing trees related to some pro-<M>p</M>-groups of finite width.
687
</Item>
688
<Item>
689
<Package>GBNP</Package> package by A.M. Cohen and J.W. Knopper, providing
690
algorithms for computing Grobner bases of noncommutative polynomials over
691
fields with respect to the <Q>total degree first then lexicographical</Q>
692
ordering.
693
</Item>
694
<Item>
695
<Package>genss</Package> package by M. Neunhöffer and F. Noeske,
696
implementing the randomised Schreier-Sims algorithm to compute a
697
stabiliser chain and a base and a strong generating set for arbitrary
698
finite groups.
699
</Item>
700
<Item>
701
<Package>HAPprime</Package> package by P. Smith, extending the
702
<Package>HAP</Package> package with an implementation of
703
memory-efficient algorithms for the calculation of resolutions
704
of small prime-power groups.
705
</Item>
706
<Item>
707
<Package>hecke</Package> package by D. Traytel, providing functions
708
for calculating decomposition matrices of Hecke algebras of the
709
symmetric groups and <M>q</M>-Schur algebras (this package is a port
710
of the &GAP;&nbsp;3 package <Package>Specht 2.4</Package> to &GAP;&nbsp;4).
711
</Item>
712
<Item>
713
<Package>Homalg</Package> project by M. Barakat, S. Gutsche,
714
M. Lange-Hegermann et al., containing the following packages
715
for the homological algebra: <Package>homalg</Package>,
716
<Package>ExamplesForHomalg</Package>, <Package>Gauss</Package>,
717
<Package>GaussForHomalg</Package>, <Package>GradedModules</Package>,
718
<Package>GradedRingForHomalg</Package>, <Package>HomalgToCAS</Package>,
719
<Package>IO_ForHomalg</Package>, <Package>LocalizeRingForHomalg</Package>,
720
<Package>MatricesForHomalg</Package>, <Package>Modules</Package>,
721
<Package>RingsForHomalg</Package> and <Package>SCO</Package>
722
(see <URL>http://homalg.math.rwth-aachen.de/</URL>).
723
</Item>
724
<Item>
725
<Package>MapClass</Package> package by A. James, K. Magaard and
726
S. Shpectorov to calculate the mapping class group orbits for a
727
given finite group.
728
</Item>
729
<Item>
730
<Package>recogbase</Package> package by M. Neunhöffer and A. Seress,
731
providing a framework to implement group recognition methods in a
732
generic way (suitable, in particular, for permutation groups, matrix
733
groups, projective groups and black box groups).
734
</Item>
735
<Item>
736
<Package>recog</Package> package by M. Neunhöffer, A. Seress,
737
N. Ankaralioglu, P. Brooksbank, F. Celler, S. Howe, M. Law,
738
S. Linton, G. Malle, A. Niemeyer, E. O'Brien and C.M. Roney-Dougal,
739
extending the <Package>recogbase</Package> package and provides a
740
collection of methods for the constructive recognition of groups
741
(mostly intended for permutation groups, matrix groups and projective
742
groups).
743
</Item>
744
<Item>
745
<Package>SCSCP</Package> package by A. Konovalov and S. Linton,
746
implementing the Symbolic Computation Software Composability Protocol
747
(<Package>SCSCP</Package>, see
748
<URL>http://www.symbolic-computation.org/scscp</URL>) for &GAP;,
749
which provides interfaces to link a &GAP; instance with another copy
750
of &GAP; or other <Package>SCSCP</Package>-compliant system running
751
locally or remotely.
752
</Item>
753
<Item>
754
<Package>simpcomp</Package> package by F. Effenberger and J. Spreer
755
for working with simplicial complexes.
756
</Item>
757
<Item>
758
<Package>Smallsemi</Package> package by A. Distler and J.D. Mitchell,
759
containing the data library of all semigroups with at most 8 elements
760
as well as various information about them.
761
</Item>
762
<Item>
763
<Package>SymbCompCC</Package> package by D. Feichtenschlager for
764
computations with parametrised presentations for finite <M>p</M>-groups
765
of fixed coclass.
766
</Item>
767
</List>
768
769
Furthermore, some packages have been upgraded substantially
770
since the &GAP;&nbsp;4.4.12 release:
771
772
<List>
773
<Item>
774
<Package>Alnuth</Package> package by B. Assmann, A. Distler and B. Eick
775
uses an interface to PARI/GP system instead of the interface to KANT
776
(thanks to B. Allombert for the GP code for the new interface and help
777
with the transition) and now also works under Windows.
778
</Item>
779
<Item>
780
<Package>CTblLib</Package> package (the &GAP; Character Table Library)
781
by T. Breuer has been extended by many new character tables, a few bugs
782
have been fixed, and new features have been added, for example concerning
783
the relation to &GAP;'s group libraries, better search facilities, and
784
interactive overviews. For details, see the package manual.
785
</Item>
786
<Item>
787
<Package>DESIGN</Package> package by L.H. Soicher:
788
<List>
789
<Item>
790
The functions <C>PointBlockIncidenceMatrix</C>, <C>ConcurrenceMatrix</C>,
791
and <C>InformationMatrix</C> compute matrices associated with block designs.
792
</Item>
793
<Item>
794
The function <C>BlockDesignEfficiency</C> computes certain statistical
795
efficiency measures of a <M>1-(v,k,r)</M> design, using exact algebraic
796
computation.
797
</Item>
798
</List>
799
</Item>
800
801
<Item>
802
<Package>Example</Package> package by W. Nickel, G. Gamble and A. Konovalov
803
has a more detailed and up-to-date guidance on developing a &GAP; package,
804
see <Ref Appendix="Guidelines for Writing a GAP Package" BookName="Example"/>.
805
</Item>
806
807
<Item>
808
<Package>FR</Package> package by L. Bartholdi now uses floating-point
809
numbers to compute approximations of rational maps given by their
810
group-theoretical description.
811
</Item>
812
813
<Item>
814
The <Package>GAPDoc</Package> package by F. Lübeck and M. Neunhöffer
815
provides various improvements, for example:
816
<List>
817
<Item>
818
The layout of the text version of the manuals can be configured quite
819
freely, several standard <Q>themes</Q> are provided. The display is now
820
adjusted to the current screen width.
821
</Item>
822
<Item>
823
Some details of the layout of the HTML version of the manuals can now
824
be configured by the user. All manuals are available with and without
825
MathJax support for display of mathematical formulae.
826
</Item>
827
<Item>
828
The text and HTML versions of manuals make more use of unicode
829
characters (but the text version is also still reasonably good
830
on terminals with latin1 or ASCII encoding).
831
</Item>
832
<Item>
833
The PDF version of the manuals uses better fonts.
834
</Item>
835
<Item>
836
Of course, there are various improvements for authors of manuals as
837
well, for example new functions
838
<Ref Func="ExtractExamples" BookName="gapdoc"/> and
839
<Ref Func="RunExamples" BookName="gapdoc"/> for
840
automatic testing and correcting of manual examples.
841
</Item>
842
</List>
843
</Item>
844
845
<Item>
846
<Package>Gpd</Package> package by E.J. Moore and C.D. Wensley has been
847
substantially rewritten. The main extensions provide functions for:
848
<List>
849
<Item>
850
Subgroupoids of a direct product with complete graph groupoid,
851
specified by a root group and choice of rays.
852
</Item>
853
<Item>
854
Automorphisms of finite groupoids - by object permutations; by root group
855
automorphisms; and by ray images.
856
</Item>
857
<Item>
858
The automorphism group of a finite groupoid together with an isomorphism
859
to a quotient of permutation groups.
860
</Item>
861
<Item>
862
Homogeneous groupoids (unions of isomorphic groupoids) and their
863
morphisms, in particular homogeneous discrete groupoids: the latter
864
are used in constructing crossed modules of groupoids in the
865
<Package>XMod</Package> package.
866
</Item>
867
</List>
868
</Item>
869
870
871
<Item>
872
<Package>GRAPE</Package> package by L.H. Soicher:
873
<List>
874
<Item>
875
With much help from A. Hulpke, the interface between <Package>GRAPE</Package>
876
and <F>dreadnaut</F> is now done entirely in &GAP; code.
877
</Item>
878
<Item>
879
A 32-bit <F>nauty/dreadnaut</F> binary for Windows (XP and later) is
880
included with <Package>GRAPE</Package>, so now <Package>GRAPE</Package>
881
provides full functionality under Windows, with no installation necessary.
882
</Item>
883
<Item>
884
Graphs with ordered partitions of their vertices into <Q>colour-classes</Q>
885
are now handled by the graph automorphism group and isomorphism
886
testing functions. An automorphism of a graph with colour-classes
887
is an automorphism of the graph which additionally preserves the list
888
of colour-classes (classwise), and an isomorphism from one graph with
889
colour-classes to a second is a graph isomorphism from the first graph
890
to the second which additionally maps the first list of colour-classes
891
to the second (classwise).
892
</Item>
893
<Item>
894
The &GAP; code and old standalone programs for the undocumented functions
895
<C>Enum</C> and <C>EnumColadj</C> have been removed as their functionality
896
can now largely be handled by current documented &GAP; and
897
<Package>GRAPE</Package> functions.
898
</Item>
899
</List>
900
</Item>
901
902
<Item>
903
<Package>IO</Package> package by M. Neunhöffer:
904
<List>
905
<Item>
906
New build system to allow for more flexibility regarding the use of
907
compiler options and adjusting to &GAP;&nbsp;4.5.
908
</Item>
909
<Item>
910
New functions to access time like <C>IO_gettimeofday</C>,
911
<C>IO_gmtime</C> and <C>IO_localtime</C>.
912
</Item>
913
<Item> Some parallel skeletons built on <C>fork</C> like: <C>ParListByFork</C>,
914
<C>ParMapReduceByFork</C>, <C>ParTakeFirstResultByFork</C> and
915
<C>ParWorkerFarmByFork</C>.
916
</Item>
917
<Item>
918
<C>IOHub</C> objects for automatic I/O multiplexing.
919
</Item>
920
<Item>
921
New functions <C>IO_gethostbyname</C> and <C>IO_getsockname</C>.
922
</Item>
923
</List>
924
</Item>
925
926
<Item>
927
<Package>IRREDSOL</Package> package by B. Höfling now covers all irreducible
928
soluble subgroups of <M>GL(n,q)</M> for <M>q^n &lt; 1000000</M> and primitive
929
soluble permutation groups of degree <M>&lt; 1000000</M> (previously, the
930
bound was <M>65536</M>). It also has faster group recognition and adds a
931
few omissions for <M>GL(3,8)</M> and <M>GL(6,5)</M>.
932
</Item>
933
934
<Item>
935
<Package>ParGAP</Package> package by G. Cooperman is now compiled
936
using a system-wide MPI implementation by default to facilitate running
937
it on proper clusters. There is also an option to build it with
938
the <Package>MPINU</Package> library which is still supplied with the
939
package (thanks to P. Smith for upgrading <Package>ParGAP</Package>
940
build process).
941
</Item>
942
943
<Item>
944
<Package>OpenMath</Package> package by M. Costantini, A. Konovalov,
945
M. Nicosia and A. Solomon now supports much more OpenMath symbols
946
to facilitate communication by the remote procedure call protocol
947
implemented in the <Package>SCSCP</Package> package.
948
Also, a third-party external library to support binary OpenMath encoding
949
has been replaced by a proper implementation made entirely in &GAP;.
950
</Item>
951
952
<Item>
953
<Package>Orb</Package> package by J. Müller, M. Neunhöffer and F. Noeske:
954
<P/>
955
There have been numerous improvements to this package:
956
<List>
957
<Item>
958
A new fast implementation of AVL trees (balanced binary trees) in C.
959
</Item>
960
<Item>
961
New interface to hash table functionality and implementation in C for speedup.
962
</Item>
963
<Item>
964
Some new hash functions for various object types like transformations.
965
</Item>
966
<Item>
967
New function <C>ORB_EstimateOrbitSize</C> using the birthday paradox.
968
</Item>
969
<Item>
970
Improved functionality for product replacer objects.
971
</Item>
972
<Item>
973
New <Q>tree hash tables</Q>.
974
</Item>
975
<Item>
976
New functionality to compute weak and strong orbits for semigroups and monoids.
977
</Item>
978
<Item>
979
<C>OrbitGraph</C> for Orb orbits.
980
</Item>
981
<Item>
982
Fast C kernel methods for the following functions:
983
<P/>
984
<C>PermLeftQuoTransformationNC</C>,
985
<C>MappingPermSetSet</C>, <C>MappingPermListList</C>,
986
<C>ImageSetOfTransformation</C>,
987
and <C>KernelOfTransformation</C>.
988
</Item>
989
<Item>
990
New build system to allow for more flexibility regarding the use of
991
compiler options and to adjust to &GAP;&nbsp;4.5.
992
</Item>
993
</List>
994
</Item>
995
996
<Item>
997
<Package>RCWA</Package> package by S. Kohl among the new features and
998
other improvements has the following:
999
<List>
1000
<Item>
1001
A database of all 52394 groups generated by 3 class transpositions of
1002
<M>&ZZ;</M> which interchange residue classes with modulus less than
1003
or equal to 6. This database contains the orders and the moduli of all
1004
of these groups. Also it provides information on what is known about
1005
which of these groups are equal and how their finite and infinite
1006
orbits on <M>&ZZ;</M> look like.
1007
</Item>
1008
<Item>
1009
More routines for investigating the action of an rcwa group on <M>&ZZ;</M>.
1010
Examples are a routine which attempts to find out whether a given rcwa
1011
group acts transitively on the set of nonnegative integers in its
1012
support and a routine which looks for finite orbits on the set of all
1013
residue classes of <M>&ZZ;</M>.
1014
</Item>
1015
<Item>
1016
Ability to deal with rcwa permutations of <M>&ZZ;^2</M>.
1017
</Item>
1018
<Item>
1019
Important methods have been made more efficient in terms of runtime
1020
and memory consumption.
1021
</Item>
1022
<Item>
1023
The output has been improved. For example, rcwa permutations are now
1024
<C>Display</C>'ed in ASCII text resembling &LaTeX; output.
1025
</Item>
1026
</List>
1027
</Item>
1028
1029
<Item>
1030
The <Package>XGAP</Package> package by F. Celler and M. Neunhöffer can now
1031
be used on 64-bit architectures (thanks to N. Eldredge and M. Horn for
1032
sending patches). Furthermore, there is now an export to XFig option
1033
(thanks to Russ Woodroofe for this patch). The help system in
1034
<Package>XGAP</Package> has been adjusted to &GAP;&nbsp;4.5.
1035
</Item>
1036
1037
<Item>
1038
<Index>Packages under Windows</Index>
1039
Additionally, some packages with kernel modules or external binaries
1040
are now available in Windows. The <F>-win.zip</F> archive and the
1041
&GAP; installer for Windows include working versions of the following
1042
packages: <Package>Browse</Package>, <Package>cvec</Package>,
1043
<Package>EDIM</Package>, <Package>GRAPE</Package>, <Package>IO</Package>
1044
and <Package>orb</Package>, which were previously unavailable for
1045
Windows users.
1046
</Item>
1047
</List>
1048
1049
Finally, the following packages are withdrawn:
1050
<List>
1051
<Item>
1052
<Package>IF</Package> package by M. Costantini is unmaintained and no
1053
longer usable. More advanced functionality for interfaces to other computer
1054
algebra systems is now available in the <Package>SCSCP</Package>
1055
package by A. Konovalov and S. Linton.
1056
</Item>
1057
<Item>
1058
<Package>Monoid</Package> package by J. Mitchell is superseded by
1059
the <Package>Citrus</Package> package by the same author.
1060
</Item>
1061
<Item>
1062
<Package>NQL</Package> package by R. Hartung has been withdrawn by the author.
1063
</Item>
1064
</List>
1065
1066
</Subsection>
1067
1068
</Section>
1069
1070
1071
<Section Label="fix455">
1072
1073
<Heading>&GAP; 4.5.5 (July 2012)</Heading>
1074
1075
1076
Fixed bugs which could lead to crashes:
1077
<List>
1078
<Item>
1079
For small primes (compact fields) <C>ZmodnZObj(r,p)</C> now
1080
returns the corresponding FFE to avoid crashes when compacting
1081
matrices.
1082
[Reported by Ignat Soroko]
1083
</Item>
1084
</List>
1085
1086
Other fixed bugs:
1087
1088
<List>
1089
<Item>
1090
Fixed a bug in <Ref Attr="CommutatorSubgroup" BookName="ref"/> for fp groups
1091
causing infinite recursion, which could, for example, be triggered
1092
by computing automorphism groups.
1093
</Item>
1094
<Item>
1095
Previously, the list of factors of a polynomial was mutable, and hence could
1096
be accidentally corrupted by callers. Now the list of irreducible factors
1097
is stored immutable. To deal with implicit reliance on old code, always a
1098
shallow copy is returned.
1099
[reported by Jakob Kroeker]
1100
</Item>
1101
<Item>
1102
Computing high powers of matrices ran into an error for matrices in the
1103
format of the <Package>cvec</Package> package. Now the library function
1104
also works with these matrices.
1105
[reported by Klaus Lux]
1106
</Item>
1107
<Item>
1108
The pseudo tty code which is responsible for spawning subprocesses has been
1109
partially rewritten to allow more than 128 subprocesses on certain systems.
1110
This mechanism is for example used by <Package>ANUPQ</Package> and
1111
<Package>nq</Package> packages to compute group quotients via an external
1112
program. Previously, on Mac OS X this could be done precisely 128 times,
1113
and then an error would occur. That is, one could e.g. compute 128 nilpotent
1114
quotients, and then had to restart &GAP; to compute more. This also affected
1115
other systems, such as OpenBSD, where it now also works correctly.
1116
</Item>
1117
<Item>
1118
On Mac OS X, using &GAP; compiled against GNU readline 6.2, pasting text
1119
into the terminal session would result in this text appearing very slowly,
1120
with a 0.1 sec delay between each <Q>keystroke</Q>. This is not the case with
1121
versions 6.1 and older, and has been reported to the GNU readline team. In
1122
the meantime, we work around this issue in most situations by setting
1123
<C>rl_event_hook</C> only if <C>OnCharReadHookActive</C> is set.
1124
</Item>
1125
<Item>
1126
<Ref Func="ShowUserPreferences" BookName="ref"/> ran into a break loop in
1127
case of several undeclared user preferences. [Reported by James Mitchell]
1128
</Item>
1129
<Item>
1130
&GAP; did not start correctly if the user preference
1131
<C>"InfoPackageLoadingLevel"</C> was set to a number <M> >= 3</M>.
1132
The reason is that <C>PrintFormattedString</C> was called before
1133
it was installed. The current fix is a temporary solution.
1134
</Item>
1135
<Item>
1136
The <C>"hints"</C> member of <C>TypOutputFile</C> used to contain 3*100 entries,
1137
yet <C>addLineBreakHint</C> would write entries with index up to and including
1138
3*99+3=300, leading to a buffer overflow. This would end up overwriting
1139
the <C>"stream"</C> member with -1. Fixed by incrementing the size of
1140
<C>"hints"</C> to 301.
1141
[Reported by Jakob Kroeker]
1142
</Item>
1143
<Item>
1144
The function <C>IsDocumentedWord</C> tested the given word against
1145
strings obtained by splitting help matches at non-letter characters.
1146
This way, variable names containing underscores or digits were erroneously
1147
not regarded as documented, and certain substrings of these names were
1148
erroneously regarded as documented.
1149
</Item>
1150
<Item>
1151
On Windows, an error occurred if one tried to use the default Windows
1152
browser as a help viewer (see <Ref Func="SetHelpViewer" BookName="ref"/>).
1153
Now the browser opens the top of the correspoding manual chapter. The
1154
current fix is a temporary solution since the problem remains with the
1155
positioning at the required manual section.
1156
</Item>
1157
</List>
1158
1159
1160
Improved functionality:
1161
<List>
1162
<Item>
1163
<Ref Func="WriteGapIniFile" BookName="ref"/> on Windows now produces the
1164
<File>gap.ini</File> file with Windows style line breaks. Also, an info
1165
message is now printed if an existing <File>gap.ini</File> file was moved
1166
to a backup file <File>gap.ini.bak</File>.
1167
</Item>
1168
<Item>
1169
The <Package>CTblLib</Package> and <Package>TomLib</Package> packages are
1170
removed from the list of suggested packages of the core part of &GAP;.
1171
Instead they are added to the default list of the user preference
1172
<C>"PackagesToLoad"</C>. This way it is possible to configure &GAP; to not
1173
load these packages via changing the default value of <C>"PackagesToLoad"</C>.
1174
</Item>
1175
<Item>
1176
The conjugacy test in <M>S_n</M> for intransitive subgroups was improved.
1177
This deals with inefficiency issue in the case reported by Stefan Kohl.
1178
</Item>
1179
<Item>
1180
Added <C>InstallAndCallPostRestore</C> to <File>lib/system.g</File> and call
1181
it in <File>lib/init.g</File> instead of <C>CallAndInstallPostRestore</C> for
1182
the function that reads the files listed in &GAP; command line. This fixes
1183
the problem reported by Yevgen Muntyan when
1184
<Ref Func="SaveWorkspace" BookName="ref"/> was used in a file listed in &GAP;
1185
command line (before, according to the documentation,
1186
<Ref Func="SaveWorkspace" BookName="ref"/> was only
1187
allowed at the main &GAP; prompt).
1188
</Item>
1189
<Item>
1190
There is now a new user preference <C>PackagesToIgnore</C>,
1191
see <Ref Func="SetUserPreference" BookName="ref"/>. It contains
1192
a list of names of packages that shall be regarded as not available
1193
at all in the current session, both for autoloading and for later calls
1194
of <Ref Func="LoadPackage" BookName="ref"/>. This preference is useful
1195
for testing purposes if one wants to run some code without loading
1196
certain packages.
1197
</Item>
1198
</List>
1199
1200
</Section>
1201
1202
1203
1204
<Section Label="fix456">
1205
1206
<Heading>&GAP; 4.5.6 (September 2012)</Heading>
1207
1208
Improved functionality:
1209
<List>
1210
<Item>
1211
The argument of <Ref Func="SaveWorkspace" BookName="ref"/> can now start
1212
with <C>~/</C> which is expanded to the users home directory.
1213
</Item>
1214
<Item>
1215
Added the method for <Ref Oper="Iterator" BookName="ref"/> for
1216
<Ref Var="PositiveIntegers" BookName="ref"/>.
1217
[Suggested by Attila Egri-Nagy].
1218
</Item>
1219
<Item>
1220
Changed kernel tables such that list access functionality for
1221
<C>T_SINGULAR</C> objects can be installed by methods at the &GAP; level.
1222
</Item>
1223
<Item>
1224
In case of saved history, <Q>UP</Q> arrow after starting &GAP; yields
1225
last stored line. The user preference <C>HistoryMaxLines</C> is now used
1226
when storing and saving history (see
1227
<Ref Func="SetUserPreference" BookName="ref"/>).
1228
</Item>
1229
</List>
1230
1231
Fixed bugs which could lead to crashes:
1232
<List>
1233
<Item>
1234
A crash occuring during garbage collection following a call to
1235
<C>AClosVec</C> for a <C>GF(2)</C> code.
1236
[Reported by Volker Braun]
1237
</Item>
1238
<Item>
1239
A crash when parsing certain syntactically invalid code.
1240
[Reported by multiple users]
1241
</Item>
1242
<Item>
1243
Fixed and improved command line editing without readline support.
1244
Fixed a segfault which could be triggered by a combination of
1245
<Q>UP</Q> and <Q>DOWN</Q> arrows.
1246
[Reported by James Mitchell]
1247
</Item>
1248
<Item>
1249
Fixed a bug in the kernel code for floats that caused a crash
1250
on SPARC Solaris in 32-bit mode.
1251
[Reported by Volker Braun]
1252
</Item>
1253
</List>
1254
1255
Other fixed bugs:
1256
1257
<List>
1258
<Item>
1259
Very large (more than 1024 digit) integers were not being coded correctly
1260
in function bodies unless the integer limb size was 16 bits.
1261
[Reported by Stefan Kohl]
1262
</Item>
1263
<Item>
1264
An old variable was used in assertion, causing errors in a debugging
1265
compilation.
1266
[Reported by Volker Braun]
1267
</Item>
1268
<Item>
1269
The environment variable <C>PAGER</C> is now correctly interpreted when it
1270
contains the full path to the pager program. Furthermore, if the external
1271
pager <C>less</C> is found from the environment it is made sure that the
1272
option <C>-r</C> is used (same for <C>more -f</C>).
1273
[Reported by Benjamin Lorenz]
1274
</Item>
1275
<Item>
1276
Fixed a bug in <C>PermliftSeries</C>.
1277
[Reported by Aiichi Yamasaki]
1278
</Item>
1279
<Item>
1280
Fixed discarder function in lattice computation to distinguish
1281
general and zuppo discarder.
1282
[Reported by Leonard Soicher]
1283
</Item>
1284
<Item>
1285
The <Ref Func="GL" Label="for dimension and a ring" BookName="ref"/> and
1286
<Ref Func="SL" Label="for dimension and a ring" BookName="ref"/>
1287
constructors did not correctly handle <C>GL(filter,dim,ring)</C>.
1288
</Item>
1289
<Item>
1290
The names of two primitive groups of degree 64 were incorrect.
1291
</Item>
1292
<Item>
1293
The <Ref Oper="\in" Label="operation for testing membershi" BookName="ref"/>
1294
method for groups handled by a nice monomorphism sometimes could produce
1295
an error in situations where it should return false. This only happened
1296
when using <C>SeedFaithfulAction</C> to influence how
1297
<Ref Oper="NiceMonomorphism" BookName="ref"/>
1298
builds the nice monomorphims for a matrix groups.
1299
</Item>
1300
<Item>
1301
Wrong <Ref Oper="PrintObj" BookName="ref"/> method was removed to
1302
fix delegations accordingly to <Ref Sect="View and Print" BookName="ref"/>.
1303
</Item>
1304
<Item>
1305
Fixed a method for <Ref Oper="Coefficients" BookName="ref"/> which,
1306
after Gaussian elimination, did not check that the coefficients
1307
actually lie in the left-acting-domain of the vector space. This
1308
could lead to a wrong answer in a vector space membership test.
1309
[Reported by Kevin Watkins]
1310
</Item>
1311
</List>
1312
1313
Improved documentation:
1314
1315
<List>
1316
<Item>
1317
Removed outdated statements from the documentation of
1318
<Ref Func="StructureDescription" BookName="ref"/>
1319
which now non-ambiguosly states that <C>StructureDescription</C> is not an
1320
isomorphism invariant: non-isomorphic groups can have the same string
1321
value, and two isomorphic groups in different representations can produce
1322
different strings.
1323
</Item>
1324
<Item>
1325
&GAP; now allows overloading of a loaded help book by another one. In this
1326
case, only a warning is printed and no error is raised. This makes sense
1327
if a book of a not loaded package is loaded in a workspace and then &GAP;
1328
is started with a root path that contains a newer version.
1329
[Reported by Sebastian Gutsche]
1330
</Item>
1331
<Item>
1332
Provided a better description of user preferences mechanism
1333
(<Ref Sect="Configuring User preferences" BookName="ref"/>) and a hint to
1334
familiarise with them using <Ref Func="WriteGapIniFile" BookName="ref"/>
1335
function to create a file which contains descriptions of all known user
1336
preferences and also sets those user preferences which currently do not
1337
have their default value. One can then edit that file to customize
1338
(further) the user preferences for future &GAP; sessions.
1339
</Item>
1340
</List>
1341
1342
New packages added for the redistribution with &GAP;:
1343
<List>
1344
<Item>
1345
<Package>AutoDoc</Package> package by S. Gutsche,
1346
providing tools for automated generation of <Package>GAPDoc</Package> manuals.
1347
</Item>
1348
<Item>
1349
<Package>Convex</Package> package by S. Gutsche,
1350
which provides structures and algorithms for convex geometry.
1351
</Item>
1352
<Item>
1353
<Package>PolymakeInterface</Package> package by T. Baechler and S. Gutsche,
1354
providing a link to the callable library of the <Package>polymake</Package>
1355
system (<URL>http://www.polymake.org</URL>).
1356
</Item>
1357
<Item>
1358
<Package>ToolsForHomalg</Package> package by M. Barakat, S. Gutsche and
1359
M. Lange-Hegermann, which provides some auxiliary functionality for the
1360
<Package>homalg</Package> project (<URL>http://homalg.math.rwth-aachen.de/</URL>).
1361
</Item>
1362
</List>
1363
1364
</Section>
1365
1366
1367
<Section Label="fix457">
1368
1369
<Heading>&GAP; 4.5.7 (December 2012)</Heading>
1370
1371
Fixed bugs which could lead to crashes:
1372
<List>
1373
<Item>Closing with <C>LogInputTo</C> (or <C>LogOutputTo</C>)
1374
a logfile opened with <Ref Func="LogTo" BookName="ref"/>
1375
left the data structures corrupted, resulting in a crash.
1376
</Item>
1377
<Item>
1378
On 32-bit systems we can have long integers <C>n</C> such that
1379
<C>Log2Int(n)</C> is not an immediate integer. In such cases
1380
<C>Log2Int</C> gave wrong or corrupted
1381
results which in turn could crash &GAP;, e.g., in <C>ViewObj(n)</C>.
1382
</Item>
1383
<Item>
1384
Some patterns of use of <Ref Func="UpEnv" BookName="ref"/> and
1385
<Ref Func="DownEnv" BookName="ref"/> were leading to a segfault.
1386
</Item>
1387
</List>
1388
1389
Other fixed bugs:
1390
1391
<List>
1392
<Item>
1393
Viewing of long negative integers was broken, because it went into a break loop.
1394
</Item>
1395
<Item>
1396
Division by zero in <Ref Func="ZmodnZ" BookName="ref"/> (<M>n</M> not prime)
1397
produced invalid objects. [Reported by Mark Dickinson]
1398
</Item>
1399
<Item>
1400
Fixed a bug in determining multiplicative inverse for a zero polynomial.
1401
</Item>
1402
<Item>
1403
Fixed a bug causing infinite recursion in <Ref Oper="NaturalHomomorphismByNormalSubgroup" BookName="ref"/>.
1404
</Item>
1405
<Item>
1406
A workaround was added to deal with a package method creating pcgs for permutation
1407
groups for which the entry <C>permpcgsNormalSteps</C> is missing.
1408
</Item>
1409
<Item>
1410
For a semigroup of associative words that is not the full semigroup of
1411
all associative words, the methods for <Ref Oper="Size" BookName="ref"/>
1412
and <Ref Oper="IsTrivial" BookName="ref"/> called one another causing
1413
infinite recursion.
1414
</Item>
1415
<Item>
1416
The 64-bit version of the <F>gac</F> script produced wrong (>= 2^31) CRC
1417
values because of an integer conversion problem.
1418
</Item>
1419
<Item>
1420
It was not possible to compile &GAP; on some systems where <C>HAVE_SELECT</C> detects as false.
1421
</Item>
1422
<Item>
1423
Numbers in memory options on the command line exceeding 2^32 could not be
1424
parsed correctly, even on 64-bit systems. [Reported by Volker Braun]
1425
</Item>
1426
</List>
1427
1428
New packages added for the redistribution with &GAP;:
1429
<List>
1430
<Item>
1431
<Package>Float</Package> package by L. Bartholdi, which extends &GAP;
1432
floating-point capabilities by providing new floating-point handlers for
1433
high-precision real, interval and complex arithmetic using MPFR, MPFI,
1434
MPC or CXSC external libraries. It also contains a very high-performance
1435
implementation of the LLL (Lenstra-Lenstra-Lovász) lattice reduction
1436
algorithm via the external library FPLLL.
1437
</Item>
1438
<Item>
1439
<Package>ToricVarieties</Package> package by S. Gutsche,
1440
which provides data structures to handle toric varieties by their
1441
commutative algebra structure and by their combinatorics.
1442
</Item>
1443
</List>
1444
1445
</Section>
1446
1447
1448
</Chapter>
1449
1450
1451
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
1452
<!-- %% -->
1453
<!-- %E -->
1454
1455