-
Notifications
You must be signed in to change notification settings - Fork 160
/
changes-4.10.xml
923 lines (825 loc) · 45.7 KB
/
changes-4.10.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
<Chapter Label="ChangesGAP49toGAP410">
<Heading>Changes between &GAP; 4.9 and &GAP; 4.10</Heading>
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:<P/>
<URL>https://github.com/gap-system/GAP/wiki/gap-4.10-release-notes</URL>.
<Section Label="GAP4.10.0">
<Heading>&GAP; 4.10.0 (November 2018)</Heading>
<Subsection>
<Heading>New features and major changes</Heading>
<List>
<!--
-->
<Mark>Reduce impact of immediate methods</Mark><Item>
&GAP; allows declaring so-called <Q>immediate methods</Q>. 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 <C>IsFinite</C> and <C>IsTrivial</C> of the
group suitably.
<P/>
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.
<P/>
To address this, various steps were taken:
<List>
<Item>some immediate methods were turned into regular methods;
</Item>
<Item>a special handlers for <C>SetSize</C> was created that deduces properties
which previously were taken care of by immediate methods;
</Item>
<Item>some immediate methods were replaced by implications
(set via <C>InstallTrueMethod</C>), a mechanism that essentially
adds zero overhead, unlike immediate methods;
</Item>
<Item>various group constructors were modified to precompute and preset
properties of freshly created group objects, to avoid triggering immediate
methods for these.
</Item>
</List>
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.
<Log><![CDATA[
G:=PcGroupCode( 741231213963541373679312045151639276850536621925972119311,11664);;
IsomorphismGroups(G,PcGroupCode(CodePcGroup(G),Size(G)))<>fail;
]]></Log>
Relevant pull requests and issues:
<URL><LinkText>&Hash;2386</LinkText><Link>https://github.com/gap-system/gap/pull/2386</Link></URL>,
<URL><LinkText>&Hash;2387</LinkText><Link>https://github.com/gap-system/gap/pull/2387</Link></URL>,
<URL><LinkText>&Hash;2522</LinkText><Link>https://github.com/gap-system/gap/pull/2522</Link></URL>.
</Item>
<!--
-->
<Mark>Change definition of <C>IsPGroup</C> to <E>not</E> require finiteness</Mark><Item>
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 <C>IsPGroup</C> defined <M>p</M>-groups as being
finite groups, which differs from the most commonly used definition for
<M>p</M>-groups. Note however that there was not actual implication installed from
<C>IsPGroup</C> to <C>IsFinite</C>, so it always was possible to actually created
infinite groups in the filter <C>IsPGroup</C>.
In &GAP; 4.10, we adjusted (in <URL><LinkText>&Hash;1545</LinkText><Link>https://github.com/gap-system/gap/pull/1545</Link></URL>)
the documentation for <C>IsPGroup</C> to the commonly accepted definition for
<M>p</M>-groups. In addition, code in the &GAP; library and in packages using
<C>IsPGroup</C> was audited and (in a very few cases) adjusted to explicitly check
<C>IsFinite</C> (see e.g. <URL><LinkText>&Hash;2866</LinkText><Link>https://github.com/gap-system/gap/pull/2866</Link></URL>).
</Item>
<!--
-->
<Mark>Experimental support for using the <Package>Julia</Package> garbage collector</Mark><Item>
It is now possible to use the garbage collector of the <URL Text="Julia language">https://julialang.org</URL>
instead of &GAP;'s traditional <Package>GASMAN</Package> garbage collector. This is partly
motivated by a desire to allow tight integration with &GAP; and <Package>Julia</Package> in the
future. Warning: right now, this is <E>slower</E>, and also requires a patched
version of <Package>Julia</Package>.
<P/>
Relevant pull requests:
<URL><LinkText>&Hash;2092</LinkText><Link>https://github.com/gap-system/gap/pull/2092</Link></URL>,
<URL><LinkText>&Hash;2408</LinkText><Link>https://github.com/gap-system/gap/pull/2408</Link></URL>,
<URL><LinkText>&Hash;2461</LinkText><Link>https://github.com/gap-system/gap/pull/2461</Link></URL>,
<URL><LinkText>&Hash;2485</LinkText><Link>https://github.com/gap-system/gap/pull/2485</Link></URL>,
<URL><LinkText>&Hash;2495</LinkText><Link>https://github.com/gap-system/gap/pull/2495</Link></URL>,
<URL><LinkText>&Hash;2672</LinkText><Link>https://github.com/gap-system/gap/pull/2672</Link></URL>,
<URL><LinkText>&Hash;2688</LinkText><Link>https://github.com/gap-system/gap/pull/2688</Link></URL>,
<URL><LinkText>&Hash;2793</LinkText><Link>https://github.com/gap-system/gap/pull/2793</Link></URL>,
<URL><LinkText>&Hash;2904</LinkText><Link>https://github.com/gap-system/gap/pull/2904</Link></URL>,
<URL><LinkText>&Hash;2905</LinkText><Link>https://github.com/gap-system/gap/pull/2905</Link></URL>,
<URL><LinkText>&Hash;2931</LinkText><Link>https://github.com/gap-system/gap/pull/2931</Link></URL>.
</Item>
<!--
-->
<Mark><Package>libGAP</Package> (work in progress)</Mark><Item>
We now provide a experimental way to allow 3rd party code to link &GAP; as a
library; this is based on the <Package>libGAP</Package> code by
<URL Text="SageMath">https://www.sagemath.org</URL>, 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 <Package>SageMath</Package> 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 <URL Text="this email">https://mail.gap-system.org/pipermail/gap/2018-August/001123.html</URL>.
<P/>
To get an idea how <Package>libGAP</Package> works, you can configure &GAP; as normal, and then execute
<C>make testlibgap</C> which will build a small program that uses some of the existing API and links
&GAP;.
Relevant pull requests:
<List>
<Item><URL><LinkText>&Hash;1690</LinkText><Link>https://github.com/gap-system/gap/pull/1690</Link></URL>
Add a callback to <C>FuncJUMP_TO_CATCH</C>
</Item>
<Item><URL><LinkText>&Hash;2528</LinkText><Link>https://github.com/gap-system/gap/pull/2528</Link></URL>
Add <C>IsLIBGAP</C> constant
</Item>
<Item><URL><LinkText>&Hash;2702</LinkText><Link>https://github.com/gap-system/gap/pull/2702</Link></URL>
Add &GAP; kernel API
</Item>
<Item><URL><LinkText>&Hash;2723</LinkText><Link>https://github.com/gap-system/gap/pull/2723</Link></URL>
Introduce command line options <C>--norepl</C> and <C>--nointeract</C>
</Item>
</List>
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Improved and extended functionality</Heading>
<List>
<Item><URL><LinkText>&Hash;2041</LinkText><Link>https://github.com/gap-system/gap/pull/2041</Link></URL>
Teach <C>FrattiniSubgroup</C> methods to check for solvability
</Item>
<Item><URL><LinkText>&Hash;2053</LinkText><Link>https://github.com/gap-system/gap/pull/2053</Link></URL>
Faster computation of modular inverses of integers
</Item>
<Item><URL><LinkText>&Hash;2057</LinkText><Link>https://github.com/gap-system/gap/pull/2057</Link></URL>
Various changes, including:
<List>
<Item>Improve computation of automorphism groups for fp groups (we still recommend to instead first convert the group to a computationally nice representation, such as a perm or pc group)</Item>
<Item>Add <Ref Attr="MinimalFaithfulPermutationDegree" BookName="ref"/> attribute for finite groups</Item>
<Item>Improve performance of <C>GQuotients(F,G)</C> when <C>F</C> is an fp group</Item>
<Item>Some other performance and documentation tweaks</Item>
</List>
</Item>
<Item><URL><LinkText>&Hash;2061</LinkText><Link>https://github.com/gap-system/gap/pull/2061</Link></URL>,
<URL><LinkText>&Hash;2086</LinkText><Link>https://github.com/gap-system/gap/pull/2086</Link></URL>,
<URL><LinkText>&Hash;2159</LinkText><Link>https://github.com/gap-system/gap/pull/2159</Link></URL>,
<URL><LinkText>&Hash;2306</LinkText><Link>https://github.com/gap-system/gap/pull/2306</Link></URL>
Speed up <C>GcdInt</C>, <C>LcmInt</C>, <C>PValuation</C>, <C>RootInt</C>, <C>SmallestRootInt</C>, <C>IsPrimePowerInt</C>
</Item>
<Item><URL><LinkText>&Hash;2063</LinkText><Link>https://github.com/gap-system/gap/pull/2063</Link></URL>
Teach &GAP; that BPSW pseudo primes less than <M>2^{64}</M> are all known to be prime (the previous limit was <M>10^{13}</M>)
</Item>
<Item><URL><LinkText>&Hash;2091</LinkText><Link>https://github.com/gap-system/gap/pull/2091</Link></URL>
Refactor <C>DeclareAttribute</C> and <C>NewAttribute</C> (arguments are now verified stricter)
</Item>
<Item><URL><LinkText>&Hash;2115</LinkText><Link>https://github.com/gap-system/gap/pull/2115</Link></URL>,
<URL><LinkText>&Hash;2204</LinkText><Link>https://github.com/gap-system/gap/pull/2204</Link></URL>,
<URL><LinkText>&Hash;2272</LinkText><Link>https://github.com/gap-system/gap/pull/2272</Link></URL>
Allow (optionally) passing a random source to many more <C>Random</C> methods than before, and also to <C>RandomList</C>
</Item>
<Item><URL><LinkText>&Hash;2136</LinkText><Link>https://github.com/gap-system/gap/pull/2136</Link></URL>
Add a <C>shortname</C> component to the record that is returned by
the attribute <C>IsomorphismTypeInfoFiniteSimpleGroup</C>
</Item>
<Item><URL><LinkText>&Hash;2181</LinkText><Link>https://github.com/gap-system/gap/pull/2181</Link></URL>
Implement <C>Union(X,Y)</C>, where <C>X</C> and <C>Y</C> are in
<C>PositiveIntegers</C>, <C>NonnegativeIntegers</C>, <C>Integers</C>,
<C>GaussianIntegers</C>, <C>Rationals</C>, <C>GaussianRationals</C>, <C>Cyclotomics</C>,
at least where a suitable output object exists (we already provided
<C>Intersection(X,Y)</C> for a long time)
</Item>
<Item><URL><LinkText>&Hash;2185</LinkText><Link>https://github.com/gap-system/gap/pull/2185</Link></URL>
Implement <C>IsCentral(M,x)</C>, where <C>M</C> is a magma, monoid, group, ring, algebra, etc.
and <C>x</C> an element of <C>M</C> (the documentation already claimed that these exist for a long time)
</Item>
<Item><URL><LinkText>&Hash;2199</LinkText><Link>https://github.com/gap-system/gap/pull/2199</Link></URL>
Optimize true/false conditions when coding if-statements
</Item>
<Item><URL><LinkText>&Hash;2200</LinkText><Link>https://github.com/gap-system/gap/pull/2200</Link></URL>
Add <Ref Func="StringFormatted" BookName="ref"/>, <Ref Func="PrintFormatted" BookName="ref"/>,
<Ref Func="PrintToFormatted" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2222</LinkText><Link>https://github.com/gap-system/gap/pull/2222</Link></URL>
Turn hidden implications into actual implications
</Item>
<Item><URL><LinkText>&Hash;2223</LinkText><Link>https://github.com/gap-system/gap/pull/2223</Link></URL>
Add operation <Ref Oper="PositionsBound" BookName="ref"/> which returns the set of all bound positions in a given list
</Item>
<Item><URL><LinkText>&Hash;2224</LinkText><Link>https://github.com/gap-system/gap/pull/2224</Link></URL>,
<URL><LinkText>&Hash;2243</LinkText><Link>https://github.com/gap-system/gap/pull/2243</Link></URL>,
<URL><LinkText>&Hash;2340</LinkText><Link>https://github.com/gap-system/gap/pull/2340</Link></URL>
Improve <C>ShowImpliedFilters</C> output
</Item>
<Item><URL><LinkText>&Hash;2225</LinkText><Link>https://github.com/gap-system/gap/pull/2225</Link></URL>
Improve <C>LocationFunc</C> for kernel function
</Item>
<Item><URL><LinkText>&Hash;2232</LinkText><Link>https://github.com/gap-system/gap/pull/2232</Link></URL>
Make <C>ValueGlobal</C> faster
</Item>
<Item><URL><LinkText>&Hash;2242</LinkText><Link>https://github.com/gap-system/gap/pull/2242</Link></URL>
Add global function <Ref Func="CycleFromList" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2244</LinkText><Link>https://github.com/gap-system/gap/pull/2244</Link></URL>
Make <C>rank</C> argument to <C>InstallImmediateMethod</C> optional, similar to <C>InstallMethod</C>
</Item>
<Item><URL><LinkText>&Hash;2274</LinkText><Link>https://github.com/gap-system/gap/pull/2274</Link></URL>
Ensure uniform printing of machine floats <C>nan</C>, <C>inf</C>, <C>-inf</C> across different operating systems
</Item>
<Item><URL><LinkText>&Hash;2287</LinkText><Link>https://github.com/gap-system/gap/pull/2287</Link></URL>
Turn <C>IsInfiniteAbelianizationGroup</C> into a property and add some implications involving it
</Item>
<Item><URL><LinkText>&Hash;2293</LinkText><Link>https://github.com/gap-system/gap/pull/2293</Link></URL>,
<URL><LinkText>&Hash;2602</LinkText><Link>https://github.com/gap-system/gap/pull/2602</Link></URL>,
<URL><LinkText>&Hash;2718</LinkText><Link>https://github.com/gap-system/gap/pull/2718</Link></URL>
Improved and documented various kernel and memory debugging facilities (requires recompiling &GAP;
with <C>--enable-debug</C>, <C>--enable-valgrind</C> resp. <C>--enable-memory-checking</C>)
<!-- documented in doc/dev manual -->
</Item>
<Item><URL><LinkText>&Hash;2308</LinkText><Link>https://github.com/gap-system/gap/pull/2308</Link></URL>
Method selection code was rewritten from &GAP; to C
</Item>
<Item><URL><LinkText>&Hash;2326</LinkText><Link>https://github.com/gap-system/gap/pull/2326</Link></URL>
Change <C>SimpleGroup</C> to perform better input validation and improve or correct error message for type 2E
</Item>
<Item><URL><LinkText>&Hash;2375</LinkText><Link>https://github.com/gap-system/gap/pull/2375</Link></URL>
Make <C>last2</C> and <C>last3</C> available in break loops
</Item>
<Item><URL><LinkText>&Hash;2383</LinkText><Link>https://github.com/gap-system/gap/pull/2383</Link></URL>
Speed improvements for automorphism groups
</Item>
<Item><URL><LinkText>&Hash;2393</LinkText><Link>https://github.com/gap-system/gap/pull/2393</Link></URL>
Track location of <C>InstallMethod</C> and <C>InstallImmediateMethod</C>
</Item>
<Item><URL><LinkText>&Hash;2422</LinkText><Link>https://github.com/gap-system/gap/pull/2422</Link></URL>
Improve tracking of <C>InstallMethod</C> and <C>DeclareOperation</C>
</Item>
<Item><URL><LinkText>&Hash;2426</LinkText><Link>https://github.com/gap-system/gap/pull/2426</Link></URL>
Speed up <C>InverseMatMod</C> with integer modulus
</Item>
<Item><URL><LinkText>&Hash;2427</LinkText><Link>https://github.com/gap-system/gap/pull/2427</Link></URL>
Fix and complete support for custom functions (i.e., objects which can be called like a function using <C>obj(arg)</C> syntax)
</Item>
<Item><URL><LinkText>&Hash;2456</LinkText><Link>https://github.com/gap-system/gap/pull/2456</Link></URL>
Add <C>PrintString</C> and <C>ViewString</C> methods for character tables
</Item>
<Item><URL><LinkText>&Hash;2474</LinkText><Link>https://github.com/gap-system/gap/pull/2474</Link></URL>
Change <C>IsConstantRationalFunction</C> and <C>IsUnivariateRationalFunction</C> to return
<K>false</K> if input isn't a rational function (instead of an error)
</Item>
<Item><URL><LinkText>&Hash;2474</LinkText><Link>https://github.com/gap-system/gap/pull/2474</Link></URL>
Add methods for multiplying rational functions over arbitrary rings by rationals
</Item>
<Item><URL><LinkText>&Hash;2496</LinkText><Link>https://github.com/gap-system/gap/pull/2496</Link></URL>
Finite groups whose order is known and not divisible by 4 are immediately marked as solvable
</Item>
<Item><URL><LinkText>&Hash;2509</LinkText><Link>https://github.com/gap-system/gap/pull/2509</Link></URL>
Rewrite support for <File>.gz</File> compressed files to use <Package>zlib</Package>, now works on Windows
</Item>
<Item><URL><LinkText>&Hash;2519</LinkText><Link>https://github.com/gap-system/gap/pull/2519</Link></URL>,
<URL><LinkText>&Hash;2524</LinkText><Link>https://github.com/gap-system/gap/pull/2524</Link></URL>,
<URL><LinkText>&Hash;2531</LinkText><Link>https://github.com/gap-system/gap/pull/2531</Link></URL>
<C>Test</C> now rejects empty inputs and warns if the input contains no test
</Item>
<Item><URL><LinkText>&Hash;2574</LinkText><Link>https://github.com/gap-system/gap/pull/2574</Link></URL>
When reporting syntax errors, &GAP; now <Q>underlines</Q> the complete last token, not just the position where it stopped parsing
</Item>
<Item><URL><LinkText>&Hash;2577</LinkText><Link>https://github.com/gap-system/gap/pull/2577</Link></URL>,
<URL><LinkText>&Hash;2613</LinkText><Link>https://github.com/gap-system/gap/pull/2613</Link></URL>
Add quadratic and bilinear add forms for <C>Omega(e,d,q)</C>
</Item>
<Item><URL><LinkText>&Hash;2598</LinkText><Link>https://github.com/gap-system/gap/pull/2598</Link></URL>
Add <C>BannerFunction</C> to <F>PackageInfo.g</F>
</Item>
<Item><URL><LinkText>&Hash;2606</LinkText><Link>https://github.com/gap-system/gap/pull/2606</Link></URL>
Improve <C>PageSource</C> to work on functions that were read from a file given by a relative path
</Item>
<Item><URL><LinkText>&Hash;2616</LinkText><Link>https://github.com/gap-system/gap/pull/2616</Link></URL>
Speed up computation of quotients of associative words by using existing (but previously unused) kernel functions for that
</Item>
<Item><URL><LinkText>&Hash;2640</LinkText><Link>https://github.com/gap-system/gap/pull/2640</Link></URL>
Work on <C>MatrixObj</C> and <C>VectorObj</C>
</Item>
<Item><URL><LinkText>&Hash;2654</LinkText><Link>https://github.com/gap-system/gap/pull/2654</Link></URL>
Make <C>Sortex</C> stable
</Item>
<Item><URL><LinkText>&Hash;2666</LinkText><Link>https://github.com/gap-system/gap/pull/2666</Link></URL>,
<URL><LinkText>&Hash;2686</LinkText><Link>https://github.com/gap-system/gap/pull/2686</Link></URL>
Add <C>IsBiCoset</C> attribute for right cosets, which is true if the right coset is also a left coset
</Item>
<Item><URL><LinkText>&Hash;2684</LinkText><Link>https://github.com/gap-system/gap/pull/2684</Link></URL>
Add <C>NormalSubgroups</C> methods for symmetric and alternating permutation groups
</Item>
<Item><URL><LinkText>&Hash;2726</LinkText><Link>https://github.com/gap-system/gap/pull/2726</Link></URL>
Validate <F>PackageInfo.g</F> when loading packages
</Item>
<Item><URL><LinkText>&Hash;2733</LinkText><Link>https://github.com/gap-system/gap/pull/2733</Link></URL>
Minor performance improvements, code cleanup and very local fixes
</Item>
<Item><URL><LinkText>&Hash;2750</LinkText><Link>https://github.com/gap-system/gap/pull/2750</Link></URL>
Reject some invalid uses of <C>~</C>
</Item>
<Item><URL><LinkText>&Hash;2812</LinkText><Link>https://github.com/gap-system/gap/pull/2812</Link></URL>
Reduce memory usage and improve performance the MTC (modified Todd-Coxeter) code
that was rewritten in &GAP; 4.9, but which was much slower than the old (but buggy)
code it replaced; the difference is now small, but the old code still is faster in some case.
</Item>
<Item><URL><LinkText>&Hash;2855</LinkText><Link>https://github.com/gap-system/gap/pull/2855</Link></URL>,
<URL><LinkText>&Hash;2877</LinkText><Link>https://github.com/gap-system/gap/pull/2877</Link></URL>
Add <Ref Func="IsPackageLoaded" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2878</LinkText><Link>https://github.com/gap-system/gap/pull/2878</Link></URL>
Speed up conjugacy tests for permutation by using random permutation of points when selecting base in centraliser
</Item>
<Item><URL><LinkText>&Hash;2899</LinkText><Link>https://github.com/gap-system/gap/pull/2899</Link></URL>
<C>TestDirectory</C> reports number of failures and failed files
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Changed documentation</Heading>
<List>
<Item><URL><LinkText>&Hash;2192</LinkText><Link>https://github.com/gap-system/gap/pull/2192</Link></URL>
Add an example for <Ref Oper="PRump" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2219</LinkText><Link>https://github.com/gap-system/gap/pull/2219</Link></URL>
Add examples to the relations chapter (see <Ref Chap="Relations" BookName="ref"/>).
</Item>
<Item><URL><LinkText>&Hash;2360</LinkText><Link>https://github.com/gap-system/gap/pull/2360</Link></URL>
Document <Ref Func="IdealDecompositionsOfPolynomial" BookName="ref"/> (also accessible via its
synonym <C>DecomPoly</C>) and <Ref Func="NormalizerViaRadical" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2366</LinkText><Link>https://github.com/gap-system/gap/pull/2366</Link></URL>
Do not recommend avoiding <C>X</C> which is a synonym for <Ref Oper="Indeterminate" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2432</LinkText><Link>https://github.com/gap-system/gap/pull/2432</Link></URL>
Correct a claim about the index of <C>Omega(e,p,q)</C> in <C>SO(e,p,q)</C>
(see <Ref Func="SO" BookName="ref"/>)
</Item>
<Item><URL><LinkText>&Hash;2549</LinkText><Link>https://github.com/gap-system/gap/pull/2549</Link></URL>
Update documentation of the <C>-T</C> command line option (see <Ref Sect="Command Line Options" BookName="ref"/>)
</Item>
<Item><URL><LinkText>&Hash;2551</LinkText><Link>https://github.com/gap-system/gap/pull/2551</Link></URL>
Add new command line option <C>--alwaystrace</C> which ensures error backtraces are printed even if break loops are disabled
(see <Ref Sect="Command Line Options" BookName="ref"/>)
</Item>
<Item><URL><LinkText>&Hash;2681</LinkText><Link>https://github.com/gap-system/gap/pull/2681</Link></URL>
Documented <Ref Attr="ClassPositionsOfSolvableRadical" BookName="ref"/> and
<Ref Func="CharacterTableOfNormalSubgroup" BookName="ref"/>
</Item>
<Item><URL><LinkText>&Hash;2834</LinkText><Link>https://github.com/gap-system/gap/pull/2834</Link></URL>
Improve manual section about <C>Info</C> classes (see <Ref Sect="Info Functions" BookName="ref"/>)
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Fixed bugs that could lead to crashes</Heading>
<List>
<Item><URL><LinkText>&Hash;2154</LinkText><Link>https://github.com/gap-system/gap/pull/2154</Link></URL>,
<URL><LinkText>&Hash;2242</LinkText><Link>https://github.com/gap-system/gap/pull/2242</Link></URL>,
<URL><LinkText>&Hash;2294</LinkText><Link>https://github.com/gap-system/gap/pull/2294</Link></URL>,
<URL><LinkText>&Hash;2344</LinkText><Link>https://github.com/gap-system/gap/pull/2344</Link></URL>,
<URL><LinkText>&Hash;2353</LinkText><Link>https://github.com/gap-system/gap/pull/2353</Link></URL>,
<URL><LinkText>&Hash;2736</LinkText><Link>https://github.com/gap-system/gap/pull/2736</Link></URL>
Fix several potential (albeit rare) crashes related to garbage collection
</Item>
<Item><URL><LinkText>&Hash;2196</LinkText><Link>https://github.com/gap-system/gap/pull/2196</Link></URL>
Fix crash in <C>HasKeyBag</C> on SPARC Solaris 11
</Item>
<Item><URL><LinkText>&Hash;2305</LinkText><Link>https://github.com/gap-system/gap/pull/2305</Link></URL>
Fix crash in <C>PartialPerm([1,2,8],[3,4,1,2]);</C>
</Item>
<Item><URL><LinkText>&Hash;2477</LinkText><Link>https://github.com/gap-system/gap/pull/2477</Link></URL>
Fix crash if <C>~</C> is used to modify list
</Item>
<Item><URL><LinkText>&Hash;2499</LinkText><Link>https://github.com/gap-system/gap/pull/2499</Link></URL>
Fix crash in the kernel functions <C>{8,16,32}Bits_ExponentSums3</C>
</Item>
<Item><URL><LinkText>&Hash;2601</LinkText><Link>https://github.com/gap-system/gap/pull/2601</Link></URL>
Fix crash in <C>MakeImmutable(rec(x:=~));</C>
</Item>
<Item><URL><LinkText>&Hash;2665</LinkText><Link>https://github.com/gap-system/gap/pull/2665</Link></URL>
Fix crash when an empty filename is passed
</Item>
<Item><URL><LinkText>&Hash;2711</LinkText><Link>https://github.com/gap-system/gap/pull/2711</Link></URL>
Fix crash when tracing buggy attribute/property methods that fail to return a value
</Item>
<Item><URL><LinkText>&Hash;2766</LinkText><Link>https://github.com/gap-system/gap/pull/2766</Link></URL>
Fix obscure crashes by using <C>a!{l}</C> syntax inside a function (this syntax never was fully implemented and was unusable, and now has been removed)
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Fixed bugs that could lead to incorrect results</Heading>
<List>
<Item><URL><LinkText>&Hash;2085</LinkText><Link>https://github.com/gap-system/gap/pull/2085</Link></URL>
Fix bugs in <C>JenningsLieAlgebra</C> and <C>PCentralLieAlgebra</C> that could e.g. lead to incorrect <C>LieLowerCentralSeries</C> results
</Item>
<Item><URL><LinkText>&Hash;2113</LinkText><Link>https://github.com/gap-system/gap/pull/2113</Link></URL>
Fix <C>IsMonomial</C> for reducible characters and some related improvements
</Item>
<Item><URL><LinkText>&Hash;2183</LinkText><Link>https://github.com/gap-system/gap/pull/2183</Link></URL>
Fix bug in <C>ValueMolienSeries</C> that could lead to <C>ValueMolienSeries(m,0)</C> not being 1
</Item>
<Item><URL><LinkText>&Hash;2198</LinkText><Link>https://github.com/gap-system/gap/pull/2198</Link></URL>
Make multiplication of larger integers by tiny floats commutative (e.g. now <M>10.^{-300} * 10^{400}</M>
and <M>10^{400} * 10.^-300</M> both give infinity, while before <M>10^{400} * 10.^{-300}</M> gave <M>1.e+100</M>);
also ensure various strange inputs, like <C>rec()^1;</C>, produce an error (instead of setting
<C>a^1 = a</C> and <C>1*a = a</C> for almost any kind of object)
</Item>
<Item><URL><LinkText>&Hash;2273</LinkText><Link>https://github.com/gap-system/gap/pull/2273</Link></URL>
Fix <C>TypeOfOperation</C> for setters of and-filters
</Item>
<Item><URL><LinkText>&Hash;2275</LinkText><Link>https://github.com/gap-system/gap/pull/2275</Link></URL>,
<URL><LinkText>&Hash;2280</LinkText><Link>https://github.com/gap-system/gap/pull/2280</Link></URL>
Fix <C>IsFinitelyGeneratedGroup</C> and <C>IsFinitelyGeneratedMonoid</C> to not (incorrectly) assume that a given infinite generating set implies that there is no finite generating set
</Item>
<Item><URL><LinkText>&Hash;2311</LinkText><Link>https://github.com/gap-system/gap/pull/2311</Link></URL>
Do not set <C>IsFinitelyGeneratedGroup</C> for finitely generated magmas which are not groups
</Item>
<Item><URL><LinkText>&Hash;2452</LinkText><Link>https://github.com/gap-system/gap/pull/2452</Link></URL>
Fix bug that allowed creating empty magmas in the filters <C>IsTrivial</C> and <C>IsMagmaWithInverses</C>
</Item>
<Item><URL><LinkText>&Hash;2689</LinkText><Link>https://github.com/gap-system/gap/pull/2689</Link></URL>
Fix <C>LogFFE</C> to not return negative results on 32 bit systems
</Item>
<Item><URL><LinkText>&Hash;2766</LinkText><Link>https://github.com/gap-system/gap/pull/2766</Link></URL>
Fix a bug that allowed creating corrupt permutations
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Fixed bugs that could lead to break loops</Heading>
<List>
<Item><URL><LinkText>&Hash;2040</LinkText><Link>https://github.com/gap-system/gap/pull/2040</Link></URL>
Raise error if eager float literal conversion fails (fixes <URL><LinkText>&Hash;1105</LinkText><Link>https://github.com/gap-system/gap/pull/1105</Link></URL>)
</Item>
<Item><URL><LinkText>&Hash;2582</LinkText><Link>https://github.com/gap-system/gap/pull/2582</Link></URL>
Fix <C>ExtendedVectors</C> for trivial vector spaces
</Item>
<Item><URL><LinkText>&Hash;2617</LinkText><Link>https://github.com/gap-system/gap/pull/2617</Link></URL>
Fix <C>HighestWeightModule</C> for Lie algebras in certain cases
</Item>
<Item><URL><LinkText>&Hash;2829</LinkText><Link>https://github.com/gap-system/gap/pull/2829</Link></URL>
Fix <C>ShallowCopy</C> for <C>IteratorOfCartesianProduct</C>
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Other fixed bugs</Heading>
<List>
<Item><URL><LinkText>&Hash;2220</LinkText><Link>https://github.com/gap-system/gap/pull/2220</Link></URL>
Do not set <C>IsSubsetLocallyFiniteGroup</C> filter for finite fields
</Item>
<Item><URL><LinkText>&Hash;2268</LinkText><Link>https://github.com/gap-system/gap/pull/2268</Link></URL>
Handle spaces in filenames of gzipped filenames
</Item>
<Item><URL><LinkText>&Hash;2269</LinkText><Link>https://github.com/gap-system/gap/pull/2269</Link></URL>,
<URL><LinkText>&Hash;2660</LinkText><Link>https://github.com/gap-system/gap/pull/2660</Link></URL>
Fix some issues with the interface between &GAP; and <Package>XGAP</Package> (or other similar frontends for &GAP;)
</Item>
<Item><URL><LinkText>&Hash;2315</LinkText><Link>https://github.com/gap-system/gap/pull/2315</Link></URL>
Prevent creation of groups of floats, just like we prevent creation of groups of cyclotomics
</Item>
<Item><URL><LinkText>&Hash;2350</LinkText><Link>https://github.com/gap-system/gap/pull/2350</Link></URL>
Fix prompt after line continuation
</Item>
<Item><URL><LinkText>&Hash;2365</LinkText><Link>https://github.com/gap-system/gap/pull/2365</Link></URL>
Fix tracing of mutable variants of <C>One</C>/<C>Zero</C>/<C>Inv</C>/<C>AInv</C>
</Item>
<Item><URL><LinkText>&Hash;2398</LinkText><Link>https://github.com/gap-system/gap/pull/2398</Link></URL>
Fix <C>PositionStream</C> to report correct position
</Item>
<Item><URL><LinkText>&Hash;2467</LinkText><Link>https://github.com/gap-system/gap/pull/2467</Link></URL>
Fix support for identifiers of length 1023 and more
</Item>
<Item><URL><LinkText>&Hash;2470</LinkText><Link>https://github.com/gap-system/gap/pull/2470</Link></URL>
Do not display garbage after certain syntax error messages
</Item>
<Item><URL><LinkText>&Hash;2533</LinkText><Link>https://github.com/gap-system/gap/pull/2533</Link></URL>
Fix composing a map with an identity map to not produce a range that is too big
</Item>
<Item><URL><LinkText>&Hash;2638</LinkText><Link>https://github.com/gap-system/gap/pull/2638</Link></URL>
Fix result of <C>Random</C> on 64 bit big endian system to match those on little endian, and on 32 bit big endian
</Item>
<Item><URL><LinkText>&Hash;2672</LinkText><Link>https://github.com/gap-system/gap/pull/2672</Link></URL>
Fix <C>MakeImmutable</C> for weak pointer objects, which previously failed to make subobjects immutable
</Item>
<Item><URL><LinkText>&Hash;2674</LinkText><Link>https://github.com/gap-system/gap/pull/2674</Link></URL>
Fix <C>SaveWorkspace</C> to return <K>false</K> in case of an error, and <K>true</K> only if successful
</Item>
<Item><URL><LinkText>&Hash;2681</LinkText><Link>https://github.com/gap-system/gap/pull/2681</Link></URL>
Fix <C>Display</C> for the character table of a trivial group
</Item>
<Item><URL><LinkText>&Hash;2716</LinkText><Link>https://github.com/gap-system/gap/pull/2716</Link></URL>
When seeding a Mersenne twister from a string, the last few characters would not be used if the string length was not a multiple of 4. Fixing this may lead to different series of random numbers being generated.
</Item>
<Item><URL><LinkText>&Hash;2720</LinkText><Link>https://github.com/gap-system/gap/pull/2720</Link></URL>
Reject workspaces made in a &GAP; with readline support in a &GAP; without, and vice versa, instead of crashing
</Item>
<Item><URL><LinkText>&Hash;2657</LinkText><Link>https://github.com/gap-system/gap/pull/2657</Link></URL>
The subobjects of the mutable values of the attributes <C>ComputedClassFusions</C>, <C>ComputedIndicators</C>, <C>ComputedPowerMaps</C>, <C>ComputedPrimeBlockss</C> are now immutable. This makes sure that the values are not accidentally changed. This change may have side-effects in users' code, for example the object returned by <C>0 * ComputedPowerMaps( CharacterTable( "A5" ) )[2]</C> had been a mutable list before the change, and is an immutable list from now on.
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Removed or obsolete functionality</Heading>
<List>
<Item>Remove multiple undocumented internal functions. Nobody should have been using them, but if you were, you may extract it from a previous &GAP; release that still contained it. (<URL><LinkText>&Hash;2670</LinkText><Link>https://github.com/gap-system/gap/pull/2670</Link></URL>,
<URL><LinkText>&Hash;2781</LinkText><Link>https://github.com/gap-system/gap/pull/2781</Link></URL>
and more)
</Item>
<Item><URL><LinkText>&Hash;2335</LinkText><Link>https://github.com/gap-system/gap/pull/2335</Link></URL>
Remove several functions and variables that were deprecated for a long time: <C>DiagonalizeIntMatNormDriven</C>, <C>DeclarePackageDocumentation</C>, <C>KERNEL_VERSION</C>, <C>GAP_ROOT_PATHS</C>, <C>LOADED_PACKAGES</C>, <C>PACKAGES_VERSIONS</C>, <C>IsTuple</C>, <C>StateRandom</C>, <C>RestoreStateRandom</C>, <C>StatusRandom</C>, <C>FactorCosetOperation</C>, <C>ShrinkCoeffs</C>, <C>ExcludeFromAutoload</C>, <C>CharacterTableDisplayPrintLegendDefault</C>, <C>ConnectGroupAndCharacterTable</C>, <C>IsSemilatticeAsSemigroup</C>, <C>CreateCompletionFiles</C>, <C>PositionFirstComponent</C>, <C>ViewLength</C>
</Item>
<Item><URL><LinkText>&Hash;2502</LinkText><Link>https://github.com/gap-system/gap/pull/2502</Link></URL>
Various kernel functions now validate their inputs more carefully (making it harder to produce bad effects by accidentally passing bad data to them)
</Item>
<Item><URL><LinkText>&Hash;2700</LinkText><Link>https://github.com/gap-system/gap/pull/2700</Link></URL>
Forbid constructors with 0 arguments (they were never meaningful)
</Item>
</List>
</Subsection>
<Subsection>
<Heading>Packages</Heading>
&GAP; 4.10.0 distribution includes 140 packages.
<P/>
Added to the distribution:
<List>
<Item>
The <Package>francy</Package> package by Manuel Martins, which provides an interface
to draw graphics using objects. This interface allows creation of directed and
undirected graphs, trees, line charts, bar charts and scatter charts. These
graphical objects are drawn inside a canvas that includes a space for menus and
to display informative messages. Within the canvas it is possible to interact
with the graphical objects by clicking, selecting, dragging and zooming.
</Item>
<Item>
The <Package>JupyterVis</Package> package by Nathan Carter, which is intended for use
in Jupyter Notebooks running &GAP; kernels and adds visualization tools for use
in such notebooks, such as charts and graphs.
</Item>
</List>
No longer redistributed with &GAP;:
<List>
<Item>The <Package>linboxing</Package> package has been unusable (it does not
compile) for several years now, and is unmaintained. It was therefore dropped
from the &GAP; package distribution. If anybody is willing to take over and
fix the package, the latest sources are available at
<URL>https://github.com/gap-packages/linboxing</URL>.
</Item>
<Item>The <Package>recogbase</Package> package has been merged into the
<C>recog</C> package, and therefore is no longer distributed with &GAP;.
</Item>
</List>
</Subsection>
</Section>
<Section Label="GAP4.10.1">
<Heading>&GAP; 4.10.1 (February 2019)</Heading>
<Subsection Label="Changes in the core GAP system introduced in GAP 4.10.1">
<Heading>Changes in the core &GAP; system introduced in &GAP; 4.10.1</Heading>
Fixes in the experimental way to allow 3rd party code to link &GAP; as a library:
<List>
<Item>
Do not start a session when loading workspace if <C>--nointeract</C> command line option is used
(<URL><LinkText>&Hash;2840</LinkText><Link>https://github.com/gap-system/gap/pull/2840</Link></URL>).
</Item>
<Item>
Add prototype for <C>GAP_Enter</C> and <C>GAP_Leave</C> macros
(<URL><LinkText>&Hash;3096</LinkText><Link>https://github.com/gap-system/gap/pull/3096</Link></URL>).
</Item>
<Item>
Prevent infinite recursions in <C>echoandcheck</C> and <C>SyWriteandcheck</C>
(<URL><LinkText>&Hash;3102</LinkText><Link>https://github.com/gap-system/gap/pull/3102</Link></URL>).
</Item>
<Item>
Remove <C>environ</C> arguments and <C>sysenviron</C>
(<URL><LinkText>&Hash;3111</LinkText><Link>https://github.com/gap-system/gap/pull/3111</Link></URL>).
</Item>
</List>
Fixes in the experimental support for using the Julia garbage collector:
<List>
<Item>
Fix task scanning for the Julia GC
(<URL><LinkText>&Hash;2969</LinkText><Link>https://github.com/gap-system/gap/pull/2969</Link></URL>).
</Item>
<Item>
Fix stack marking for the Julia GC
(<URL><LinkText>&Hash;3199</LinkText><Link>https://github.com/gap-system/gap/pull/3199</Link></URL>).
</Item>
<Item>
Specify the Julia binary instead of the Julia prefix
(<URL><LinkText>&Hash;3243</LinkText><Link>https://github.com/gap-system/gap/pull/3243</Link></URL>).
</Item>
<Item>
Export Julia <C>CFLAGS</C>, <C>LDFLAGS</C>, and <C>LIBS</C> to <C>sysinfo.gap</C>
(<URL><LinkText>&Hash;3248</LinkText><Link>https://github.com/gap-system/gap/pull/3248</Link></URL>).
</Item>
</List>
Improved and extended functionality:
<List>
<Item>
Always generate <C>sysinfo.gap</C> (previously, it was only generated if
the "compatibility mode" of the build system was enabled)
(<URL><LinkText>&Hash;3042</LinkText><Link>https://github.com/gap-system/gap/pull/3042</Link></URL>).
</Item>
<Item>
Add support for writing to <C>ERROR_OUTPUT</C> from kernel code
(<URL><LinkText>&Hash;3043</LinkText><Link>https://github.com/gap-system/gap/pull/3043</Link></URL>).
</Item>
<Item>
Add <C>make check</C>
(<URL><LinkText>&Hash;3285</LinkText><Link>https://github.com/gap-system/gap/pull/3285</Link></URL>).
</Item>
</List>
Changed documentation:
<List>
<Item>
Fix documentation of <Ref Oper="NumberFFVector" BookName="ref"/> and add an example
(<URL><LinkText>&Hash;3079</LinkText><Link>https://github.com/gap-system/gap/pull/3079</Link></URL>).
</Item>
</List>
Fixed bugs that could lead to crashes:
<List>
<Item>
Fix readline crash when using autocomplete with <C>colored-completion-prefix</C> turned on in Bash
(<URL><LinkText>&Hash;2991</LinkText><Link>https://github.com/gap-system/gap/pull/2991</Link></URL>).
</Item>
<Item>
Fix overlapping <C>memcpy</C> in <C>APPEND_LIST</C>
(<URL><LinkText>&Hash;3216</LinkText><Link>https://github.com/gap-system/gap/pull/3216</Link></URL>).
</Item>
</List>
Fixed bugs that could lead to incorrect results:
<List>
<Item>
Fix bugs in the code for partial permutations
(<URL><LinkText>&Hash;3220</LinkText><Link>https://github.com/gap-system/gap/pull/3220</Link></URL>).
</Item>
<Item>
Fix a bug in <C>Gcd</C> for polynomials not returning standard associates, introduced in &GAP; 4.10.0
(<URL><LinkText>&Hash;3227</LinkText><Link>https://github.com/gap-system/gap/pull/3227</Link></URL>).
</Item>
</List>
Fixed bugs that could lead to break loops:
<List>
<Item>
Change <Ref Oper="GroupWithGenerators" BookName="ref"/> to accept collections again (to avoid
regressions in code that relied on this undocumented behavior)
(<URL><LinkText>&Hash;3095</LinkText><Link>https://github.com/gap-system/gap/pull/3095</Link></URL>).
</Item>
<Item>
Fix <Ref Oper="ShallowCopy" BookName="ref"/> for for a Knuth-Bendix rewriting system
(<URL><LinkText>&Hash;3128</LinkText><Link>https://github.com/gap-system/gap/pull/3128</Link></URL>).
[Reported by Ignat Soroko]
</Item>
<Item>
Fix <Ref Prop="IsMonomialMatrix" BookName="ref"/> to work with compressed matrices
(<URL><LinkText>&Hash;3149</LinkText><Link>https://github.com/gap-system/gap/pull/3149</Link></URL>).
[Reported by Dominik Bernhardt]
</Item>
</List>
Removed or obsolete functionality:
<List>
<Item>
Disable <C>make install</C> (previously it displayed a warning which often got ignored)
(<URL><LinkText>&Hash;3005</LinkText><Link>https://github.com/gap-system/gap/pull/3005</Link></URL>).
</Item>
</List>
Other fixed bugs:
<List>
<Item>
Fix some errors which stopped triggering a break loop
(<URL><LinkText>&Hash;3013</LinkText><Link>https://github.com/gap-system/gap/pull/3013</Link></URL>).
</Item>
<Item>
Fix compiler error with GCC 4.4.7
(<URL><LinkText>&Hash;3026</LinkText><Link>https://github.com/gap-system/gap/pull/3026</Link></URL>).
</Item>
<Item>
Fix string copying logic
(<URL><LinkText>&Hash;3071</LinkText><Link>https://github.com/gap-system/gap/pull/3071</Link></URL>).
</Item>
</List>
</Subsection>
<Subsection Label="New and updated packages since GAP 4.10.0">
<Heading>New and updated packages since &GAP; 4.10.0</Heading>
&GAP; 4.10.1 distribution contains 145 packages, including updated
versions of 35 packages from &GAP; 4.10.0 distribution, and also
the following five new packages:
<List>
<Item>
<Package>MajoranaAlgebras</Package>
by Markus Pfeiffer and Madeleine Whybrow, which constructs Majorana
representations of finite groups.
</Item>
<Item>
<Package>PackageManager</Package>
by Michael Torpey, providing a collection of functions for
installing and removing &GAP; packages, with the eventual aim of
becoming a full pip-style package manager for the &GAP; system.
</Item>
<Item>
<Package>Thelma</Package>
by Victor Bovdi and Vasyl Laver, implementing algorithms to deal
with threshold elements.
</Item>
<Item>
<Package>walrus</Package>
by Markus Pfeiffer, providing methods for proving hyperbolicity
of finitely presented groups in polynomial time.
</Item>
<Item>
<Package>YangBaxter</Package>
by Leandro Vendramin and Alexander Konovalov, which provides
functionality to construct classical and skew braces, and also
includes a database of classical and skew braces of small orders.
</Item>
</List>
</Subsection>
</Section>
<Section Label="GAP4.10.2">
<Heading>&GAP; 4.10.2 (June 2019)</Heading>
<Subsection Label="Changes in the core GAP system introduced in GAP 4.10.2">
<Heading>Changes in the core &GAP; system introduced in &GAP; 4.10.21</Heading>
Improvements in the experimental way to allow 3rd party code to link &GAP; as a library:
<List>
<Item>
Add <C>GAP_AssignGlobalVariable</C> and <C>GAP_IsNameOfWritableGlobalVariable</C>
to the <Package>libGAP</Package> API
(<URL><LinkText>&Hash;3438</LinkText><Link>https://github.com/gap-system/gap/pull/3438</Link></URL>).
</Item>
</List>
Fixes in the experimental support for using the <Package>Julia</Package>
garbage collector:
<List>
<Item>
Fix of a problem where the Julia GC during a partial sweep frees some,
but not all objects of an unreachable data structure, and also may
erroneously try to mark the deallocated objects
(<URL><LinkText>&Hash;3412</LinkText><Link>https://github.com/gap-system/gap/pull/3412</Link></URL>).
</Item>
<Item>
Fix stack scanning for the Julia GC when GAP is used as a library
(<URL><LinkText>&Hash;3432</LinkText><Link>https://github.com/gap-system/gap/pull/3432</Link></URL>).
</Item>
</List>
Fixed bugs that could lead to crashes:
<List>
<Item>
Fix a bug in <Ref BookName="ref" Oper="TransformationListList" />
which could cause a crash
(<URL><LinkText>&Hash;3463</LinkText><Link>https://github.com/gap-system/gap/pull/3463</Link></URL>).
</Item>
</List>
Fixed bugs that could lead to incorrect results:
<List>
<Item>
Fix a bug in <Ref BookName="ref" Attr="ClassPositionsOfLowerCentralSeries" />. [Reported by Frieder Ladisch]
(<URL><LinkText>&Hash;3321</LinkText><Link>https://github.com/gap-system/gap/pull/3321</Link></URL>).
</Item>
<Item>
Fix a dangerous bug in the comparison of large negative integers,
introduced in GAP 4.10.1: if <C>x</C> and <C>y</C> were equal,
but not identical, large negative numbers then <C>x < y</C>
returned <K>true</K> instead of <K>false</K>.
(<URL><LinkText>&Hash;3478</LinkText><Link>https://github.com/gap-system/gap/pull/3478</Link></URL>).
</Item>
</List>
Fixed bugs that could lead to break loops:
<List>
<Item>
If the group has been obtained as subgroup from a Fitting free/solvable radical computation,
the data is inherited and might not guarantee that the factor group really is Fitting free.
Added a check and an assertion to catch this situation
(<URL><LinkText>&Hash;3154</LinkText><Link>https://github.com/gap-system/gap/pull/3154</Link></URL>).
</Item>
<Item>
Fix declaration of sparse action homomorphisms
(<URL><LinkText>&Hash;3281</LinkText><Link>https://github.com/gap-system/gap/pull/3281</Link></URL>).
</Item>
<Item>
<C>LatticeViaRadical</C> called <Ref BookName="ref" Func="ClosureSubgroupNC" />
assuming that the parent contained all generators. It now calls
<Ref BookName="ref" Oper="ClosureSubgroup" /> instead, since this can
not be always guaranteed (this could happen, for example, in perfect
subgroup computation). Also added an assertion to
<Ref BookName="ref" Func="ClosureSubgroupNC" />
to catch this situation in other cases. [Reported by Serge Bouc]
(<URL><LinkText>&Hash;3397</LinkText><Link>https://github.com/gap-system/gap/pull/3397</Link></URL>).
</Item>
<Item>
Fix a "method not found" error in
<Ref BookName="ref" Func="SubdirectProduct" />
(<URL><LinkText>&Hash;3485</LinkText><Link>https://github.com/gap-system/gap/pull/3485</Link></URL>).
</Item>
</List>
Other fixed bugs:
<List>
<Item>
Fix corner case in modified Todd-Coxeter algorithm when relator is trivial
(<URL><LinkText>&Hash;3311</LinkText><Link>https://github.com/gap-system/gap/pull/3311</Link></URL>).
</Item>
</List>
</Subsection>
<Subsection Label="New and updated packages since GAP 4.10.1">
<Heading>New and updated packages since &GAP; 4.10.1</Heading>
&GAP; 4.10.1 distribution contains 145 packages, including updated
versions of 55 packages from &GAP; 4.10.1 distribution,
<P/>
A new package <Package>MonoidalCategories</Package> by Mohamed Barakat,
Sebastian Gutsche and Sebastian Posur have been added to the distribution.
It is based on the <Package>CAP</Package> package and implements monoidal
structures for <Package>CAP</Package>.
<P/>
Unfortunately we had to withdraw the <Package>QaoS</Package>
package from distribution of GAP, as the servers it crucially
relies on for its functionality have been permanently retired
some time ago and are not coming back
(see <URL>https://github.com/gap-packages/qaos/issues/13</URL> for details).
</Subsection>
</Section>
</Chapter>