
| Current Path : /usr/share/gap/doc/changes/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //usr/share/gap/doc/changes/chap2_mj.html |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript"
src="mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (changes) - Chapter 2: Changes between GAP 4.9 and GAP 4.10</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap2" onload="jscontent()">
<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a> <a href="chap1_mj.html">1</a> <a href="chap2_mj.html">2</a> <a href="chap3_mj.html">3</a> <a href="chap4_mj.html">4</a> <a href="chap5_mj.html">5</a> <a href="chap6_mj.html">6</a> <a href="chap7_mj.html">7</a> <a href="chap8_mj.html">8</a> <a href="chap9_mj.html">9</a> <a href="chapInd_mj.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap1_mj.html">[Previous Chapter]</a> <a href="chap3_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap2.html">[MathJax off]</a></p>
<p><a id="X795B238486D0ABCD" name="X795B238486D0ABCD"></a></p>
<div class="ChapSects"><a href="chap2_mj.html#X795B238486D0ABCD">2 <span class="Heading">Changes between <strong class="pkg">GAP</strong> 4.9 and <strong class="pkg">GAP</strong> 4.10</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2_mj.html#X7AC99045788C39ED">2.1 <span class="Heading"><strong class="pkg">GAP</strong> 4.10.0 (November 2018)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7D6E0C387D13B429">2.1-1 <span class="Heading">New features and major changes</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7D7FE19B7F8235E5">2.1-2 <span class="Heading">Improved and extended functionality</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X82A7352D8641A11E">2.1-3 <span class="Heading">Changed documentation</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X842F3691816406D6">2.1-4 <span class="Heading">Fixed bugs that could lead to crashes</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7D8629AE7B18F72B">2.1-5 <span class="Heading">Fixed bugs that could lead to incorrect results</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X86F4ECE78773DE72">2.1-6 <span class="Heading">Fixed bugs that could lead to break loops</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X8470A7907B252827">2.1-7 <span class="Heading">Other fixed bugs</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7E82CC3E7C54ACEC">2.1-8 <span class="Heading">Removed or obsolete functionality</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X844ECC8387ADC6D7">2.1-9 <span class="Heading">Packages</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2_mj.html#X858254CF7D9DE943">2.2 <span class="Heading"><strong class="pkg">GAP</strong> 4.10.1 (February 2019)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X785A404B8565D020">2.2-1 <span class="Heading">Changes in the core <strong class="pkg">GAP</strong> system introduced in <strong class="pkg">GAP</strong> 4.10.1</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7D3DEF227BFDF572">2.2-2 <span class="Heading">New and updated packages since <strong class="pkg">GAP</strong> 4.10.0</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2_mj.html#X788B3576809DC149">2.3 <span class="Heading"><strong class="pkg">GAP</strong> 4.10.2 (June 2019)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7B1174477F4EB41B">2.3-1 <span class="Heading">Changes in the core <strong class="pkg">GAP</strong> system introduced in <strong class="pkg">GAP</strong> 4.10.21</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap2_mj.html#X7A4D9C2B857C8C78">2.3-2 <span class="Heading">New and updated packages since <strong class="pkg">GAP</strong> 4.10.1</span></a>
</span>
</div></div>
</div>
<h3>2 <span class="Heading">Changes between <strong class="pkg">GAP</strong> 4.9 and <strong class="pkg">GAP</strong> 4.10</span></h3>
<p>This chapter contains an overview of the most important changes introduced in <strong class="pkg">GAP</strong> 4.10.0 release (the first public release of <strong class="pkg">GAP</strong> 4.10). Later it will also contain information about subsequent update releases for <strong class="pkg">GAP</strong> 4.10.</p>
<p>These changes are also listed on the Wiki page <span class="URL"><a href="https://github.com/gap-system/GAP/wiki/gap-4.10-release-notes">https://github.com/gap-system/GAP/wiki/gap-4.10-release-notes</a></span>.</p>
<p><a id="X7AC99045788C39ED" name="X7AC99045788C39ED"></a></p>
<h4>2.1 <span class="Heading"><strong class="pkg">GAP</strong> 4.10.0 (November 2018)</span></h4>
<p><a id="X7D6E0C387D13B429" name="X7D6E0C387D13B429"></a></p>
<h5>2.1-1 <span class="Heading">New features and major changes</span></h5>
<dl>
<dt><strong class="Mark">Reduce impact of immediate methods</strong></dt>
<dd><p><strong class="pkg">GAP</strong> allows declaring so-called "immediate methods". 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 <code class="code">IsFinite</code> and <code class="code">IsTrivial</code> of the group suitably.</p>
<p>While this can be very elegant and useful in interactive <strong class="pkg">GAP</strong> 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>
<p>To address this, various steps were taken:</p>
<ul>
<li><p>some immediate methods were turned into regular methods;</p>
</li>
<li><p>a special handlers for <code class="code">SetSize</code> was created that deduces properties which previously were taken care of by immediate methods;</p>
</li>
<li><p>some immediate methods were replaced by implications (set via <code class="code">InstallTrueMethod</code>), a mechanism that essentially adds zero overhead, unlike immediate methods;</p>
</li>
<li><p>various group constructors were modified to precompute and preset properties of freshly created group objects, to avoid triggering immediate methods for these.</p>
</li>
</ul>
<p>As a result of these and other changes, consider the following example; with <strong class="pkg">GAP</strong> 4.9, it takes about 130 seconds on one test system, while with <strong class="pkg">GAP</strong> 4.10 it runs in about 22 seconds, i.e., more than six times faster.</p>
<div class="example"><pre>
G:=PcGroupCode( 741231213963541373679312045151639276850536621925972119311,11664);;
IsomorphismGroups(G,PcGroupCode(CodePcGroup(G),Size(G)))<>fail;
</pre></div>
<p>Relevant pull requests and issues: <span class="URL"><a href="https://github.com/gap-system/gap/pull/2386">#2386</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2387">#2387</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2522">#2522</a></span>.</p>
</dd>
<dt><strong class="Mark">Change definition of <code class="code">IsPGroup</code> to <em>not</em> require finiteness</strong></dt>
<dd><p>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 <strong class="pkg">GAP</strong> users: In the past, the <strong class="pkg">GAP</strong> manual entry for <code class="code">IsPGroup</code> defined <span class="SimpleMath">\(p\)</span>-groups as being finite groups, which differs from the most commonly used definition for <span class="SimpleMath">\(p\)</span>-groups. Note however that there was not actual implication installed from <code class="code">IsPGroup</code> to <code class="code">IsFinite</code>, so it always was possible to actually created infinite groups in the filter <code class="code">IsPGroup</code>. In <strong class="pkg">GAP</strong> 4.10, we adjusted (in <span class="URL"><a href="https://github.com/gap-system/gap/pull/1545">#1545</a></span>) the documentation for <code class="code">IsPGroup</code> to the commonly accepted definition for <span class="SimpleMath">\(p\)</span>-groups. In addition, code in the <strong class="pkg">GAP</strong> library and in packages using <code class="code">IsPGroup</code> was audited and (in a very few cases) adjusted to explicitly check <code class="code">IsFinite</code> (see e.g. <span class="URL"><a href="https://github.com/gap-system/gap/pull/2866">#2866</a></span>).</p>
</dd>
<dt><strong class="Mark">Experimental support for using the <strong class="pkg">Julia</strong> garbage collector</strong></dt>
<dd><p>It is now possible to use the garbage collector of the <span class="URL"><a href="https://julialang.org">Julia language</a></span> instead of <strong class="pkg">GAP</strong>'s traditional <strong class="pkg">GASMAN</strong> garbage collector. This is partly motivated by a desire to allow tight integration with <strong class="pkg">GAP</strong> and <strong class="pkg">Julia</strong> in the future. Warning: right now, this is <em>slower</em>, and also requires a patched version of <strong class="pkg">Julia</strong>.</p>
<p>Relevant pull requests: <span class="URL"><a href="https://github.com/gap-system/gap/pull/2092">#2092</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2408">#2408</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2461">#2461</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2485">#2485</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2495">#2495</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2672">#2672</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2688">#2688</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2793">#2793</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2904">#2904</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2905">#2905</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2931">#2931</a></span>.</p>
</dd>
<dt><strong class="Mark"><strong class="pkg">libGAP</strong> (work in progress)</strong></dt>
<dd><p>We now provide a experimental way to allow 3rd party code to link <strong class="pkg">GAP</strong> as a library; this is based on the <strong class="pkg">libGAP</strong> code by <span class="URL"><a href="https://www.sagemath.org">SageMath</a></span>, 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 <strong class="pkg">SageMath</strong> can drop its custom modifications for <strong class="pkg">GAP</strong> 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 <span class="URL"><a href="https://mail.gap-system.org/pipermail/gap/2018-August/001123.html">this email</a></span>.</p>
<p>To get an idea how <strong class="pkg">libGAP</strong> works, you can configure <strong class="pkg">GAP</strong> as normal, and then execute <code class="code">make testlibgap</code> which will build a small program that uses some of the existing API and links <strong class="pkg">GAP</strong>. Relevant pull requests:</p>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/1690">#1690</a></span> Add a callback to <code class="code">FuncJUMP_TO_CATCH</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2528">#2528</a></span> Add <code class="code">IsLIBGAP</code> constant</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2702">#2702</a></span> Add <strong class="pkg">GAP</strong> kernel API</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2723">#2723</a></span> Introduce command line options <code class="code">--norepl</code> and <code class="code">--nointeract</code></p>
</li>
</ul>
</dd>
</dl>
<p><a id="X7D7FE19B7F8235E5" name="X7D7FE19B7F8235E5"></a></p>
<h5>2.1-2 <span class="Heading">Improved and extended functionality</span></h5>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2041">#2041</a></span> Teach <code class="code">FrattiniSubgroup</code> methods to check for solvability</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2053">#2053</a></span> Faster computation of modular inverses of integers</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2057">#2057</a></span> Various changes, including:</p>
<ul>
<li><p>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)</p>
</li>
<li><p>Add <code class="func">MinimalFaithfulPermutationDegree</code> (<span class="RefLink">Reference: MinimalFaithfulPermutationDegree</span>) attribute for finite groups</p>
</li>
<li><p>Improve performance of <code class="code">GQuotients(F,G)</code> when <code class="code">F</code> is an fp group</p>
</li>
<li><p>Some other performance and documentation tweaks</p>
</li>
</ul>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2061">#2061</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2086">#2086</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2159">#2159</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2306">#2306</a></span> Speed up <code class="code">GcdInt</code>, <code class="code">LcmInt</code>, <code class="code">PValuation</code>, <code class="code">RootInt</code>, <code class="code">SmallestRootInt</code>, <code class="code">IsPrimePowerInt</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2063">#2063</a></span> Teach <strong class="pkg">GAP</strong> that BPSW pseudo primes less than <span class="SimpleMath">\(2^{64}\)</span> are all known to be prime (the previous limit was <span class="SimpleMath">\(10^{13}\)</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2091">#2091</a></span> Refactor <code class="code">DeclareAttribute</code> and <code class="code">NewAttribute</code> (arguments are now verified stricter)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2115">#2115</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2204">#2204</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2272">#2272</a></span> Allow (optionally) passing a random source to many more <code class="code">Random</code> methods than before, and also to <code class="code">RandomList</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2136">#2136</a></span> Add <code class="code">shortname</code> entry to record returned by <code class="code">IsomorphismTypeInfoFiniteSimpleGroup</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2181">#2181</a></span> Implement <code class="code">Union(X,Y)</code>, where <code class="code">X</code> and <code class="code">Y</code> are in <code class="code">PositiveIntegers</code>, <code class="code">NonnegativeIntegers</code>, <code class="code">Integers</code>, <code class="code">GaussianIntegers</code>, <code class="code">Rationals</code>, <code class="code">GaussianRationals</code>, <code class="code">Cyclotomics</code>, at least where a suitable output object exists (we already provided <code class="code">Intersection(X,Y)</code> for a long time)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2185">#2185</a></span> Implement <code class="code">IsCentral(M,x)</code>, where <code class="code">M</code> is a magma, monoid, group, ring, algebra, etc. and <code class="code">x</code> an element of <code class="code">M</code> (the documentation already claimed that these exist for a long time)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2199">#2199</a></span> Optimize true/false conditions when coding if-statements</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2200">#2200</a></span> Add <code class="func">StringFormatted</code> (<span class="RefLink">Reference: StringFormatted</span>), <code class="func">PrintFormatted</code> (<span class="RefLink">Reference: PrintFormatted</span>), <code class="func">PrintToFormatted</code> (<span class="RefLink">Reference: PrintToFormatted</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2222">#2222</a></span> Turn hidden implications into actual implications</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2223">#2223</a></span> Add operation <code class="func">PositionsBound</code> (<span class="RefLink">Reference: PositionsBound</span>) which returns the set of all bound positions in a given list</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2224">#2224</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2243">#2243</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2340">#2340</a></span> Improve <code class="code">ShowImpliedFilters</code> output</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2225">#2225</a></span> Improve <code class="code">LocationFunc</code> for kernel function</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2232">#2232</a></span> Make <code class="code">ValueGlobal</code> faster</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2242">#2242</a></span> Add global function <code class="func">CycleFromList</code> (<span class="RefLink">Reference: CycleFromList</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2244">#2244</a></span> Make <code class="code">rank</code> argument to <code class="code">InstallImmediateMethod</code> optional, similar to <code class="code">InstallMethod</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2274">#2274</a></span> Ensure uniform printing of machine floats <code class="code">nan</code>, <code class="code">inf</code>, <code class="code">-inf</code> across different operating systems</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2287">#2287</a></span> Turn <code class="code">IsInfiniteAbelianizationGroup</code> into a property and add some implications involving it</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2293">#2293</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2602">#2602</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2718">#2718</a></span> Improved and documented various kernel and memory debugging facilities (requires recompiling <strong class="pkg">GAP</strong> with <code class="code">--enable-debug</code>, <code class="code">--enable-valgrind</code> resp. <code class="code">--enable-memory-checking</code>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2308">#2308</a></span> Method selection code was rewritten from <strong class="pkg">GAP</strong> to C</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2326">#2326</a></span> Change <code class="code">SimpleGroup</code> to perform better input validation and improve or correct error message for type 2E</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2375">#2375</a></span> Make <code class="code">last2</code> and <code class="code">last3</code> available in break loops</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2383">#2383</a></span> Speed improvements for automorphism groups</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2393">#2393</a></span> Track location of <code class="code">InstallMethod</code> and <code class="code">InstallImmediateMethod</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2422">#2422</a></span> Improve tracking of <code class="code">InstallMethod</code> and <code class="code">DeclareOperation</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2426">#2426</a></span> Speed up <code class="code">InverseMatMod</code> with integer modulus</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2427">#2427</a></span> Fix and complete support for custom functions (i.e., objects which can be called like a function using <code class="code">obj(arg)</code> syntax)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2456">#2456</a></span> Add <code class="code">PrintString</code> and <code class="code">ViewString</code> methods for character tables</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2474">#2474</a></span> Change <code class="code">IsConstantRationalFunction</code> and <code class="code">IsUnivariateRationalFunction</code> to return <code class="keyw">false</code> if input isn't a rational function (instead of an error)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2474">#2474</a></span> Add methods for multiplying rational functions over arbitrary rings by rationals</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2496">#2496</a></span> Finite groups whose order is known and not divisible by 4 are immediately marked as solvable</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2509">#2509</a></span> Rewrite support for <code class="file">.gz</code> compressed files to use <strong class="pkg">zlib</strong>, now works on Windows</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2519">#2519</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2524">#2524</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2531">#2531</a></span> <code class="code">Test</code> now rejects empty inputs and warns if the input contains no test</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2574">#2574</a></span> When reporting syntax errors, <strong class="pkg">GAP</strong> now "underlines" the complete last token, not just the position where it stopped parsing</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2577">#2577</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2613">#2613</a></span> Add quadratic and bilinear add forms for <code class="code">Omega(e,d,q)</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2598">#2598</a></span> Add <code class="code">BannerFunction</code> to <code class="file">PackageInfo.g</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2606">#2606</a></span> Improve <code class="code">PageSource</code> to work on functions that were read from a file given by a relative path</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2616">#2616</a></span> Speed up computation of quotients of associative words by using existing (but previously unused) kernel functions for that</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2640">#2640</a></span> Work on <code class="code">MatrixObj</code> and <code class="code">VectorObj</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2654">#2654</a></span> Make <code class="code">Sortex</code> stable</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2666">#2666</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2686">#2686</a></span> Add <code class="code">IsBiCoset</code> attribute for right cosets, which is true if the right coset is also a left coset</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2684">#2684</a></span> Add <code class="code">NormalSubgroups</code> methods for symmetric and alternating permutation groups</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2726">#2726</a></span> Validate <code class="file">PackageInfo.g</code> when loading packages</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2733">#2733</a></span> Minor performance improvements, code cleanup and very local fixes</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2750">#2750</a></span> Reject some invalid uses of <code class="code">~</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2812">#2812</a></span> Reduce memory usage and improve performance the MTC (modified Todd-Coxeter) code that was rewritten in <strong class="pkg">GAP</strong> 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.</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2855">#2855</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2877">#2877</a></span> Add <code class="func">IsPackageLoaded</code> (<span class="RefLink">Reference: IsPackageLoaded</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2878">#2878</a></span> Speed up conjugacy tests for permutation by using random permutation of points when selecting base in centraliser</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2899">#2899</a></span> <code class="code">TestDirectory</code> reports number of failures and failed files</p>
</li>
</ul>
<p><a id="X82A7352D8641A11E" name="X82A7352D8641A11E"></a></p>
<h5>2.1-3 <span class="Heading">Changed documentation</span></h5>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2192">#2192</a></span> Add an example for <code class="func">PRump</code> (<span class="RefLink">Reference: PRump</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2219">#2219</a></span> Add examples to the relations chapter (see <span class="RefLink">Reference: Relations</span>).</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2360">#2360</a></span> Document <code class="func">IdealDecompositionsOfPolynomial</code> (<span class="RefLink">Reference: IdealDecompositionsOfPolynomial</span>) (also accessible via its synonym <code class="code">DecomPoly</code>) and <code class="func">NormalizerViaRadical</code> (<span class="RefLink">Reference: NormalizerViaRadical</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2366">#2366</a></span> Do not recommend avoiding <code class="code">X</code> which is a synonym for <code class="func">Indeterminate</code> (<span class="RefLink">Reference: Indeterminate</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2432">#2432</a></span> Correct a claim about the index of <code class="code">Omega(e,p,q)</code> in <code class="code">SO(e,p,q)</code> (see <code class="func">SO</code> (<span class="RefLink">Reference: SO</span>))</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2549">#2549</a></span> Update documentation of the <code class="code">-T</code> command line option (see <span class="RefLink">Reference: Command Line Options</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2551">#2551</a></span> Add new command line option <code class="code">--alwaystrace</code> which ensures error backtraces are printed even if break loops are disabled (see <span class="RefLink">Reference: Command Line Options</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2681">#2681</a></span> Documented <code class="func">ClassPositionsOfSolvableRadical</code> (<span class="RefLink">Reference: ClassPositionsOfSolvableRadical</span>) and <code class="func">CharacterTableOfNormalSubgroup</code> (<span class="RefLink">Reference: CharacterTableOfNormalSubgroup</span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2834">#2834</a></span> Improve manual section about <code class="code">Info</code> classes (see <span class="RefLink">Reference: Info Functions</span>)</p>
</li>
</ul>
<p><a id="X842F3691816406D6" name="X842F3691816406D6"></a></p>
<h5>2.1-4 <span class="Heading">Fixed bugs that could lead to crashes</span></h5>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2154">#2154</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2242">#2242</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2294">#2294</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2344">#2344</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2353">#2353</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2736">#2736</a></span> Fix several potential (albeit rare) crashes related to garbage collection</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2196">#2196</a></span> Fix crash in <code class="code">HasKeyBag</code> on SPARC Solaris 11</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2305">#2305</a></span> Fix crash in <code class="code">PartialPerm([1,2,8],[3,4,1,2]);</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2477">#2477</a></span> Fix crash if <code class="code">~</code> is used to modify list</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2499">#2499</a></span> Fix crash in the kernel functions <code class="code">{8,16,32}Bits_ExponentSums3</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2601">#2601</a></span> Fix crash in <code class="code">MakeImmutable(rec(x:=~));</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2665">#2665</a></span> Fix crash when an empty filename is passed</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2711">#2711</a></span> Fix crash when tracing buggy attribute/property methods that fail to return a value</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2766">#2766</a></span> Fix obscure crashes by using <code class="code">a!{l}</code> syntax inside a function (this syntax never was fully implemented and was unusable, and now has been removed)</p>
</li>
</ul>
<p><a id="X7D8629AE7B18F72B" name="X7D8629AE7B18F72B"></a></p>
<h5>2.1-5 <span class="Heading">Fixed bugs that could lead to incorrect results</span></h5>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2085">#2085</a></span> Fix bugs in <code class="code">JenningsLieAlgebra</code> and <code class="code">PCentralLieAlgebra</code> that could e.g. lead to incorrect <code class="code">LieLowerCentralSeries</code> results</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2113">#2113</a></span> Fix <code class="code">IsMonomial</code> for reducible characters and some related improvements</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2183">#2183</a></span> Fix bug in <code class="code">ValueMolienSeries</code> that could lead to <code class="code">ValueMolienSeries(m,0)</code> not being 1</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2198">#2198</a></span> Make multiplication of larger integers by tiny floats commutative (e.g. now <span class="SimpleMath">\(10.^{-300} * 10^{400}\)</span> and <span class="SimpleMath">\(10^{400} * 10.^-300\)</span> both give infinity, while before <span class="SimpleMath">\(10^{400} * 10.^{-300}\)</span> gave <span class="SimpleMath">\(1.e+100\)</span>); also ensure various strange inputs, like <code class="code">rec()^1;</code>, produce an error (instead of setting <code class="code">a^1 = a</code> and <code class="code">1*a = a</code> for almost any kind of object)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2273">#2273</a></span> Fix <code class="code">TypeOfOperation</code> for setters of and-filters</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2275">#2275</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2280">#2280</a></span> Fix <code class="code">IsFinitelyGeneratedGroup</code> and <code class="code">IsFinitelyGeneratedMonoid</code> to not (incorrectly) assume that a given infinite generating set implies that there is no finite generating set</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2311">#2311</a></span> Do not set <code class="code">IsFinitelyGeneratedGroup</code> for finitely generated magmas which are not groups</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2452">#2452</a></span> Fix bug that allowed creating empty magmas in the filters <code class="code">IsTrivial</code> and <code class="code">IsMagmaWithInverses</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2689">#2689</a></span> Fix <code class="code">LogFFE</code> to not return negative results on 32 bit systems</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2766">#2766</a></span> Fix a bug that allowed creating corrupt permutations</p>
</li>
</ul>
<p><a id="X86F4ECE78773DE72" name="X86F4ECE78773DE72"></a></p>
<h5>2.1-6 <span class="Heading">Fixed bugs that could lead to break loops</span></h5>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2040">#2040</a></span> Raise error if eager float literal conversion fails (fixes <span class="URL"><a href="https://github.com/gap-system/gap/pull/1105">#1105</a></span>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2582">#2582</a></span> Fix <code class="code">ExtendedVectors</code> for trivial vector spaces</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2617">#2617</a></span> Fix <code class="code">HighestWeightModule</code> for Lie algebras in certain cases</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2829">#2829</a></span> Fix <code class="code">ShallowCopy</code> for <code class="code">IteratorOfCartesianProduct</code></p>
</li>
</ul>
<p><a id="X8470A7907B252827" name="X8470A7907B252827"></a></p>
<h5>2.1-7 <span class="Heading">Other fixed bugs</span></h5>
<ul>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2220">#2220</a></span> Do not set <code class="code">IsSubsetLocallyFiniteGroup</code> filter for finite fields</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2268">#2268</a></span> Handle spaces in filenames of gzipped filenames</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2269">#2269</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2660">#2660</a></span> Fix some issues with the interface between <strong class="pkg">GAP</strong> and <strong class="pkg">XGAP</strong> (or other similar frontends for <strong class="pkg">GAP</strong>)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2315">#2315</a></span> Prevent creation of groups of floats, just like we prevent creation of groups of cyclotomics</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2350">#2350</a></span> Fix prompt after line continuation</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2365">#2365</a></span> Fix tracing of mutable variants of <code class="code">One</code>/<code class="code">Zero</code>/<code class="code">Inv</code>/<code class="code">AInv</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2398">#2398</a></span> Fix <code class="code">PositionStream</code> to report correct position</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2467">#2467</a></span> Fix support for identifiers of length 1023 and more</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2470">#2470</a></span> Do not display garbage after certain syntax error messages</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2533">#2533</a></span> Fix composing a map with an identity map to not produce a range that is too big</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2638">#2638</a></span> Fix result of <code class="code">Random</code> on 64 bit big endian system to match those on little endian, and on 32 bit big endian</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2672">#2672</a></span> Fix <code class="code">MakeImmutable</code> for weak pointer objects, which previously failed to make subobjects immutable</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2674">#2674</a></span> Fix <code class="code">SaveWorkspace</code> to return <code class="keyw">false</code> in case of an error, and <code class="keyw">true</code> only if successful</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2681">#2681</a></span> Fix <code class="code">Display</code> for the character table of a trivial group</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2716">#2716</a></span> 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.</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2720">#2720</a></span> Reject workspaces made in a <strong class="pkg">GAP</strong> with readline support in a <strong class="pkg">GAP</strong> without, and vice versa, instead of crashing</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2657">#2657</a></span> The subobjects of the mutable values of the attributes <code class="code">ComputedClassFusions</code>, <code class="code">ComputedIndicators</code>, <code class="code">ComputedPowerMaps</code>, <code class="code">ComputedPrimeBlockss</code> 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 <code class="code">0 * ComputedPowerMaps( CharacterTable( "A5" ) )[2]</code> had been a mutable list before the change, and is an immutable list from now on.</p>
</li>
</ul>
<p><a id="X7E82CC3E7C54ACEC" name="X7E82CC3E7C54ACEC"></a></p>
<h5>2.1-8 <span class="Heading">Removed or obsolete functionality</span></h5>
<ul>
<li><p>Remove multiple undocumented internal functions. Nobody should have been using them, but if you were, you may extract it from a previous <strong class="pkg">GAP</strong> release that still contained it. (<span class="URL"><a href="https://github.com/gap-system/gap/pull/2670">#2670</a></span>, <span class="URL"><a href="https://github.com/gap-system/gap/pull/2781">#2781</a></span> and more)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2335">#2335</a></span> Remove several functions and variables that were deprecated for a long time: <code class="code">DiagonalizeIntMatNormDriven</code>, <code class="code">DeclarePackageDocumentation</code>, <code class="code">KERNEL_VERSION</code>, <code class="code">GAP_ROOT_PATHS</code>, <code class="code">LOADED_PACKAGES</code>, <code class="code">PACKAGES_VERSIONS</code>, <code class="code">IsTuple</code>, <code class="code">StateRandom</code>, <code class="code">RestoreStateRandom</code>, <code class="code">StatusRandom</code>, <code class="code">FactorCosetOperation</code>, <code class="code">ShrinkCoeffs</code>, <code class="code">ExcludeFromAutoload</code>, <code class="code">CharacterTableDisplayPrintLegendDefault</code>, <code class="code">ConnectGroupAndCharacterTable</code>, <code class="code">IsSemilatticeAsSemigroup</code>, <code class="code">CreateCompletionFiles</code>, <code class="code">PositionFirstComponent</code>, <code class="code">ViewLength</code></p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2502">#2502</a></span> Various kernel functions now validate their inputs more carefully (making it harder to produce bad effects by accidentally passing bad data to them)</p>
</li>
<li><p><span class="URL"><a href="https://github.com/gap-system/gap/pull/2700">#2700</a></span> Forbid constructors with 0 arguments (they were never meaningful)</p>
</li>
</ul>
<p><a id="X844ECC8387ADC6D7" name="X844ECC8387ADC6D7"></a></p>
<h5>2.1-9 <span class="Heading">Packages</span></h5>
<p><strong class="pkg">GAP</strong> 4.10.0 distribution includes 140 packages.</p>
<p>Added to the distribution:</p>
<ul>
<li><p>The <strong class="pkg">francy</strong> 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.</p>
</li>
<li><p>The <strong class="pkg">JupyterVis</strong> package by Nathan Carter, which is intended for use in Jupyter Notebooks running <strong class="pkg">GAP</strong> kernels and adds visualization tools for use in such notebooks, such as charts and graphs.</p>
</li>
</ul>
<p>No longer redistributed with <strong class="pkg">GAP</strong>:</p>
<ul>
<li><p>The <strong class="pkg">linboxing</strong> package has been unusable (it does not compile) for several years now, and is unmaintained. It was therefore dropped from the <strong class="pkg">GAP</strong> package distribution. If anybody is willing to take over and fix the package, the latest sources are available at <span class="URL"><a href="https://github.com/gap-packages/linboxing">https://github.com/gap-packages/linboxing</a></span>.</p>
</li>
<li><p>The <strong class="pkg">recogbase</strong> package has been merged into the <code class="code">recog</code> package, and therefore is no longer distributed with <strong class="pkg">GAP</strong>.</p>
</li>
</ul>
<p><a id="X858254CF7D9DE943" name="X858254CF7D9DE943"></a></p>
<h4>2.2 <span class="Heading"><strong class="pkg">GAP</strong> 4.10.1 (February 2019)</span></h4>
<p><a id="X785A404B8565D020" name="X785A404B8565D020"></a></p>
<h5>2.2-1 <span class="Heading">Changes in the core <strong class="pkg">GAP</strong> system introduced in <strong class="pkg">GAP</strong> 4.10.1</span></h5>
<p>Fixes in the experimental way to allow 3rd party code to link <strong class="pkg">GAP</strong> as a library:</p>
<ul>
<li><p>Do not start a session when loading workspace if <code class="code">--nointeract</code> command line option is used (<span class="URL"><a href="https://github.com/gap-system/gap/pull/2840">#2840</a></span>).</p>
</li>
<li><p>Add prototype for <code class="code">GAP_Enter</code> and <code class="code">GAP_Leave</code> macros (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3096">#3096</a></span>).</p>
</li>
<li><p>Prevent infinite recursions in <code class="code">echoandcheck</code> and <code class="code">SyWriteandcheck</code> (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3102">#3102</a></span>).</p>
</li>
<li><p>Remove <code class="code">environ</code> arguments and <code class="code">sysenviron</code> (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3111">#3111</a></span>).</p>
</li>
</ul>
<p>Fixes in the experimental support for using the Julia garbage collector:</p>
<ul>
<li><p>Fix task scanning for the Julia GC (<span class="URL"><a href="https://github.com/gap-system/gap/pull/2969">#2969</a></span>).</p>
</li>
<li><p>Fix stack marking for the Julia GC (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3199">#3199</a></span>).</p>
</li>
<li><p>Specify the Julia binary instead of the Julia prefix (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3243">#3243</a></span>).</p>
</li>
<li><p>Export Julia <code class="code">CFLAGS</code>, <code class="code">LDFLAGS</code>, and <code class="code">LIBS</code> to <code class="code">sysinfo.gap</code> (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3248">#3248</a></span>).</p>
</li>
<li><p>Change <code class="code">MPtr</code> Julia type of <strong class="pkg">GAP</strong> objects to be a subtype of the abstract Julia <code class="code">GapObj</code> type provided by the Julia package <code class="code">GAPTypes.jl</code> (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3497">#3497</a></span>).</p>
</li>
</ul>
<p>Improved and extended functionality:</p>
<ul>
<li><p>Always generate <code class="code">sysinfo.gap</code> (previously, it was only generated if the "compatibility mode" of the build system was enabled) (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3042">#3042</a></span>).</p>
</li>
<li><p>Add support for writing to <code class="code">ERROR_OUTPUT</code> from kernel code (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3043">#3043</a></span>).</p>
</li>
<li><p>Add <code class="code">make check</code> (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3285">#3285</a></span>).</p>
</li>
</ul>
<p>Changed documentation:</p>
<ul>
<li><p>Fix documentation of <code class="func">NumberFFVector</code> (<span class="RefLink">Reference: NumberFFVector</span>) and add an example (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3079">#3079</a></span>).</p>
</li>
</ul>
<p>Fixed bugs that could lead to crashes:</p>
<ul>
<li><p>Fix readline crash when using autocomplete with <code class="code">colored-completion-prefix</code> turned on in Bash (<span class="URL"><a href="https://github.com/gap-system/gap/pull/2991">#2991</a></span>).</p>
</li>
<li><p>Fix overlapping <code class="code">memcpy</code> in <code class="code">APPEND_LIST</code> (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3216">#3216</a></span>).</p>
</li>
</ul>
<p>Fixed bugs that could lead to incorrect results:</p>
<ul>
<li><p>Fix bugs in the code for partial permutations (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3220">#3220</a></span>).</p>
</li>
<li><p>Fix a bug in <code class="code">Gcd</code> for polynomials not returning standard associates, introduced in <strong class="pkg">GAP</strong> 4.10.0 (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3227">#3227</a></span>).</p>
</li>
</ul>
<p>Fixed bugs that could lead to break loops:</p>
<ul>
<li><p>Change <code class="func">GroupWithGenerators</code> (<span class="RefLink">Reference: GroupWithGenerators</span>) to accept collections again (to avoid regressions in code that relied on this undocumented behavior) (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3095">#3095</a></span>).</p>
</li>
<li><p>Fix <code class="func">ShallowCopy</code> (<span class="RefLink">Reference: ShallowCopy</span>) for for a Knuth-Bendix rewriting system (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3128">#3128</a></span>). [Reported by Ignat Soroko]</p>
</li>
<li><p>Fix <code class="func">IsMonomialMatrix</code> (<span class="RefLink">Reference: IsMonomialMatrix</span>) to work with compressed matrices (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3149">#3149</a></span>). [Reported by Dominik Bernhardt]</p>
</li>
</ul>
<p>Removed or obsolete functionality:</p>
<ul>
<li><p>Disable <code class="code">make install</code> (previously it displayed a warning which often got ignored) (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3005">#3005</a></span>).</p>
</li>
</ul>
<p>Other fixed bugs:</p>
<ul>
<li><p>Fix some errors which stopped triggering a break loop (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3013">#3013</a></span>).</p>
</li>
<li><p>Fix compiler error with GCC 4.4.7 (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3026">#3026</a></span>).</p>
</li>
<li><p>Fix string copying logic (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3071">#3071</a></span>).</p>
</li>
</ul>
<p><a id="X7D3DEF227BFDF572" name="X7D3DEF227BFDF572"></a></p>
<h5>2.2-2 <span class="Heading">New and updated packages since <strong class="pkg">GAP</strong> 4.10.0</span></h5>
<p><strong class="pkg">GAP</strong> 4.10.1 distribution contains 145 packages, including updated versions of 35 packages from <strong class="pkg">GAP</strong> 4.10.0 distribution, and also the following five new packages:</p>
<ul>
<li><p><strong class="pkg">MajoranaAlgebras</strong> by Markus Pfeiffer and Madeleine Whybrow, which constructs Majorana representations of finite groups.</p>
</li>
<li><p><strong class="pkg">PackageManager</strong> by Michael Torpey, providing a collection of functions for installing and removing <strong class="pkg">GAP</strong> packages, with the eventual aim of becoming a full pip-style package manager for the <strong class="pkg">GAP</strong> system.</p>
</li>
<li><p><strong class="pkg">Thelma</strong> by Victor Bovdi and Vasyl Laver, implementing algorithms to deal with threshold elements.</p>
</li>
<li><p><strong class="pkg">walrus</strong> by Markus Pfeiffer, providing methods for proving hyperbolicity of finitely presented groups in polynomial time.</p>
</li>
<li><p><strong class="pkg">YangBaxter</strong> 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.</p>
</li>
</ul>
<p><a id="X788B3576809DC149" name="X788B3576809DC149"></a></p>
<h4>2.3 <span class="Heading"><strong class="pkg">GAP</strong> 4.10.2 (June 2019)</span></h4>
<p><a id="X7B1174477F4EB41B" name="X7B1174477F4EB41B"></a></p>
<h5>2.3-1 <span class="Heading">Changes in the core <strong class="pkg">GAP</strong> system introduced in <strong class="pkg">GAP</strong> 4.10.21</span></h5>
<p>Improvements in the experimental way to allow 3rd party code to link <strong class="pkg">GAP</strong> as a library:</p>
<ul>
<li><p>Add <code class="code">GAP_AssignGlobalVariable</code> and <code class="code">GAP_IsNameOfWritableGlobalVariable</code> to the <strong class="pkg">libGAP</strong> API (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3438">#3438</a></span>).</p>
</li>
</ul>
<p>Fixes in the experimental support for using the <strong class="pkg">Julia</strong> garbage collector:</p>
<ul>
<li><p>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 (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3412">#3412</a></span>).</p>
</li>
<li><p>Fix stack scanning for the Julia GC when GAP is used as a library (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3432">#3432</a></span>).</p>
</li>
</ul>
<p>Fixed bugs that could lead to crashes:</p>
<ul>
<li><p>Fix a bug in <code class="func">TransformationListList</code> (<span class="RefLink">Reference: TransformationListList for a source and destination</span>) which could cause a crash (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3463">#3463</a></span>).</p>
</li>
</ul>
<p>Fixed bugs that could lead to incorrect results:</p>
<ul>
<li><p>Fix a bug in <code class="func">ClassPositionsOfLowerCentralSeries</code> (<span class="RefLink">Reference: ClassPositionsOfLowerCentralSeries</span>). [Reported by Frieder Ladisch] (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3321">#3321</a></span>).</p>
</li>
<li><p>Fix a dangerous bug in the comparison of large negative integers, introduced in GAP 4.10.1: if <code class="code">x</code> and <code class="code">y</code> were equal, but not identical, large negative numbers then <code class="code">x < y</code> returned <code class="keyw">true</code> instead of <code class="keyw">false</code>. (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3478">#3478</a></span>).</p>
</li>
</ul>
<p>Fixed bugs that could lead to break loops:</p>
<ul>
<li><p>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 (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3154">#3154</a></span>).</p>
</li>
<li><p>Fix declaration of sparse action homomorphisms (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3281">#3281</a></span>).</p>
</li>
<li><p><code class="code">LatticeViaRadical</code> called <code class="func">ClosureSubgroupNC</code> (<span class="RefLink">Reference: ClosureSubgroupNC</span>) assuming that the parent contained all generators. It now calls <code class="func">ClosureSubgroup</code> (<span class="RefLink">Reference: ClosureSubgroup</span>) instead, since this can not be always guaranteed (this could happen, for example, in perfect subgroup computation). Also added an assertion to <code class="func">ClosureSubgroupNC</code> (<span class="RefLink">Reference: ClosureSubgroupNC</span>) to catch this situation in other cases. [Reported by Serge Bouc] (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3397">#3397</a></span>).</p>
</li>
<li><p>Fix a "method not found" error in <code class="func">SubdirectProduct</code> (<span class="RefLink">Reference: SubdirectProduct</span>) (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3485">#3485</a></span>).</p>
</li>
</ul>
<p>Other fixed bugs:</p>
<ul>
<li><p>Fix corner case in modified Todd-Coxeter algorithm when relator is trivial (<span class="URL"><a href="https://github.com/gap-system/gap/pull/3311">#3311</a></span>).</p>
</li>
</ul>
<p><a id="X7A4D9C2B857C8C78" name="X7A4D9C2B857C8C78"></a></p>
<h5>2.3-2 <span class="Heading">New and updated packages since <strong class="pkg">GAP</strong> 4.10.1</span></h5>
<p><strong class="pkg">GAP</strong> 4.10.1 distribution contains 145 packages, including updated versions of 55 packages from <strong class="pkg">GAP</strong> 4.10.1 distribution,</p>
<p>A new package <strong class="pkg">MonoidalCategories</strong> by Mohamed Barakat, Sebastian Gutsche and Sebastian Posur have been added to the distribution. It is based on the <strong class="pkg">CAP</strong> package and implements monoidal structures for <strong class="pkg">CAP</strong>.</p>
<p>Unfortunately we had to withdraw the <strong class="pkg">QaoS</strong> 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 <span class="URL"><a href="https://github.com/gap-packages/qaos/issues/13">https://github.com/gap-packages/qaos/issues/13</a></span> for details).</p>
<div class="chlinkprevnextbot"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap1_mj.html">[Previous Chapter]</a> <a href="chap3_mj.html">[Next Chapter]</a> </div>
<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a> <a href="chap1_mj.html">1</a> <a href="chap2_mj.html">2</a> <a href="chap3_mj.html">3</a> <a href="chap4_mj.html">4</a> <a href="chap5_mj.html">5</a> <a href="chap6_mj.html">6</a> <a href="chap7_mj.html">7</a> <a href="chap8_mj.html">8</a> <a href="chap9_mj.html">9</a> <a href="chapInd_mj.html">Ind</a> </div>
<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>