  
  [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
  
