  
  [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.1 release (the 2nd beta 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.1 (December 2015)[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
  
  [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;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
  
  
  [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[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[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[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
  
