  
  [1X2 [33X[0;0YChanges between [5XGAP[105X[101X[1X 4.7 and [5XGAP[105X[101X[1X 4.8[133X[101X
  
  [33X[0;0YThis  chapter  contains an overview of the most important changes introduced
  in [5XGAP[105X 4.8.2 release (the 1st public release of [5XGAP[105X 4.8). Later it will also
  contain  information  about subsequent update releases for [5XGAP[105X 4.8. First of
  all,   the   [5XGAP[105X   development   repository  is  now  hosted  on  GitHub  at
  [7Xhttps://github.com/gap-system/gap[107X,  and  [5XGAP[105X  4.8  is  the  first  major [5XGAP[105X
  release made from this repository. The public issue tracker for the core [5XGAP[105X
  system  is  located at [7Xhttps://github.com/gap-system/gap/issues[107X, and you may
  use appropriate milestones from [7Xhttps://github.com/gap-system/gap/milestones[107X
  to  see  all  changes that were introduced in corresponding [5XGAP[105X releases. An
  overview of the most significant ones is provided below.[133X
  
  
  [1X2.1 [33X[0;0Y[5XGAP[105X[101X[1X 4.8.2 (February 2016)[133X[101X
  
  
  [1X2.1-1 [33X[0;0YChanges in the core [5XGAP[105X[101X[1X system introduced in [5XGAP[105X[101X[1X 4.8[133X[101X
  
  [33X[0;0YNew features:[133X
  
  [30X    [33X[0;6YAdded  support  for  profiling  which tracks how much time in spent on
        each line of [5XGAP[105X code. This can be used to show where code is spending
        a  long time and also check which lines of code are even executed. See
        the documentation for [2XProfileLineByLine[102X ([14XReference: ProfileLineByLine[114X)
        and  [2XCoverageLineByLine[102X ([14XReference: CoverageLineByLine[114X) for details on
        generating  profiles, and the [5XProfiling[105X package for transforming these
        profiles into a human-readable form.[133X
  
  [30X    [33X[0;6YAdded  ability  to  install  (in  the library or packages) methods for
        accessing  lists  using multiple indices and indexing into lists using
        indices  other than positive small integers. Such methods could allow,
        for example, to support expressions like[133X
  
  [4X      [32X  Example  [32X[104X
          [4X[28Xm[1,2];[128X[104X
          [4X[28Xm[1,2,3] := x;[128X[104X
          [4X[28XIsBound(m["a","b",Z(7)]);[128X[104X
          [4X[28XUnbind(m[1][2,3])[128X[104X
        [4X[32X[104X
  
  [30X    [33X[0;6YAdded  support  for  partially  variadic  functions  to allow function
        expressions like[133X
  
  [4X      [32X  Example  [32X[104X
          [4X[28Xfunction( a, b, c, x... ) ... end;[128X[104X
        [4X[32X[104X
  
        [33X[0;6Ywhich  would  require  at  least  three arguments and assign the first
        three  to  [3Xa[103X, [3Xb[103X and [3Xc[103X and then a list containing any remaining ones to
        [3Xx[103X.[133X
  
        [33X[0;6YThe  former special meaning of the argument [3Xarg[103X is still supported and
        is now equivalent to [10Xfunction( arg... )[110X, so no changes in the existing
        code are required.[133X
  
  [30X    [33X[0;6YIntroduced    [2XCallWithTimeout[102X    ([14XReference:    CallWithTimeout[114X)   and
        [2XCallWithTimeoutList[102X   ([14XReference:   CallWithTimeoutList[114X)   to  call  a
        function   with  a  limit  on  the  CPU  time  it  can  consume.  This
        functionality may not be available on all systems and you should check
        [10XGAPInfo.TimeoutsSupported[110X before using this functionality.[133X
  
  [30X    [33X[0;6Y[5XGAP[105X  now  displays  the  filename  and  line  numbers of statements in
        backtraces when entering the break loop.[133X
  
  [30X    [33X[0;6YIntroduced  [2XTestDirectory[102X  ([14XReference: TestDirectory[114X) function to find
        (recursively)  all  [11X.tst[111X  files  from  a  given directory or a list of
        directories and run them using [2XTest[102X ([14XReference: Test[114X).[133X
  
  [33X[0;0YImproved and extended functionality:[133X
  
  [30X    [33X[0;6YMethod tracing shows the filename and line of function during tracing.[133X
  
  [30X    [33X[0;6Y[2XTraceAllMethods[102X  ([14XReference:  TraceAllMethods[114X)  and  [2XUntraceAllMethods[102X
        ([14XReference:  UntraceAllMethods[114X) to turn on and off tracing all methods
        in   [5XGAP[105X.  Also,  for  the  uniform  approach  [2XUntraceImmediateMethods[102X
        ([14XReference:  UntraceImmediateMethods[114X)  has been added as an equivalent
        of [10XTraceImmediateMethods(false)[110X.[133X
  
  [30X    [33X[0;6YThe  most  common cases of [2XAddDictionary[102X ([14XReference: AddDictionary[114X) on
        three  arguments  now  bypass  method  selection, avoiding the cost of
        determining homogeneity for plain lists of mutable objects.[133X
  
  [30X    [33X[0;6YImproved methods for symmetric and alternating groups in the "natural"
        representations and removed some duplicated code.[133X
  
  [30X    [33X[0;6YPackage  authors  may  optionally  specify the source code repository,
        issue  tracker  and  support email address for their package using new
        components  in  the  [11XPackageInfo.g[111X  file, which will be used to create
        hyperlinks  from the package overview page (see [11XPackageInfo.g[111X from the
        Example package which you may use as a template).[133X
  
  [33X[0;0YChanged functionality:[133X
  
  [30X    [33X[0;6YAs   a   preparation   for   the   future   developments   to  support
        multithreading, some language extensions from the [5XHPC-GAP[105X project were
        backported  to  the  [5XGAP[105X library to help to unify the codebase of both
        [5XGAP[105X 4  and  [5XHPC-GAP[105X. The only change which is not backwards compatible
        is  that [10Xatomic[110X, [10Xreadonly[110X and [10Xreadwrite[110X are now keywords, and thus are
        no longer valid identifiers. So if you have any variables or functions
        using that name, you will have to change it in [5XGAP[105X 4.8.[133X
  
  [30X    [33X[0;6YThere  was inconsistent use of the following properties of semigroups:
        [10XIsGroupAsSemigroup[110X, [10XIsMonoidAsSemigroup[110X, and [10XIsSemilatticeAsSemigroup[110X.
        [10XIsGroupAsSemigroup[110X was true for semigroups that mathematically defined
        a  group,  and  for  semigroups  in  the  category [2XIsGroup[102X ([14XReference:
        IsGroup[114X);  [10XIsMonoidAsSemigroup[110X  was  only  true  for  semigroups  that
        mathematically  defined  monoids,  but  did not belong to the category
        [2XIsMonoid[102X   ([14XReference:  IsMonoid[114X);  and  [10XIsSemilatticeAsSemigroup[110X  was
        simply   a   property   of   semigroups,   as  there  is  no  category
        [10XIsSemilattice[110X.[133X
  
        [33X[0;6YFrom  version  4.8  onwards,  [10XIsSemilatticeAsSemigroup[110X  is  renamed to
        [10XIsSemilattice[110X,  and [10XIsMonoidAsSemigroup[110X returns true for semigroups in
        the category [2XIsMonoid[102X ([14XReference: IsMonoid[114X).[133X
  
        [33X[0;6YThis  way  all  of  the  properties  of  the  type  [10XIsXAsSemigroup[110X are
        consistent.  It  should  be  noted that the only methods installed for
        [10XIsMonoidAsSemigroup[110X belong to the [5XSemigroups[105X and [5XSmallsemi[105X packages.[133X
  
  [30X    [33X[0;6Y[10XReadTest[110X  became  obsolete and for backwards compatibility is replaced
        by  [2XTest[102X ([14XReference: Test[114X) with the option to compare the output up to
        whitespaces.[133X
  
  [30X    [33X[0;6YThe  function  `ErrorMayQuit`,  which  differs  from [2XError[102X ([14XReference:
        Error[114X)  by  not  allowing  execution  to continue, has been renamed to
        [2XErrorNoReturn[102X ([14XReference: ErrorNoReturn[114X).[133X
  
  [33X[0;0YFixed bugs:[133X
  
  [30X    [33X[0;6YA combination of two bugs could lead to a segfault. First off, [2XNullMat[102X
        ([14XReference:  NullMat[114X) (and various other [5XGAP[105X functions), when asked to
        produce   matrix   over   a  small  field,  called  [2XConvertToMatrixRep[102X
        ([14XReference:  ConvertToMatrixRep  (for  a  list  (and a field))[114X). After
        this, if the user tried to change one of the entries to a value from a
        larger  extension  field,  this  resulted  in  an  error. (This is now
        fixed).[133X
  
        [33X[0;6YUnfortunately,  the  C  code catching this error had a bug and allowed
        users  to type [21Xreturn[121X to continue while ignoring the conversion error.
        This  was  a bad idea, as the C code would be in an inconsistent state
        at this point, subsequently leading to a crash.[133X
  
        [33X[0;6YThis,  too,  has  been  fixed,  by not allowing the user to ignore the
        error by entering [21Xreturn[121X.[133X
  
  [30X    [33X[0;6YThe   Fitting-free   code  and  code  inheriting  PCGS  is  now  using
        [2XIndicesEANormalSteps[102X   ([14XReference:  IndicesEANormalSteps[114X)  instead  of
        [2XIndicesNormalSteps[102X  ([14XReference:  IndicesNormalSteps[114X), as these indices
        are  neither  guaranteed,  nor  required  to be maximally refined when
        restricting to subgroups.[133X
  
  [30X    [33X[0;6YA bug that caused a break loop in the computation of the Hall subgroup
        for groups having a trivial Fitting subgroup.[133X
  
  [30X    [33X[0;6YIncluding  a [10Xbreak[110X or [10Xcontinue[110X statement in a function body but not in
        a loop now gives a syntax error instead of failing at run time.[133X
  
  [30X    [33X[0;6Y[2XGroupGeneralMappingByImages[102X  ([14XReference:  GroupGeneralMappingByImages[114X)
        now verifies that that image of a mapping is contained in its range.[133X
  
  [30X    [33X[0;6YFixed a bug in caching the degree of transformation that could lead to
        a  non-identity  transformation accidentally changing its value to the
        identity transformation.[133X
  
  [30X    [33X[0;6YFixed  the problem with using Windows default browser as a help viewer
        using [10XSetHelpViewer("browser");[110X.[133X
  
  
  [1X2.1-2 [33X[0;0YNew and updated packages since [5XGAP[105X[101X[1X 4.7.8[133X[101X
  
  [33X[0;0YAt   the  time  of  the  release  of  [5XGAP[105X  4.7.8  there  were  119  packages
  redistributed   with   [5XGAP[105X.  New  packages  that  have  been  added  to  the
  redistribution since the release of [5XGAP[105X 4.7.8 are:[133X
  
  [30X    [33X[0;6Y[5XCAP[105X   (Categories,   Algorithms,  Programming)  package  by  Sebastian
        Gutsche,  Sebastian  Posur  and Øystein Skartsæterhagen, together with
        three       associated       packages      [5XGeneralizedMorphismsForCAP[105X,
        [5XLinearAlgebraForCAP[105X  and  [5XModulePresentationsForCAP[105X  (all  three  - by
        Sebastian Gutsche and Sebastian Posur).[133X
  
  [30X    [33X[0;6Y[5XDigraphs[105X  package  by  Jan  De  Beule, Julius Jonušas, James Mitchell,
        Michael  Torpey  and Wilf Wilson, which provides functionality to work
        with graphs, digraphs, and multidigraphs.[133X
  
  [30X    [33X[0;6Y[5XFinInG[105X  package  by  John Bamberg, Anton Betten, Philippe Cara, Jan De
        Beule,  Michel  Lavrauw  and  Max Neunhöffer for computation in Finite
        Incidence Geometry.[133X
  
  [30X    [33X[0;6Y[5XHeLP[105X  package  by  Andreas  Bächle  and  Leo  Margolis, which computes
        constraints  on  partial  augmentations  of  torsion units in integral
        group  rings  using  a method developed by Luthar, Passi and Hertweck.
        The  package  can  be employed to verify the Zassenhaus Conjecture and
        the  Prime Graph Question for finite groups, once their characters are
        known.  It  uses  an  interface  to the software package [5X4ti2[105X to solve
        integral linear inequalities.[133X
  
  [30X    [33X[0;6Y[5Xmatgrp[105X package by Alexander Hulpke, which provides an interface to the
        solvable   radical   functionality  for  matrix  groups,  building  on
        constructive recognition.[133X
  
  [30X    [33X[0;6Y[5XNormalizInterface[105X  package by Sebastian Gutsche, Max Horn and Christof
        Söger,  which  provides  a  GAP interface to [5XNormaliz[105X, enabling direct
        access to the complete functionality of [5XNormaliz[105X, such as computations
        in  affine  monoids,  vector  configurations,  lattice  polytopes, and
        rational cones.[133X
  
  [30X    [33X[0;6Y[5Xprofiling[105X  package  by Christopher Jefferson for transforming profiles
        produced   by  [2XProfileLineByLine[102X  ([14XReference:  ProfileLineByLine[114X)  and
        [2XCoverageLineByLine[102X     ([14XReference:    CoverageLineByLine[114X)    into    a
        human-readable form.[133X
  
  [30X    [33X[0;6Y[5XUtils[105X  package  by  Sebastian  Gutsche,  Stefan  Kohl  and Christopher
        Wensley, which provides a collection of utility functions gleaned from
        many packages.[133X
  
  [30X    [33X[0;6Y[5XXModAlg[105X  package by Zekeriya Arvasi and Alper Odabas, which provides a
        collection  of  functions  for  computing  with  crossed  modules  and
        Cat1-algebras and morphisms of these structures.[133X
  
  
  [1X2.2 [33X[0;0Y[5XGAP[105X[101X[1X 4.8.3 (March 2016)[133X[101X
  
  
  [1X2.2-1 [33X[0;0YChanges in the core [5XGAP[105X[101X[1X system introduced in [5XGAP[105X[101X[1X 4.8.3[133X[101X
  
  [33X[0;0YNew features:[133X
  
  [30X    [33X[0;6YNew  function  [2XTestPackage[102X  ([14XReference:  TestPackage[114X)  to run standard
        tests  (if  available) for a single package in the current [5XGAP[105X session
        (also  callable  via  [10Xmake  testpackage PKGNAME=pkgname[110X to run package
        tests in the same settings that are used for testing [5XGAP[105X releases).[133X
  
  [33X[0;0YImproved and extended functionality:[133X
  
  [30X    [33X[0;6Y[2XTestDirectory[102X  ([14XReference:  TestDirectory[114X) now prints a special status
        message  to  indicate  the outcome of the test (this is convenient for
        automated  testing).  If  necessary, this message may be suppressed by
        using the option [10XsuppressStatusMessage[110X[133X
  
  [30X    [33X[0;6YImproved output of tracing methods (which may be invoked, for example,
        with   [2XTraceAllMethods[102X  ([14XReference:  TraceAllMethods[114X))  by  displaying
        filename and line number in some more cases.[133X
  
  [33X[0;0YChanged functionality:[133X
  
  [30X    [33X[0;6YFixed  some  inconsistencies  in  the usage of [2XIsGeneratorsOfSemigroup[102X
        ([14XReference: IsGeneratorsOfSemigroup[114X).[133X
  
  [33X[0;0YFixed bugs that could lead to incorrect results:[133X
  
  [30X    [33X[0;6YFallback  methods  for conjugacy classes, that were never intended for
        infinite  groups,  now  use  [2XIsFinite[102X  ([14XReference: IsFinite[114X) filter to
        prevent  them  being  called  for  infinite groups. [Reported by Gabor
        Horvath][133X
  
  [33X[0;0YFixed bugs that could lead to break loops:[133X
  
  [30X    [33X[0;6YCalculating  stabiliser  for the alternating group caused a break loop
        in the case when it defers to the corresponding symmetric group.[133X
  
  [30X    [33X[0;6YIt   was  not  possible  to  use  [2XDotFileLatticeSubgroups[102X  ([14XReference:
        DotFileLatticeSubgroups[114X)  for  a  trivial  group.  [Reported by Sergio
        Siccha][133X
  
  [30X    [33X[0;6YA   break   loop   while   computing   [2XAutomorphismGroup[102X   ([14XReference:
        AutomorphismGroup[114X)  for  [10XTransitiveGroup(12,269)[110X.  [Reported  by Ignat
        Soroko][133X
  
  [30X    [33X[0;6YA  break loop while computing conjugacy classes of [10XPSL(6,4)[110X. [Reported
        by Martin Macaj][133X
  
  [33X[0;0YOther fixed bugs:[133X
  
  [30X    [33X[0;6YFix  for  using  Firefox  as  a default help viewer with [2XSetHelpViewer[102X
        ([14XReference: SetHelpViewer[114X). [Reported by Tom McDonough][133X
  
  
  [1X2.3 [33X[0;0Y[5XGAP[105X[101X[1X 4.8.4 (June 2016)[133X[101X
  
  
  [1X2.3-1 [33X[0;0YChanges in the core [5XGAP[105X[101X[1X system introduced in [5XGAP[105X[101X[1X 4.8.4[133X[101X
  
  [33X[0;0YNew features:[133X
  
  [30X    [33X[0;6YThe [5XGAP[105X distribution now includes [11Xbin/BuildPackages.sh[111X, a script which
        can  be started from the [11Xpkg[111X directory via [10X../bin/BuildPackages.sh[110X and
        will  attempt  to  build as many packages as possible. It replaces the
        [11XInstPackages.sh[111X  script  which  was not a part of the [5XGAP[105X distribution
        and  had  to  be  downloaded  separately from the [5XGAP[105X website. The new
        script  is  more  robust  and  simplifies  adding  new  packages  with
        binaries,  as  it  requires no adjustments if the new package supports
        the standard [10X./configure; make[110X build procedure.[133X
  
  [33X[0;0YImproved and extended functionality:[133X
  
  [30X    [33X[0;6Y[2XSimpleGroup[102X  ([14XReference:  SimpleGroup[114X)  now  produces more informative
        error message in the case when [2XAtlasGroup[102X ([14XAtlasRep: AtlasGroup[114X) could
        not load the requested group.[133X
  
  [30X    [33X[0;6YAn   info  message  with  the  suggestion  to  use  [2XInfoPackageLoading[102X
        ([14XReference: InfoPackageLoading[114X) will now be displayed when [2XLoadPackage[102X
        ([14XReference:  LoadPackage[114X)  returns [9Xfail[109X (unless [5XGAP[105X is started with [10X-b[110X
        option).[133X
  
  [30X    [33X[0;6YThe  build system will now enable C++ support in GMP only if a working
        C++ compiler is detected.[133X
  
  [30X    [33X[0;6YMore  checks  were  added when embedding coefficient rings or rational
        numbers into polynomial rings in order to forbid adding polynomials in
        different characteristic.[133X
  
  [33X[0;0YFixed bugs that could lead to crashes:[133X
  
  [30X    [33X[0;6YFixed  the  crash  in  [10X--cover[110X  mode when reading files with more than
        65,536 lines.[133X
  
  [33X[0;0YFixed bugs that could lead to incorrect results:[133X
  
  [30X    [33X[0;6YFixed  an  error in the code for partial permutations that occurred on
        big-endian systems. [Reported by Bill Allombert][133X
  
  [30X    [33X[0;6YFixed  the  kernel  method  for  [2XRemove[102X  ([14XReference:  Remove[114X) with one
        argument,  which failed to reduce the length of a list to the position
        of the last bound entry. [Reported by Peter Schauenburg][133X
  
  [33X[0;0YFixed bugs that could lead to break loops:[133X
  
  [30X    [33X[0;6YFixed   the   break   loop   while   using  [2XFactorization[102X  ([14XReference:
        factorization[114X)  on  permutation  groups by removing some old code that
        relied  on  further  caching  in  [10XFactorization[110X.  [Reported by Grahame
        Erskine][133X
  
  [30X    [33X[0;6YFixed  a  problem  with  computation of maximal subgroups in an almost
        simple group. [Reported by Ramon Esteban Romero][133X
  
  [30X    [33X[0;6YAdded  missing  methods  for  [2XIntersection2[102X ([14XReference: Intersection2[114X)
        when one of the arguments is an empty list. [Reported by Wilf Wilson][133X
  
  [33X[0;0YOther fixed bugs:[133X
  
  [30X    [33X[0;6YFixed    several   bugs   in   [2XRandomPrimitivePolynomial[102X   ([14XReference:
        RandomPrimitivePolynomial[114X). [Reported by Nusa Zidaric][133X
  
  [30X    [33X[0;6YFixed  several  problems with [2XRandom[102X ([14XReference: Random[114X) on long lists
        in 64-bit GAP installations.[133X
  
  
  [1X2.4 [33X[0;0Y[5XGAP[105X[101X[1X 4.8.5 (September 2016)[133X[101X
  
  
  [1X2.4-1 [33X[0;0YChanges in the core [5XGAP[105X[101X[1X system introduced in [5XGAP[105X[101X[1X 4.8.5[133X[101X
  
  [33X[0;0YImproved and extended functionality:[133X
  
  [30X    [33X[0;6YThe  error  messages produced when an unexpected [9Xfail[109X is returned were
        made  more  clear  by explicitly telling that the result should not be
        boolean or [9Xfail[109X (before it only said [21Xnot a boolean[121X).[133X
  
  [30X    [33X[0;6YFor      consistency,      both     [2XNrTransitiveGroups[102X     ([14XReference:
        NrTransitiveGroups[114X)  and  [2XTransitiveGroup[102X ([14XReference: TransitiveGroup[114X)
        now disallow the transitive group of degree 1.[133X
  
  [33X[0;0YFixed bugs that could lead to incorrect results:[133X
  
  [30X    [33X[0;6YA bug in the code for algebraic field extensions over non-prime fields
        that  may  cause, for example, a list of all elements of the extension
        not being a duplicate-free. [Reported by Huta Gana][133X
  
  [30X    [33X[0;6YSo far, [2XFileString[102X ([14XGAPDoc: FileString[114X) only wrote files of sizes less
        than  2G  and did not indicate an error in case of larger strings. Now
        strings of any length can be written, and in the case of a failure the
        corresponding system error is shown.[133X
  
  [33X[0;0YFixed bugs that could lead to break loops:[133X
  
  [30X    [33X[0;6Y[2XNaturalHomomorphismByIdeal[102X ([14XReference: NaturalHomomorphismByIdeal[114X) was
        not reducing monomials before forming a quotient ring, causing a break
        loop on some inputs. [Reported by Dmytro Savchuk][133X
  
  [30X    [33X[0;6YA  bug  in [2XDefaultInfoHandler[102X ([14XReference: DefaultInfoHandler[114X) caused a
        break   loop   on   startup   with   the   setting  [10XSetUserPreference(
        "InfoPackageLoadingLevel", 4 )[110X`. [Reported by Mathieu Dutour][133X
  
  [30X    [33X[0;6YThe  [2XIterator[102X  ([14XReference: Iterator[114X) for permutation groups was broken
        when  the [2XStabChainMutable[102X ([14XReference: StabChainMutable (for a group)[114X)
        of  the  group  was  not  reduced,  which can reasonably happen as the
        result of various algorithms.[133X
  
  
  [1X2.5 [33X[0;0Y[5XGAP[105X[101X[1X 4.8.6 (November 2016)[133X[101X
  
  
  [1X2.5-1 [33X[0;0YChanges in the core [5XGAP[105X[101X[1X system introduced in [5XGAP[105X[101X[1X 4.8.6[133X[101X
  
  [33X[0;0YFixed bugs that could lead to break loops:[133X
  
  [30X    [33X[0;6YFixed  regression  in  the [5XGAP[105X kernel code introduced in [5XGAP[105X 4.8.5 and
        breaking   [2XStringFile[102X   ([14XGAPDoc:  StringFile[114X)  ability  to  work  with
        compressed files. [Reported by Bill Allombert][133X
  
