Changes between &GAP; 4.8 and &GAP; 4.9 This chapter contains an overview of the most important changes introduced in &GAP; 4.9.1 release (the 1st public release of &GAP; 4.9). Later it will also contain information about subsequent update releases for &GAP; 4.9.

These changes are also listed on the Wiki page https://github.com/gap-system/GAP/wiki/gap-4.9-release-notes.
&GAP; 4.9.1 (May 2018) Changes in the core &GAP; system introduced in &GAP; 4.9 Major changes: Merged &HPCGAP; into &GAP;. For details, please refer to Subsection at the end of these release notes. &GAP; has a new build system, which resolves many quirks and issues with the old system, and will be easier to maintain. For regular users, the usual ./configure && make should work fine as before. If you are interested in technical details on the new build system, take a look at README.buildsys.md. The guidelines for developing &GAP; packages were revised and moved from the Example package to (&Hash;484 https://github.com/gap-system/gap/pull/484). In addition to supporting single argument lambda functions like a -> a+1, &GAP; now supports lambdas with fewer or more than one argument, or even a variable number. E.g. {a,b} -> a+b is a shorthand for function(a,b) return a+b; end. For details on how to use this, see . For technical details, e.g. why we did not choose the syntax (a,b) -> a+b, see &Hash;490 https://github.com/gap-system/gap/pull/490. Function calls, list accesses and records accesses now can be nested. For example, you can now write y := f().x; (essentially equivalent to y := f();; y := y.x;), which previously would have resulted in an error; see &Hash;457 https://github.com/gap-system/gap/issues/457 and &Hash;462 https://github.com/gap-system/gap/pull/462). The libraries of small, primitive and transitive groups which previously were an integral part of &GAP; were split into three separate packages http://gap-packages.github.io/primgrp/, https://gap-packages.github.io/smallgrp/ and http://www.math.colostate.edu/~hulpke/transgrp/. For backwards compatibility, these are required packages in &GAP; 4.9 (i.e., &GAP; will not start without them). We plan to change this for &GAP; 4.10 (see &Hash;2434 https://github.com/gap-system/gap/pull/2434), once all packages which currently implicitly rely on these new packages had time to add explicit dependencies on them (&Hash;1650 https://github.com/gap-system/gap/pull/1650, &Hash;1714 https://github.com/gap-system/gap/pull/1714). The performance of &GAP;'s sorting functions (such as , , etc.) has been substantially improved, in some examples by more than a factor of four: as a trivial example, compare the timing for Sort([1..100000000] * 0). As a side effect, the result of sorting lists with equal entries may produce different answers compared to previous &GAP; versions. If you would like to make your code independant of the exact employed sorting algorithm, you can use the newly added , and . (For some technical details, see &Hash;609 https://github.com/gap-system/gap/pull/609). We removed our old home-grown big integer code, and instead always use the GMP based big integer code. This means that the GMP library now is a required dependency, not just an optional one. Note that GAP has been using GMP big integer arithmetic for a long time by default, and we also have been bundling GMP with GAP. So this change mostly removed code that was never in use for most users. A number of improvements have been made to . These may lead to different sequences of numbers being created. On the up side, many more methods for (and other RandomXYZ operations) now optionally take an explicit as first argument (but not yet all: help with issue &Hash;1098 https://github.com/gap-system/gap/pull/1098 is welcome). Some relevant pull requests: Allow creating random permutations using a random source (&Hash;1165 https://github.com/gap-system/gap/pull/1165) Let more methods use an alternative source (&Hash;1168 https://github.com/gap-system/gap/pull/1168) Help methods to use (&Hash;810 https://github.com/gap-system/gap/pull/810) Remove uses of old random generator (&Hash;808 https://github.com/gap-system/gap/pull/808) Fix on long (>2^28) lists (&Hash;781 https://github.com/gap-system/gap/pull/781) Fix (&Hash;1511 https://github.com/gap-system/gap/pull/1511) Use in a few more places (&Hash;1599 https://github.com/gap-system/gap/pull/1599) The output and behaviour of the profiling system has been substantially improved: Make profiling correctly handle the same file being opened multiple times (&Hash;1069 https://github.com/gap-system/gap/pull/1069) Do not profile the return statements () inserted into the end of functions (&Hash;1073 https://github.com/gap-system/gap/pull/1073) Ensure we reset OutputtedFilenameList in profiling when a workspace is restored (&Hash;1164 https://github.com/gap-system/gap/pull/1164) Better tracking of amounts of memory allocated and time spent in the garbage collector (&Hash;1806 https://github.com/gap-system/gap/pull/1806) Allow profiling of memory usage (&Hash;1808 https://github.com/gap-system/gap/pull/1808) Remove profiling limit on files with <= 2^16 lines (&Hash;1913 https://github.com/gap-system/gap/pull/1913) In many cases &GAP; now outputs the filename and location of functions in helpful places, e.g. in error messages or when displaying compiled functions. We also try to always use the format FILENAME:LINE, which various utilities already know how to parse (e.g. in `iTerm2`, cmd-clicking on such a string can be configured to open an editor for the file at the indicated line). For some technical details, see &Hash;469 https://github.com/gap-system/gap/pull/469, &Hash;755 https://github.com/gap-system/gap/pull/755), &Hash;1058 https://github.com/gap-system/gap/pull/1058. &GAP; now supports constant variables, whose value cannot change anymore during runtime; code using such constants can then be slightly optimized by &GAP;. E.g. if foo is turned into a constant variable bound to the value false, then &GAP; can optimize if foo then ... fi; blocks completely away. For details, see in . (&Hash;1682 https://github.com/gap-system/gap/pull/1682, &Hash;1770 https://github.com/gap-system/gap/pull/1770) Other changes: Enhance with a major rewrite, enhancing DirectFactorsOfGroup" and adding SemidirectDecompositions; the core algorithm now also works for infinite abelian groups. Further, it became faster by quickly finding abelian direct factors and recognizing several cases where the group is direct indecomposable. (&Hash;379 https://github.com/gap-system/gap/pull/379, &Hash;763 https://github.com/gap-system/gap/pull/763, &Hash;985 https://github.com/gap-system/gap/pull/985) Mark and as nilpotent (&Hash;400 https://github.com/gap-system/gap/pull/400) Add method for for finite nilpotent groups (&Hash;402 https://github.com/gap-system/gap/pull/402) Change and methods for various inverse semigroups and monoids (&Hash;438 https://github.com/gap-system/gap/pull/438, &Hash;880 https://github.com/gap-system/gap/pull/880, &Hash;882 https://github.com/gap-system/gap/pull/882) Enhance some nilpotent and p-group attributes (&Hash;442 https://github.com/gap-system/gap/pull/442) Improve for a list with many ranges (&Hash;444 https://github.com/gap-system/gap/pull/444) Add , a function to expand ~ in filenames. (&Hash;447 https://github.com/gap-system/gap/pull/447) Extra hint in No Method Found error message if one of the arguments is fail (&Hash;460 https://github.com/gap-system/gap/pull/460) Tell Sylow subgroups of natural A_n or S_n their size when we make them (&Hash;529 https://github.com/gap-system/gap/pull/529) Some small enhancements on Sylow and Hall subgroup computations, mostly for nilpotent groups. (&Hash;535 https://github.com/gap-system/gap/pull/535) Remove .zoo archive related tools (&Hash;540 https://github.com/gap-system/gap/pull/540) Add new , , and methods for abelian and/or solvable groups, even infinite ones. The new methods are only triggered if the group already knows that it is abelian and/or solvable. (&Hash;552 https://github.com/gap-system/gap/pull/552, &Hash;583 https://github.com/gap-system/gap/pull/583, &Hash;606 https://github.com/gap-system/gap/pull/606) New attribute NormalHallSubgroups, returning a list of all normal Hall subgroups of a group. (&Hash;561 https://github.com/gap-system/gap/pull/561) Add fallback method for arbitrary groups (&Hash;563 https://github.com/gap-system/gap/pull/563) (&Hash;612 https://github.com/gap-system/gap/pull/612) Add parsing of hex literals in strings, e.g. "\0x61" is turned into "a" (&Hash;612 https://github.com/gap-system/gap/pull/612) Collection of enhancements (&Hash;683 https://github.com/gap-system/gap/pull/683) Various speed improvements to polynomial factorisation and the &GAP; MeatAxe (&Hash;720 https://github.com/gap-system/gap/pull/720, &Hash;1027 https://github.com/gap-system/gap/pull/1027) The code and documentation for transformations is improved and corrected in many instances (&Hash;727 https://github.com/gap-system/gap/pull/727, &Hash;732 https://github.com/gap-system/gap/pull/732) Change RootFFE to optionally takes a field or field size as first argument, from which the roots will be taken (&Hash;761 https://github.com/gap-system/gap/pull/761) Change from a global function to an attribute (&Hash;777 https://github.com/gap-system/gap/pull/777) Add to wrap return value to allow distinguishing between functions which return and functions which don't (&Hash;824 https://github.com/gap-system/gap/pull/824) Allow repeated use of same call (&Hash;835 https://github.com/gap-system/gap/pull/835) New implementation of modified Todd-Coxeter (the old one had bugs, see &Hash;302 https://github.com/gap-system/gap/issues/302), &Hash;843 https://github.com/gap-system/gap/pull/843) New functionality: Cannon/Holt automorphisms and others (&Hash;878 https://github.com/gap-system/gap/pull/878) Add property, and a method for powerful p-groups (&Hash;894 https://github.com/gap-system/gap/pull/894) Improve performance for group isomorphism/automorphisms (&Hash;896 https://github.com/gap-system/gap/pull/896, &Hash;968 https://github.com/gap-system/gap/pull/968) Make , , and support lists which are not collections (&Hash;903 https://github.com/gap-system/gap/pull/903) Some improvements for (&Hash;905 https://github.com/gap-system/gap/pull/905) Add helpers to retrieve information about operations and filters: , , , , , IdOfFilter, IdOfFilterByName, , , , (&Hash;925 https://github.com/gap-system/gap/pull/925, &Hash;1593 https://github.com/gap-system/gap/pull/1593) Add case-insensitive autocomplete (&Hash;928 https://github.com/gap-system/gap/pull/928) Give better error message if a help file is missing (&Hash;939 https://github.com/gap-system/gap/pull/939) Add and (&Hash;952 https://github.com/gap-system/gap/pull/952) Add and (&Hash;956 https://github.com/gap-system/gap/pull/956) Switching default command history length from infinity to 1000 (&Hash;960 https://github.com/gap-system/gap/pull/960) Allow conversion of -infinity to float via and (&Hash;961 https://github.com/gap-system/gap/pull/961) Add option NoPrecomputedData to avoid use of data libraries in certain computations (useful if one wants to verify the content of these data libraries) (&Hash;986 https://github.com/gap-system/gap/pull/986) Remove one-argument version of for a transformation (&Hash;1036 https://github.com/gap-system/gap/pull/1036) Partial perms now have a rather than a , since they are multiplicative rather than additive elements (&Hash;1040 https://github.com/gap-system/gap/pull/1040) Various enhancements: (&Hash;1046 https://github.com/gap-system/gap/pull/1046) A bugfix in for polynomial rings Improvements in handling solvable permutation groups The trivial group now is a member of the perfect groups library Improvements in using tabulated data for maximal subgroups New tests for group constructors and some fixes (e.g. GO(1,4,5) used to trigger an error) (&Hash;1053 https://github.com/gap-system/gap/pull/1053) Make HasSolvableFactorGroup slightly more efficient (&Hash;1062 https://github.com/gap-system/gap/pull/1062) Enhance HasXXFactorGroup (&Hash;1066 https://github.com/gap-system/gap/pull/1066) Remove GAP4stones from tests (&Hash;1072 https://github.com/gap-system/gap/pull/1072) and are now operations, and various bugs were resolved related to isomorphisms of semigroups and monoids (&Hash;1112 https://github.com/gap-system/gap/pull/1112) Mark isomorphisms between trivial groups as bijective (&Hash;1116 https://github.com/gap-system/gap/pull/1116) Speed up and for moduli with large prime factors; also add IS_PROBAB_PRIME_INT kernel function (&Hash;1141 https://github.com/gap-system/gap/pull/1141) The search for the documentation of system setters and testers now returns corresponding attributes and properties (&Hash;1144 https://github.com/gap-system/gap/pull/1144) Remove command line options -c, -U, -i and -X, add --quitonbreak (&Hash;1192 https://github.com/gap-system/gap/pull/1192, &Hash;1265 https://github.com/gap-system/gap/pull/1265, &Hash;1421 https://github.com/gap-system/gap/pull/1421, &Hash;1448 https://github.com/gap-system/gap/pull/1448) Remove Itanium support (&Hash;1163 https://github.com/gap-system/gap/pull/1163) Adding two strings now shows a more helpful error message (&Hash;1314 https://github.com/gap-system/gap/pull/1314) Suppress Unbound global variable warning in (&Hash;1334 https://github.com/gap-system/gap/pull/1334) Increase warning level for Conway polynomial (&Hash;1363 https://github.com/gap-system/gap/pull/1363) Performance improvements to maximal and intermediate subgroups, fix of (&Hash;1390 https://github.com/gap-system/gap/pull/1390) Revise Chapter 52 of the reference manual (fp semigroups and monoids) (&Hash;1441 https://github.com/gap-system/gap/pull/1441) Improve the performance of the Info () statement (&Hash;1464 https://github.com/gap-system/gap/pull/1464, &Hash;1770 https://github.com/gap-system/gap/pull/1770) When printing function bodies, avoid some redundant spaces (&Hash;1498 https://github.com/gap-system/gap/pull/1498) Add kernel functions for directly accessing entries of GF2/8bit compressed matrices (&Hash;1585 https://github.com/gap-system/gap/pull/1585) Add method for functions (&Hash;1591 https://github.com/gap-system/gap/pull/1591) Check modules were compiled with the same version of &GAP; when loading them (&Hash;1600 https://github.com/gap-system/gap/pull/1600) When printing function, reproduce TryNextMethod() correctly (&Hash;1613 https://github.com/gap-system/gap/pull/1613) New Bitfields feature () providing efficient support for packing multiple data items into a single word for cache and memory efficiency (&Hash;1616 https://github.com/gap-system/gap/pull/1616) Improved bin/BuildPackages.sh, in particular added option to abort upon failure (&Hash;2022 https://github.com/gap-system/gap/pull/2022) Rewrote integer code (GMP) for better performance of certain large integer operations, and added kernel implementations of various functions, including these: Add kernel implementations of , ; add new kernel functions ABS_RAT, SIGN_RAT; and speed up , , for divisors which are small powers of 2 (&Hash;1045 https://github.com/gap-system/gap/pull/1045) Add kernel implementations of , , (for integers), (for integers) (&Hash;1075 https://github.com/gap-system/gap/pull/1045) Add kernel implementation of (&Hash;1969 https://github.com/gap-system/gap/pull/1969) Add kernel implementation of (&Hash;1921 https://github.com/gap-system/gap/pull/1921) Add kernel implementation of (&Hash;2019 https://github.com/gap-system/gap/pull/2019) Check version of kernel for package versions (&Hash;1600 https://github.com/gap-system/gap/pull/1600) Add new operation (&Hash;1665 https://github.com/gap-system/gap/pull/1665) Add NumberColumns and NumberRows to MatrixObj interface (&Hash;1657 https://github.com/gap-system/gap/pull/1657) returns an answer for non-cyclic groups that already have a generating set of size 2 (which hence is minimal) (&Hash;1755 https://github.com/gap-system/gap/pull/1755) Add which returns the n-th element of the list if it is bound, and the default value otherwise (&Hash;1762 https://github.com/gap-system/gap/pull/1762) Fast method for ElmsBlist when positions are a range with increment 1 (&Hash;1773 https://github.com/gap-system/gap/pull/1773) Make permutations remember their inverses (&Hash;1831 https://github.com/gap-system/gap/pull/1831) Add invariant forms for GU(1,q) and SU(1,q) (&Hash;1874 https://github.com/gap-system/gap/pull/1874) Implement and for , clarify documentation for (&Hash;1990 https://github.com/gap-system/gap/pull/1990) Improve documentation and interface for floats (&Hash;2016 https://github.com/gap-system/gap/pull/2016) Add method for non-dense lists (&Hash;2021 https://github.com/gap-system/gap/pull/2021) Add TrivialGroup(IsFpGroup) (&Hash;2037 https://github.com/gap-system/gap/pull/2037) Change to return the new objects (&Hash;2098 https://github.com/gap-system/gap/pull/2098) Removed a never released undocumented &HPCGAP; syntax extension which allowed to use a backtick/backquote as alias for . (&Hash;2202 https://github.com/gap-system/gap/pull/2202). Various changes (&Hash;2253 https://github.com/gap-system/gap/pull/2253): Improve performance and memory usage of ImageKernelBlocksHomomorphism" Document Correct documentation to clarify that it requires, but does not test membership fix for trivial matrix groups with empty generating set Make it possible to interrupt repeat continue; until false; and similar tight loops with Ctrl-C (&Hash;2259 https://github.com/gap-system/gap/pull/2259). Improved &GAP; testing infrastructure, extended &GAP; test suite, and increased code coverage Countless other tweaks, improvements, fixes were applied to the &GAP; library, kernel and manual Fixed bugs: Fix bugs in and (&Hash;433 https://github.com/gap-system/gap/pull/433) Fix nice monomorphism dispatch for (e.g. fixes HallSubgroup(GL(3,4), [2,3])) (&Hash;559 https://github.com/gap-system/gap/pull/559) Check for permutations whose degree would exceed the internal limit, and document that limit (&Hash;581 https://github.com/gap-system/gap/pull/581) Fix segfault after quitting from the break loop in certain cases (&Hash;709 https://github.com/gap-system/gap/pull/709 which fixes &Hash;397 https://github.com/gap-system/gap/issues/397) Fix rankings for and (&Hash;711 https://github.com/gap-system/gap/pull/711) Make key and attribute values immutable (&Hash;714 https://github.com/gap-system/gap/pull/714) Make OnTuples([-1], (1,2)) return an error (&Hash;718 https://github.com/gap-system/gap/pull/718) Fix bug in which could corrupt the attribute (&Hash;719 https://github.com/gap-system/gap/pull/719) The length of the list returned by OnSetsPerm is now properly set (&Hash;731 https://github.com/gap-system/gap/pull/731) Fix misbehaving when last member of list with gaps in it is removed (&Hash;766 https://github.com/gap-system/gap/pull/766) Fix bugs in various methods for Rees (0-)matrix semigroups: , , , and (&Hash;768 https://github.com/gap-system/gap/pull/768, &Hash;1676 https://github.com/gap-system/gap/pull/1676) Fix to work correctly for the full transformation semigroup of degree 0 (&Hash;769 https://github.com/gap-system/gap/pull/769) Fix printing very large (> 2^28 points) permutations (&Hash;782 https://github.com/gap-system/gap/pull/782) Fix Intersection([]) (&Hash;854 https://github.com/gap-system/gap/pull/854) Fix crash in IsKernelFunction for some inputs (&Hash;876 https://github.com/gap-system/gap/pull/876) Fix bug in which could cause to enter a break loop (&Hash;941 https://github.com/gap-system/gap/pull/941) Fix crash in some methods involving partial perms (&Hash;948 https://github.com/gap-system/gap/pull/948) FreeMonoid(0) no longer satisfies (&Hash;950 https://github.com/gap-system/gap/pull/950) Fix crash when invoking weak pointer functions on invalid arguments (&Hash;1009 https://github.com/gap-system/gap/pull/1009) Fix a bug parsing character constants (&Hash;1015 https://github.com/gap-system/gap/pull/1015) Fix several bugs and crashes in Z(p,d) for invalid arguments, e.g. Z(4,5), Z(6,3) (&Hash;1029 https://github.com/gap-system/gap/pull/1029, &Hash;1059 https://github.com/gap-system/gap/pull/1059, &Hash;1383 https://github.com/gap-system/gap/pull/1383, &Hash;1573 https://github.com/gap-system/gap/pull/1573) Fix starting &GAP; on systems with large inodes (&Hash;1033 https://github.com/gap-system/gap/pull/1033) Fix and for a partial perm and a partial perm semigroup (they used to return the moved points rather than the fixed points) (&Hash;1034 https://github.com/gap-system/gap/pull/1034) Fix when given a collection of 1 or 0 partial perms (&Hash;1035 https://github.com/gap-system/gap/pull/1035) The behaviour of for a transformation and a list is corrected (&Hash;1036 https://github.com/gap-system/gap/pull/1036) for a 0-simple semigroup is now defined on the zero of the source and range semigroups (&Hash;1038 https://github.com/gap-system/gap/pull/1038) Fix isomorphisms from finitely-presented monoids to finitely-presented semigroups, and allow isomorphisms from semigroups to fp-monoids (&Hash;1039 https://github.com/gap-system/gap/pull/1039) Fix for a partial permutation semigroup without generators (&Hash;1040 https://github.com/gap-system/gap/pull/1040) Fix for positional and component objects (&Hash;1044 https://github.com/gap-system/gap/pull/1044) Fix PlainString causing immutable strings to become mutable (&Hash;1096 https://github.com/gap-system/gap/pull/1096) Restore support for sparc64 (&Hash;1124 https://github.com/gap-system/gap/pull/1124) Fix a problem with `<` for transformations, which could give incorrect results (&Hash;1130 https://github.com/gap-system/gap/pull/1130) Fix crash when comparing recursive data structures such as [~] = [~] (&Hash;1151 https://github.com/gap-system/gap/pull/1151) Ensure output of TrivialGroup(IsPermGroup) has zero generators (&Hash;1247 https://github.com/gap-system/gap/pull/1247) Fix for applying the of an (&Hash;1259 https://github.com/gap-system/gap/pull/1259) Collection of improvements and fixes: (&Hash;1294 https://github.com/gap-system/gap/pull/1294) A fix for quotient rings of rings by structure constants Generic routine for transformation matrix to rational canonical form Speed improvements to block homomorphisms New routines for conjugates or subgroups with desired containment Performance improvement for conjugacy classes in groups with a huge number of classes, giving significant improvements to (e.g. 7-Sylow subgroup in PSL(7,2)), ascending chain and thus in turn double coset calculations and further routines that rely on it Fix to return correct results, instead of always returning false (&Hash;1370 https://github.com/gap-system/gap/pull/1370) Various changes, including fixes for (&Hash;1417 https://github.com/gap-system/gap/pull/1417) Better define the result of (&Hash;1432 https://github.com/gap-system/gap/pull/1432) Check the arguments to to prevent crashes (&Hash;1435 https://github.com/gap-system/gap/pull/1435) Change to return fail for certain invalid inputs (&Hash;1488 https://github.com/gap-system/gap/pull/1488) Fixes for creating Green's classes of semigroups (&Hash;1492 https://github.com/gap-system/gap/pull/1492, &Hash;1771 https://github.com/gap-system/gap/pull/1771) Fix DoImmutableMatrix for finite fields (&Hash;1504 https://github.com/gap-system/gap/pull/1504) Make structural copy handle boolean lists properly (&Hash;1514 https://github.com/gap-system/gap/pull/1514) Minimal fix for algebraic extensions over finite fields of order > 256 (&Hash;1569 https://github.com/gap-system/gap/pull/1569) Fix for computing quotients of certain algebra modules (&Hash;1669 https://github.com/gap-system/gap/pull/1669) Fix an error in the default method for (&Hash;1672 https://github.com/gap-system/gap/pull/1672) Improvements to Rees matrix semigroups code and new tests (&Hash;1676 https://github.com/gap-system/gap/pull/1676) Fix for the trivial polycyclic group (&Hash;1679 https://github.com/gap-system/gap/pull/1679) Fix FroidurePinExtendedAlg for partial permutation monoids (&Hash;1697 https://github.com/gap-system/gap/pull/1697) Fix computing the radical of a zero dimensional associative algebra (&Hash;1701 https://github.com/gap-system/gap/pull/1701) Fix a bug in which could cause a break loop for some associative algebras (&Hash;1716 https://github.com/gap-system/gap/pull/1716) Fix a recursion depth trap error when repeatedly calling (&Hash;1753 https://github.com/gap-system/gap/pull/1753) Fix bugs in for direct products of p-groups (&Hash;1754 https://github.com/gap-system/gap/pull/1754) Fix (available in break loops) when at the bottom of the backtrace (&Hash;1780 https://github.com/gap-system/gap/pull/1780) Fix and for permutation groups with 0 generators (&Hash;1784 https://github.com/gap-system/gap/pull/1784) Fix for transformation semigroups (&Hash;1785 https://github.com/gap-system/gap/pull/1785) Fix no method found errors in and (&Hash;1798 https://github.com/gap-system/gap/pull/1798) Fix an error computing kernel of group homomorphism from fp group into permutation group (&Hash;1809 https://github.com/gap-system/gap/pull/1809) Fix an error in MTC losing components when copying a new augmented coset table (&Hash;1809 https://github.com/gap-system/gap/pull/1809) Fix output of in a break loop, which pointed at the wrong code line in some cases (&Hash;1814 https://github.com/gap-system/gap/pull/1814) Fix the interaction of signals in &GAP; and the `IO` package (&Hash;1851 https://github.com/gap-system/gap/pull/1851) Make line editing resilient to LineEditKeyHandler failure (in particular, don't crash) (&Hash;1856 https://github.com/gap-system/gap/pull/1856) Omit non-characters from results (&Hash;1867 https://github.com/gap-system/gap/pull/1867) Fix when exterior power is 0-dimensional (used to return a 1-dimensional result) (&Hash;1872 https://github.com/gap-system/gap/pull/1872) Fix recursion depth trap and other improvements for quotients of fp groups (&Hash;1884 https://github.com/gap-system/gap/pull/1884) Fix a bug in the computation of a permutation group isomorphic to a group of automorphisms (&Hash;1907 https://github.com/gap-system/gap/pull/1907) Fix bug in (&Hash;1920 https://github.com/gap-system/gap/pull/1920) Fix and introduce (&Hash;1937 https://github.com/gap-system/gap/pull/1937) Fix documentation, and the integer implementation. This partially reverts changes made in version 4.7.8 in 2013. The documentation is now correct (resp. consistent again), and several corner cases, e.g. QuotientMod(0,0,m) now work correctly (&Hash;1991 https://github.com/gap-system/gap/pull/1991) Fix with from < 1 (&Hash;2056 https://github.com/gap-system/gap/pull/2056) Fix inefficiency when dealing with certain algebra modules (&Hash;2058 https://github.com/gap-system/gap/pull/2058) Restrict capacity of plain lists to 2^28 in 32-bit and 2^60 in 64-bit builds (&Hash;2064 https://github.com/gap-system/gap/pull/2064) Fix crashes with very large heaps (> 2 GB) on 32 bit systems, and work around a bug in memmove in 32-bit glibc versions which could corrupt memory (affects most current Linux distributions) (&Hash;2166 https://github.com/gap-system/gap/pull/2166). Fix name of the reversed option in documentation of (&Hash;2167 https://github.com/gap-system/gap/pull/2167). Fix TriangulizedMat([]) (see to return an empty list instead of producing an error (&Hash;2260 https://github.com/gap-system/gap/pull/2260). Fix several potential (albeit rare) crashes related to garbage collection (&Hash;2321 https://github.com/gap-system/gap/pull/2321, &Hash;2313 https://github.com/gap-system/gap/pull/2313, &Hash;2320 https://github.com/gap-system/gap/pull/2320). Removed or obsolete functionality: Make SetUserPreferences obsolete (use instead) (&Hash;512 https://github.com/gap-system/gap/pull/512) Remove undocumented NameIsomorphismClass (&Hash;597 https://github.com/gap-system/gap/pull/597) Remove unused code for rational classes of permutation groups (&Hash;886 https://github.com/gap-system/gap/pull/886) Remove unused and undocumented Randomizer and CheapRandomizer (&Hash;1113 https://github.com/gap-system/gap/pull/1113) Remove install-tools.sh script and documentation mentioning it (&Hash;1305 https://github.com/gap-system/gap/pull/1305) Withdraw CallWithTimeout and CallWithTimeoutList (&Hash;1324 https://github.com/gap-system/gap/pull/1324) Make RecFields obsolete (use instead) (&Hash;1331 https://github.com/gap-system/gap/pull/1331) Remove undocumented SuPeRfail and READ_COMMAND (&Hash;1374 https://github.com/gap-system/gap/pull/1374) Remove unused oldmatint.gi (old methods for functions that compute Hermite and Smith normal forms of integer matrices) (&Hash;1765 https://github.com/gap-system/gap/pull/1765) Make TRANSDEGREES obsolete (&Hash;1852 https://github.com/gap-system/gap/pull/1852) &HPCGAP; &GAP; includes experimental code to support multithreaded programming in &GAP;, dubbed &HPCGAP; (where HPC stands for "high performance computing"). &GAP; and &HPCGAP; codebases diverged during the project, and we are currently working on unifying the codebases and incorporating the &HPCGAP; code back into the mainstream &GAP; versions.

This is work in progress, and &HPCGAP; as it is included with &GAP; right now still suffers from various limitations and problems, which we are actively working on to resolve. However, including it with &GAP; (disabled by default) considerably simplifies development of &HPCGAP;. It also means that you can very easily get a (rough!) sneak peak of &HPCGAP;. It comes together with the new manual book called "&HPCGAP; Reference Manual" and located in the `doc/hpc` directory.

Users interested in experimenting with shared memory parallel programming in &GAP; can build &HPCGAP; by following the instructions from https://github.com/gap-system/gap/wiki/Building-HPC-GAP. While it is possible to build &HPCGAP; from a release version of &GAP; you downloaded from the &GAP; website, due to the ongoing development of &HPCGAP;, we recommend that you instead build &HPCGAP; from the latest development version available in the &GAP; repository at GitHub, i.e. https://github.com/gap-system/gap. New and updated packages since &GAP; 4.8.10 There were 132 packages redistributed together with &GAP; 4.8.10. The &GAP; 4.9.1 distribution includes 134 packages, including numerous updates of previously redistributed packages, and some major changes outlined below.

The libraries of small, primitive and transitive groups which previously were an integral part of &GAP; were split into three separate packages http://gap-packages.github.io/primgrp/, https://gap-packages.github.io/smallgrp/ and http://www.math.colostate.edu/~hulpke/transgrp/: The `PrimGrp` package by Alexander Hulpke, Colva M. Roney-Dougal and Christopher Russell provides the library of primitive permutation groups which includes, up to permutation isomorphism (i.e., up to conjugacy in the corresponding symmetric group), all primitive permutation groups of degree < 4096. The `SmallGrp` package by Bettina Eick, Hans Ulrich Besche and Eamonn O’Brien provides the library of groups of certain small orders. The groups are sorted by their orders and they are listed up to isomorphism; that is, for each of the available orders a complete and irredundant list of isomorphism type representatives of groups is given. The `TransGrp` package by Alexander Hulpke provides the library of transitive groups, with an optional download of the library of transitive groups of degree 32. For backwards compatibility, these are required packages in &GAP; 4.9 (i.e., &GAP; will not start without them). We plan to change this for &GAP; 4.10 (see &Hash;2434 https://github.com/gap-system/gap/pull/2434), once all packages which currently implicitly rely on these new packages had time to add explicit dependencies on them (&Hash;1650 https://github.com/gap-system/gap/pull/1650, &Hash;1714 https://github.com/gap-system/gap/pull/1714).

The new `ZeroMQInterface` package by Markus Pfeiffer and Reimer Behrends has been added for the redistribution. It provides both low-level bindings as well as some higher level interfaces for the http://zeromq.org/ message passing library for &GAP; and &HPCGAP; enabling lightweight distributed computation.

The `HAPprime` package by Paul Smith is no longer redistributed with &GAP;. Part of the code has been incorporated into the `HAP` package. Its source code repository, containing the code of the last distributed version, can still be found at https://github.com/gap-packages/happrime.

Also, the `ParGAP` package by Gene Cooperman is no longer redistributed with &GAP; because it no longer can be compiled with &GAP; 4.9 (see https://mail.gap-system.org/pipermail/gap/2018-March/001082.html). Its source code repository, containing the code of the last distributed version, plus some first fixes needed for compatibility for GAP 4.9, can still be found at https://github.com/gap-packages/pargap. If somebody is interested in repairing this package and taking over its maintenance, so that it can be distributed again, please contact the &GAP; team.
&GAP; 4.9.2 (July 2018) Changes in the core &GAP; system introduced in &GAP; 4.9.2 Fixed bugs that could lead to break loops: Fixed a bug in iterating over an empty cartesian product (&Hash;2421 https://github.com/gap-system/gap/pull/2421). [Reported by @isadofschi] Fixed bugs that could lead to crashes: Fixed a crash after entering return; in a method not found break loop (&Hash;2449 https://github.com/gap-system/gap/pull/2449). Fixed a crash when an error occurs and points to a stream which internally uses another stream (&Hash;2596 https://github.com/gap-system/gap/pull/2596). Fixed bugs that could lead to incorrect results: Fixed a bug in computing maximal subgroups, which broke some other calculations, in particular, computing intermediate subgroups. (&Hash;2488 https://github.com/gap-system/gap/pull/2488). [Reported by Seyed Hassan Alavi] Other fixed bugs and further improvements: Profiling now correctly handles calls to longjmp and allows to generate profiles using version 2.0.1 of the `Profiling` package (&Hash;2444 https://github.com/gap-system/gap/pull/2444). The bin/gap.sh script now respects the GAP_DIR environment variable (&Hash;2465 https://github.com/gap-system/gap/pull/2465). [Contributed by RussWoodroofe] The bin/BuildPackages.sh script now properly builds binaries for the `simpcomp` package (&Hash;2475 https://github.com/gap-system/gap/pull/2475). Fixed a bug in restoring a workspace, which prevented &GAP; from saving the history if a workspace was loaded during startup (&Hash;2578 https://github.com/gap-system/gap/pull/2578). New and updated packages since &GAP; 4.9.1 This release contains updated versions of 22 packages from &GAP; 4.9.1 distribution. Additionally, it has three new packages. The new `JupyterKernel` package by Markus Pfeiffer provides a so-called kernel for the Jupyter interactive document system (https://jupyter.org/). This package requires Jupyter to be installed on your system (see https://jupyter.org/install for instructions). It also requires &GAP; packages `IO`, `ZeroMQInterface`, `json`, and also two new packages by Markus Pfeiffer called `crypting` and `uuid`, all included into &GAP; 4.9.2 distribution. The `JupyterKernel` package is not yet usable on Windows.
&GAP; 4.9.3 (September 2018) Changes in the core &GAP; system introduced in &GAP; 4.9.3 Fixed bugs that could lead to break loops: Fixed a regression in caused by changes in sort functions introduced in &GAP; 4.9 release (&Hash;2617 https://github.com/gap-system/gap/pull/2617). Other fixed bugs and further improvements: Fixed a compile time assertion that caused compiler error on some systems (&Hash;2691 https://github.com/gap-system/gap/pull/2691). New and updated packages since &GAP; 4.9.2 This release contains updated versions of 18 packages from &GAP; 4.9.2 distribution. Additionally, it has three new packages: The `curlInterface` package by Christopher Jefferson and Michael Torpey, which provides a simple wrapper around `libcurl` library (https://curl.haxx.se/) to allow downloading files over http, ftp and https protocols. The `datastructures` package by Markus Pfeiffer, Max Horn, Christopher Jefferson and Steve Linton, which aims at providing standard datastructures, consolidating existing code and improving on it, in particular in view of &HPCGAP;. The `DeepThought` package by Nina Wagner and Max Horn, which provides functionality for computations in finitely generated nilpotent groups given by a suitable presentation using Deep Thought polynomials.