From 2ac6b57716e292090379690e68cb996cd4db5787 Mon Sep 17 00:00:00 2001 From: Alexander Konovalov Date: Tue, 24 Apr 2018 20:28:08 +0100 Subject: [PATCH] Overview of changes in GAP 4.9.1 release --- doc/changes/changes49.xml | 1132 +++++++++++++++++++++++++++++++++++++ doc/changes/main.xml | 3 + 2 files changed, 1135 insertions(+) create mode 100644 doc/changes/changes49.xml diff --git a/doc/changes/changes49.xml b/doc/changes/changes49.xml new file mode 100644 index 00000000000..22a7962e4ee --- /dev/null +++ b/doc/changes/changes49.xml @@ -0,0 +1,1132 @@ + +Changes between ⪆ 4.8 and ⪆ 4.9 + +This chapter contains an overview of the most important changes +introduced in ⪆ 4.9.1 release (the 1st public release of ⪆ 4.9). +Later it will also contain information about subsequent update +releases for ⪆ 4.9. +

+ +The changes in ⪆ 4.9 are also listed on the Wiki page +https://github.com/gap-system/GAP/wiki/gap-4.9-release-notes, +which contains links to actual pull requests and related discussions. + +

+&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 the &HPCGAP; section 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 where revised and moved from the +Example package to Chapter 76 "Using and Developing &GAP; Packages" of the +&GAP; reference manual (if you are interested in the details of the discussion, +see 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 an arbitrary number. E.g. {a,b} -> a+b +is a shorthand for function(a,b) return a+b; end. +For details, see Section 4.23 "Function" of the &GAP; reference manual. +(For technical details, e.g. why we did not choose the syntax +(a,b) -> a+b, see https://github.com/gap-system/gap/pull/490). + + +Function calls, list accesses and records 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 https://github.com/gap-system/gap/issues/457) +and 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 +[PrimgGrp](http://gap-packages.github.io/primgrp/), +[SmallGrp](https://gap-packages.github.io/smallgrp/) and +[TransGrp](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, once all packages which currently implicitly rely on these +new packages had time to add explicit dependencies on them. (For some +technical details, see https://github.com/gap-system/gap/pull/1650, +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 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. + + +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 this is welcome). Some relevant pull requests: + + + + Allow creating random permutations using a random source + + + + Let more methods use an alternative source + + + + Help methods to + use + + + + Remove uses of old random generator + + + + Fix on long (>2^28) lists + + + + Fix + + + + Use in a few more places + + + + +The output and behaviour of the profiling system has been substantially improved + + + + Make profiling correctly handle the same file being opened multiple times + + + + Do not profile the + statements inserted into the end of functions + + + + Ensure we reset OutputtedFilenameList + in profiling when a workspace is restored + + + + Better tracking of amounts of memory allocated and time spent + in the garbage collector + + + + Allow profiling of memory usage + + + + Remove profiling limit on files with <= 2^16 lines + + + + +In many cases &GAP; now outputs the filename and location of functions in +helpful places, e.g. in backtraces 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 https://github.com/gap-system/gap/pull/469, +https://github.com/gap-system/gap/pull/755), +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 away if foo then ... fi; blocks completely away. +For details, see in +Section 4.9 "More About Global Variables" of the &GAP; reference manual. + + + +Other changes: + + + +Enhance with a major rewrite, +enhancing and adding +; +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. + + + +Mark and + as nilpotent + + + +Add method for for finite nilpotent groups + + + +Change and +methods for various +inverse semigroups and monoids + + + +Enhance some nilpotent and p-group attributes + + + +Improve for a list with many ranges + + + +Add , a function +to expand ~ in filenames. + + + +Extra hint in No Method Found error message +if one of the arguments is fail + + + +Tell Sylow subgroups of natural A_n or S_n +their size when we make them + + + +Some small enhancements on Sylow and Hall subgroup computations, +mostly for nilpotent groups. + + + +Remove .zoo archive related tools + + + +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. + + + +New attribute , +returning a list of all normal Hall subgroups of a group. + + + +Add +fallback method for arbitrary groups + + + +Add parsing of hex literals in strings, e.g. "\0x61" is +turned into "a" + + + +Collection of enhancements + + + +Various speed improvements to polynomial factorisation and the &GAP; MeatAxe + + + +The code and documentation for transformations is improved and +corrected in many instances + + + +Change to optionally takes a field or +field size as first argument, from which the roots will be taken + + + +Change from a global +function to an attribute + + + +Add to wrap return value to +allow distinguishing between functions which return and functions which don't + + + +Allow repeated use of same call + + + +New implementation of modified Todd-Coxeter (the old one had bugs, +see https://github.com/gap-system/gap/issues/302) + + + +New functionality: Cannon/Holt automorphisms and others + + + +Add property, +and a method for +powerful p-groups + + + +Improve performance for group isomorphism/automorphisms + + + +Make , +, + and + +support lists which are not collections + + + +Some improvements for + + + +Add helpers to retrieve information about operations and filters: +, +, +, +, +, +, +, +, +, +, + + + + +Add case-insensitive autocomplete + + + +Give better error message if a help file is missing + + + +Add and + + + + +Add and + + + + +Switching default command history length from infinity to 1000 + + + +Allow conversion of -infinity to float via + and + + + + +Add option NoPrecomputedData to avoid use of data libraries +in certain computations (useful if one wants to verify the +content of these data libraries) + + + +Remove one-argument version of +for a transformation + + + +Partial perms now have a +rather than a , since they are +multiplicative rather than additive elements + + + +Various enhancements: + + +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) + + + +Make HasSolvableFactorGroup slightly more efficient + + + +Enhance HasXXFactorGroup + + + +Remove GAP4stones from tests + + + + and + are now operations, and various bugs +were resolved related to isomorphisms of semigroups and monoids + + + +Mark isomorphisms between trivial groups as bijective + + + +Speed up and + for moduli with large +prime factors; also add IS_PROBAB_PRIME_INT kernel function + + + +The search for the documentation of system setters and testers +now returns corresponding attributes and properties + + + +Remove command line options -c, -U, -i +and -X, add --quitonbreak + + + +Remove Itanium support + + + +Adding two strings now shows a more helpful error message + + + +Suppress Unbound global variable warning in + + + + +Increase warning level for Conway polynomial + + + +Performance improvements to maximal and intermediate subgroups, +fix of + + + +Revise Chapter 52 of the reference manual (fp semigroups and monoids) + + + +Improve the performance of the statement + + + +When printing function bodies, avoid some redundant spaces + + + +Add kernel functions for directly accessing entries of GF2/8bit compressed matrices + + + +Add method for functions + + + +Check modules were compiled with the same version of &GAP; when loading them. + + + +When printing function, reproduce TryNextMethod() correctly + + + +New feature providing efficient support +for packing multiple data items into a single word for cache and memory efficiency + + +Improved bin/BuildPackages.sh, in particular + + add option to abort upon failure + + +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 + + + + Add kernel implementations of , + , + (for integers), + (for integers) + + + + Add kernel implementation of + + + + Add kernel implementation of + + + + Add kernel implementation of + + + + + +Check version of kernel for package versions + + + +Add new operation + + + +Add NumberColumns and NumberRows to MatrixObj interface + + + + returns an answer for +non-cyclic groups that already have a generating set of size 2 (which +hence is minimal) + + + +Add which returns the n-th +element of the list if it is bound, and the default value otherwise + + + +Fast method for ElmsBlist when positions are a range with increment 1 + + + +Make permutations remember their inverses + + + +Add invariant forms for GU(1,q) and SU(1,q) + + + +Implement and + +for , clarify documentation +for + + + +Improve documentation and interface for floats + + + +Add method for non-dense lists + + + +Add TrivialGroup(IsFpGroup) + + + +Change to +return the new objects + + +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 + + + + +Fix nice monomorphism dispatch for +(e.g. fixes HallSubgroup(GL(3,4), [2,3])) + + + +Check for permutations whose degree would exceed the internal limit, +and document that limit + + + +Fix segfault after quitting from the break loop in certain cases + + + +Fix rankings for and + + + + +Make key and attribute values immutable + + + +Make OnTuples([-1], (1,2)) return an error + + + +Fix bug in +which could corrupt the attribute + + + +The length of the list returned by OnSetsPerm is now properly set + + + +Fix misbehaving when +last member of list with gaps in it is removed + + + +Fix bugs in various methods for Rees (0-)matrix semigroups: +, +, +, + and + + + + +Fix +to work correctly for the full transformation semigroup of degree 0 + + + +Fix printing very large (> 2^28 points) permutations + + + +Fix Intersection([]) + + + +Fix crash in IsKernelFunction for some inputs + + + +Fix bug in which could cause + to enter a break loop + + + +Fix crash in some methods involving partial perms + + + +FreeMonoid(0) no longer satisfies + + + +Fix crash when invoking weak pointer functions on invalid arguments + + + +Fix a bug parsing character constants + + + +Fix several bugs and crashes in Z(p,d) for invalid arguments, +e.g. Z(4,5), Z(6,3) + + + +Fix starting &GAP; on systems with large inodes + + + +Fix and + for a partial +perm and a partial perm semigroup (they used to return the moved +points rather than the fixed points) + + + +Fix +when given a collection of 1 or 0 partial perms + + + +The behaviour of +for a transformation and a list is corrected + + + + +for a 0-simple semigroup is now defined on the zero of the source +and range semigroups + + + +Fix isomorphisms from finitely-presented monoids to +finitely-presented semigroups, and allow isomorphisms +from semigroups to fp-monoids + + + +Fix for a partial permutation semigroup +without generators + + + +Fix for positional +and component objects + + + +Fix PlainString causing immutable strings to become mutable + + + +Restore support for sparc64 + + + +Fix a problem with `<` for transformations, which could give incorrect results + + + +Fix crash when comparing recursive data structures such as [~] = [~] + + + +Ensure output of TrivialGroup(IsPermGroup) has zero generators + + + +Fix for applying the +of an + + + +Collection of improvements and fixes: + + +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 + + + +Various changes, including fixes for + + + +Better define the result of + + + +Check the arguments to +to prevent crashes + + + +Change to return fail +for certain invalid inputs + + + +Fixes for creating Green's classes of semigroups + + + +Fix DoImmutableMatrix for finite fields + + + +Make structural copy handle boolean lists properly + + + +Minimal fix for algebraic extensions over finite fields of order > 256 + + + +Fix for computing quotients of certain algebra modules + + + +Fix an error in the default method for + + + +Improvements to Rees matrix semigroups code and new tests + + + +Fix +for the trivial polycyclic group + + + +Fix FroidurePinExtendedAlg for partial permutation monoids + + + +Fix computing the radical of a zero dimensional associative algebra + + + +Fix a bug in +which could cause a break loop for some associative algebras + + + +Fix a recursion depth trap error when repeatedly calling + + + + +Fix bugs in for direct products +of p-groups + + + +Fix (available in break loops) +when at the bottom of the backtrace + + + +Fix and + for permutation +groups with 0 generators + + + +Fix for transformation semigroups + + + +Fix no method found errors in +and + + + +Fix an error computing kernel of group homomorphism from fp group +into permutation group + + + +Fix an error in MTC losing components when copying a new augmented coset table + + + +Fix output of in a break loop, +which pointed at the wrong code line in some cases + + + +Fix the interaction of signals in &GAP; and the IO package + + + +Make line editing resilient to LineEditKeyHandler failure +(in particular, don't crash) + + + +Omit non-characters from results + + + +Fix when exterior power +is 0-dimensional (used to return a 1-dimensional result) + + + +Fix recursion depth trap and other improvements for quotients of fp groups + + + +Fix a bug in the computation of a permutation group isomorphic +to a group of automorphisms + + + +Fix bug in + + + +Fix and introduce + + + + +Fix documentation, and the integer +implementation. This partially reverts changes made in 2013. The documentation +is now correct (resp. consistent again), and several corner cases, e.g. +QuotientMod(0,0,m) now work correctly + + + +Fix with from < 1 + + + +Fix inefficiency when dealing with certain algebra modules + + + +Restrict capacity of plain lists to 2^28 in 32-bit +and 2^60 in 64-bit builds + + + +Removed or obsolete functionality: + + + +Make SetUserPreferences obsolete +(use instead) + + + +Remove undocumented NameIsomorphismClass + + + +Remove unused code for rational classes of permutation groups + + + +Remove unused and undocumented Randomizer and CheapRandomizer + + + +Remove install-tools.sh script and documentation mentioning it + + + +Withdraw CallWithTimeout and CallWithTimeoutList + + + +Make RecFields obsolete +(use instead) + + + +Remove undocumented SuPeRfail and READ_COMMAND + + + +Remove unused oldmatint.gi (old methods for functions +that compute Hermite and Smith normal forms of integer matrices) + + + +Make TRANSDEGREES obsolete + + + + + + +&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 + +At the time of the release of &GAP; 4.8.10 there were ??? packages +redistributed with &GAP;. New packages that have been added to the +redistribution since the release of &GAP; 4.8.10 are: + + + + + +??? +??? package by ???, which ???. + + + + + +

+ +
diff --git a/doc/changes/main.xml b/doc/changes/main.xml index 852c4202f04..9fad7f3a6a4 100644 --- a/doc/changes/main.xml +++ b/doc/changes/main.xml @@ -4,6 +4,7 @@ Atlas"> + HPC-GAP"> ---"> <#Include SYSTEM "../versiondata"> ]> @@ -56,6 +57,8 @@ <#Include SYSTEM "preface.xml"> +<#Include SYSTEM "changes49.xml"> + <#Include SYSTEM "changes48.xml"> <#Include SYSTEM "changes47.xml">