diff --git a/bin/BuildPackages.sh b/bin/BuildPackages.sh
index bd767b8e94..6592c75a3e 100755
--- a/bin/BuildPackages.sh
+++ b/bin/BuildPackages.sh
@@ -78,23 +78,16 @@ build_carat() {
# this out until a user complains.
# It is not possible to move around compiled binaries because these have the
# path to some data files burned in.
-tar xzpf carat-2.1b1.tgz
-rm -f bin
+zcat carat-2.1b1.tgz | tar pxf -
ln -s carat-2.1b1/bin bin
-cd carat-2.1b1/functions
-# Install the include Gmp first.
-# (If you have already Gmp on your system, you can delete the file
-# gmp-*.tar.gz and delete the target 'Gmp' from the target 'ALL' in
-# carat-2.1b1/Makefile.)
-tar xzpf gmp-*.tar.gz
-cd ..
-$MAKE TOPDIR=`pwd` Links
-# Note that Gmp may use processor specific code, so this step may not be ok
-# for a network installation if you want to use the package on older computers
-# as well.
-$MAKE TOPDIR=`pwd` Gmp
-# And now the actual Carat programs.
-$MAKE TOPDIR=`pwd` CFLAGS='-O2'
+cd carat-2.1b1
+make TOPDIR=`pwd`
+chmod -R a+rX .
+cd bin
+aa=`./config.guess`
+for x in "`ls -d1 $GAPDIR/bin/${aa}*`"; do
+ ln -s "$aa" "`basename $x`"
+done
)
}
diff --git a/cnf/gac.in b/cnf/gac.in
index b4a4c0c7bb..ad603201e2 100644
--- a/cnf/gac.in
+++ b/cnf/gac.in
@@ -129,6 +129,7 @@ OBJECTS="\
plist.o \
pperm.o \
precord.o \
+ profile.o \
range.o \
rational.o \
read.o \
diff --git a/doc/changes/changes48.xml b/doc/changes/changes48.xml
index 05160dcdd8..a8f603c048 100644
--- a/doc/changes/changes48.xml
+++ b/doc/changes/changes48.xml
@@ -362,6 +362,117 @@ Fix for using Firefox as a default help viewer with
+
+⪆ 4.8.4 (June 2016)
+
+
+Changes in the core ⪆ system introduced in ⪆ 4.8.4
+
+New features:
+
+-
+
+The ⪆ distribution now includes bin/BuildPackages.sh, a script which
+can be started from the pkg directory via ../bin/BuildPackages.sh
+and will attempt to build as many packages as possible. It replaces the
+InstPackages.sh script which was not a part of the ⪆ distribution
+and had to be downloaded separately from the ⪆ 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 ./configure; make
+build procedure.
+
+
+
+Improved and extended functionality:
+
+-
+
+
now produces more informative error
+message in the case when could
+not load the requested group.
+
+-
+
+An info message with the suggestion to use
+
will now be displayed
+when returns fail
+(unless ⪆ is started with -b option).
+
+-
+
+The build system will now enable C++ support in GMP
+only if a working C++ compiler is detected.
+
+-
+
+More checks were added when embedding coefficient rings or rational numbers
+into polynomial rings in order to forbid adding polynomials in different
+characteristic.
+
+
+
+Fixed bugs that could lead to crashes:
+
+-
+
+Fixed the crash in --cover mode when reading files
+with more than 65,536 lines.
+
+
+
+Fixed bugs that could lead to incorrect results:
+
+-
+
+Fixed an error in the code for partial permutations that
+occurred on big-endian systems. [Reported by Bill Allombert]
+
+-
+
+Fixed the kernel method for
with
+one argument, which failed to reduce the length of a list to the
+position of the last bound entry. [Reported by Peter Schauenburg]
+
+
+
+Fixed bugs that could lead to break loops:
+
+-
+
+Fixed the break loop while using
+on permutation groups by removing some old code that relied on further caching
+in Factorization. [Reported by Grahame Erskine]
+
+-
+
+Fixed a problem with computation of maximal subgroups in an almost
+simple group. [Reported by Ramon Esteban Romero]
+
+-
+
+Added missing methods for
+when one of the arguments is an empty list. [Reported by Wilf Wilson]
+
+
+
+Other fixed bugs:
+
+-
+
+Fixed several bugs in
.
+[Reported by Nusa Zidaric]
+
+-
+
+Fixed several problems with
+on long lists in 64-bit GAP installations.
+
+
+
+
+
+
+
diff --git a/doc/ref/testconsistency.g b/doc/ref/testconsistency.g
index 166004b40d..b135579069 100644
--- a/doc/ref/testconsistency.g
+++ b/doc/ref/testconsistency.g
@@ -101,13 +101,20 @@ for elt in x do
else
obj := EvalString( name );
man := ManSectionType( obj );
- # we allow to use "Meth" for "Oper" but probably should issue a warning
- # if there is no at least one "Oper" for any "Meth"
+ # we allow to use "Meth" for "Oper", "Attr", "Prop" but issue a warning
+ # if there is no at least one "Oper", "Attr" or "Prop" for any "Meth"
if ( man <> elt.name ) and not ( man in ["Attr","Prop","Oper"] and elt.name="Meth") then
pos:=OriginalPositionDocument(doc[2],elt.start);
Print( pos[1], ":", pos[2], " : ", name, " uses ", elt.name, " instead of ", man, "\n");
errcount:=errcount+1;
fi;
+ if elt.name="Meth" then
+ if Length( Filtered( x, t -> t.attributes.Name=name and t.name in ["Attr","Prop","Oper"] ) ) = 0 then
+ pos:=OriginalPositionDocument(doc[2],elt.start);
+ Print( pos[1], ":", pos[2], " : ", name, " uses Meth with no matching Oper/Attr/Prop\n" );
+ errcount:=errcount+1;
+ fi;
+ fi;
fi;
fi;
od;
diff --git a/lib/alglie.gd b/lib/alglie.gd
index 4677ca0af1..8cdd3579d1 100644
--- a/lib/alglie.gd
+++ b/lib/alglie.gd
@@ -431,7 +431,7 @@ DeclareSynonymAttr( "NonLieNilpotentElement", NonNilpotentElement);
##
## <#GAPDoc Label="AdjointAssociativeAlgebra">
##
-##
+##
##
##
## is the associative matrix algebra (with 1) generated by the matrices of
@@ -791,7 +791,7 @@ DeclareOperation("PClosureSubalgebra", [IsLieAlgebra and IsJacobianElementCollec
##
## <#GAPDoc Label="FindSl2">
##
-##
+##
##
##
## This function tries to find a subalgebra S of the Lie algebra
diff --git a/lib/ffe.gd b/lib/ffe.gd
index fd4f65a011..79c727fbfc 100644
--- a/lib/ffe.gd
+++ b/lib/ffe.gd
@@ -168,8 +168,8 @@
##
## <#GAPDoc Label="DefaultField:ffe">
##
-##
-##
+##
+##
##
##
## and
diff --git a/lib/grp.gd b/lib/grp.gd
index 00fd5dc3dd..a565ed4950 100644
--- a/lib/grp.gd
+++ b/lib/grp.gd
@@ -2893,7 +2893,7 @@ DeclareOperation( "IsCharacteristicSubgroup", [IsGroup,IsGroup] );
##
## <#GAPDoc Label="IsPNilpotent">
##
-##
+##
##
##
## A group is p-nilpotent if it possesses a normal p-complement.
@@ -2910,7 +2910,7 @@ KeyDependentOperation( "IsPNilpotent", IsGroup, IsPosInt, "prime" );
##
## <#GAPDoc Label="IsPSolvable">
##
-##
+##
##
##
## A finite group is p-solvable if every chief factor either has
@@ -3112,7 +3112,7 @@ KeyDependentOperation( "PCentralSeries", IsGroup, IsPosInt, "prime" );
##
## <#GAPDoc Label="PRump">
##
-##
+##
##
##
## For a prime p, the p-rump of a group G is
@@ -4052,8 +4052,8 @@ DeclareAttribute( "IsomorphismFpGroup", IsGroup );
##
## <#GAPDoc Label="IsomorphismFpGroupByGenerators">
##
-##
-##
+##
+##
##
##
## returns an isomorphism from a finite group G
@@ -4297,7 +4297,7 @@ DeclareGlobalFunction( "PowerMapOfGroupWithInvariants" );
##
## <#GAPDoc Label="HasAbelianFactorGroup">
##
-##
+##
##
##
## tests whether G / N is abelian
@@ -4340,7 +4340,7 @@ DeclareGlobalFunction("HasSolvableFactorGroup");
##
## <#GAPDoc Label="HasElementaryAbelianFactorGroup">
##
-##
+##
##
##
## tests whether G / N is elementary abelian
diff --git a/lib/grpfp.gd b/lib/grpfp.gd
index 67bb5b44bd..d8e365e798 100644
--- a/lib/grpfp.gd
+++ b/lib/grpfp.gd
@@ -216,7 +216,7 @@ InstallTrueMethod(CanEasilyTestMembership, IsSubgroupFgGroup and IsWholeFamily);
##
## <#GAPDoc Label="IsFpGroup">
##
-##
+##
##
##
## is a synonym for
diff --git a/lib/grppc.gd b/lib/grppc.gd
index 78f7e23462..6222e60f42 100644
--- a/lib/grppc.gd
+++ b/lib/grppc.gd
@@ -286,7 +286,7 @@ DeclareAttribute( "GeneralizedPcgs", IsGroup );
##
## <#GAPDoc Label="CanEasilyComputePcgs">
##
-##
+##
##
##
## This filter indicates whether it is possible to compute a pcgs for
diff --git a/lib/grppclat.gd b/lib/grppclat.gd
index b1f738accd..b4be03d5ac 100644
--- a/lib/grppclat.gd
+++ b/lib/grppclat.gd
@@ -68,7 +68,7 @@ DeclareGlobalFunction("InvariantElementaryAbelianSeries");
##
## <#GAPDoc Label="InducedAutomorphism">
##
-##
+##
##
##
## Let aut be an automorphism of a group G and epi be
diff --git a/lib/lierep.gd b/lib/lierep.gd
index 0088ddcfb3..13d1436747 100644
--- a/lib/lierep.gd
+++ b/lib/lierep.gd
@@ -805,7 +805,7 @@ DeclareCategory( "IsBasisOfWeightRepElementSpace", IsBasis );
##
## <#GAPDoc Label="HighestWeightModule">
##
-##
+##
##
##
## returns the highest weight module with highest weight wt of the
diff --git a/lib/matint.gd b/lib/matint.gd
index 7f91521139..eb4ddf9bff 100644
--- a/lib/matint.gd
+++ b/lib/matint.gd
@@ -195,7 +195,7 @@ DeclareOperation("SmithNormalFormIntegerMatTransforms",[IsMatrix]);
##
## <#GAPDoc Label="DiagonalizeIntMat">
##
-##
+##
##
##
## This function changes mat to its SNF.
@@ -233,7 +233,7 @@ DeclareGlobalFunction( "DiagonalizeIntMat" );
##
## <#GAPDoc Label="NormalFormIntMat">
##
-##
+##
##
##
## This general operation for computation of various Normal Forms
@@ -338,7 +338,7 @@ DeclareAttribute( "BaseIntMat",
##
## <#GAPDoc Label="BaseIntersectionIntMats">
##
-##
+##
##
##
## If m and n are matrices with integral entries,
@@ -365,7 +365,7 @@ DeclareOperation( "BaseIntersectionIntMats",
##
## <#GAPDoc Label="ComplementIntMat">
##
-##
+##
##
##
## Let full be a list of integer vectors generating an integral row
@@ -522,7 +522,7 @@ DeclareAttribute( "AbelianInvariantsOfList", IsCyclotomicCollection );
##
## <#GAPDoc Label="DeterminantIntMat">
##
-##
+##
##
##
## determinant
diff --git a/lib/matrix.gd b/lib/matrix.gd
index ce266910d5..8a2c704059 100644
--- a/lib/matrix.gd
+++ b/lib/matrix.gd
@@ -122,7 +122,7 @@ DeclareOperation("IsLowerTriangularMat",[IsMatrix]);
##
## <#GAPDoc Label="DiagonalOfMat">
##
-##
+##
##
##
## returns the diagonal of the matrix mat. If mat is not a
diff --git a/lib/oprt.gd b/lib/oprt.gd
index 6e44c2ece9..5a0343c8c8 100644
--- a/lib/oprt.gd
+++ b/lib/oprt.gd
@@ -1927,7 +1927,7 @@ DeclareOperation( "PermutationCycleOp",
##
## <#GAPDoc Label="Cycle">
##
-##
+##
##
##
## returns a list of the points in the cycle of pnt under the action
@@ -1947,7 +1947,7 @@ DeclareOperation( "CycleOp", [ IsObject, IsList, IsObject, IsFunction ] );
##
## <#GAPDoc Label="Cycles">
##
-##
+##
##
##
## returns a list of the cycles (as lists of points) of the action of the
@@ -1967,7 +1967,7 @@ DeclareOperation( "CyclesOp", [ IsObject, IsList, IsFunction ] );
##
## <#GAPDoc Label="CycleLength">
##
-##
+##
##
##
## returns the length of the cycle of pnt under the action of the element
diff --git a/lib/pcgs.gd b/lib/pcgs.gd
index ec67f75434..0d3c23911a 100644
--- a/lib/pcgs.gd
+++ b/lib/pcgs.gd
@@ -975,7 +975,7 @@ DeclareOperation( "DepthAndLeadingExponentOfPcElement",
##
## <#GAPDoc Label="PcElementByExponents">
##
-##
+##
##
##
##
@@ -1006,7 +1006,7 @@ DeclareOperation( "PcElementByExponentsNC",
##
## <#GAPDoc Label="LinearCombinationPcgs">
##
-##
+##
##
##
## returns the product \prod_i pcgs[i]^{{list[i]}}.
diff --git a/lib/sgpres.gd b/lib/sgpres.gd
index 789fe4c9e6..f1615c49fa 100644
--- a/lib/sgpres.gd
+++ b/lib/sgpres.gd
@@ -167,7 +167,7 @@ AbelianInvariantsSubgroupFpGroup := AbelianInvariantsSubgroupFpGroupRrs;
##
## <#GAPDoc Label="AugmentedCosetTableInWholeGroup">
##
-##
+##
##
##
## For a subgroup H of a finitely presented group, this function
diff --git a/lib/tietze.gd b/lib/tietze.gd
index bf7b05df7f..8283fc3e55 100644
--- a/lib/tietze.gd
+++ b/lib/tietze.gd
@@ -102,7 +102,7 @@ DeclareGlobalFunction("AbstractWordTietzeWord");
##
## <#GAPDoc Label="TietzeWordAbstractWord">
##
-##
+##
##
##
## assumes fgens to be a list of free group generators
@@ -110,7 +110,7 @@ DeclareGlobalFunction("AbstractWordTietzeWord");
## It converts word into a Tietze word,
## i. e., a list of positive or negative generator numbers.
##
-## This function simply calls .
+## This function simply calls .
##
##
## <#/GAPDoc>
diff --git a/lib/vecmat.gd b/lib/vecmat.gd
index 76eea4d6b3..e353d40946 100644
--- a/lib/vecmat.gd
+++ b/lib/vecmat.gd
@@ -404,7 +404,7 @@ end );
##
## <#GAPDoc Label="ImmutableMatrix">
##
-##
+##
##
##
## returns an immutable matrix equal to matrix which is in the optimal
diff --git a/src/gap.c b/src/gap.c
index 907d39cabf..dd211cb474 100644
--- a/src/gap.c
+++ b/src/gap.c
@@ -3305,6 +3305,7 @@ static Int PostRestore (
Last2 = GVarName( "last2" );
Last3 = GVarName( "last3" );
Time = GVarName( "time" );
+ AssGVar(Time, INTOBJ_INT(0));
QUITTINGGVar = GVarName( "QUITTING" );
/* return success */
diff --git a/src/read.c b/src/read.c
index 82b5fb24d3..130ffbfb01 100644
--- a/src/read.c
+++ b/src/read.c
@@ -692,13 +692,19 @@ void ReadCallVarAss (
}
}
+#ifdef HPCGAP
+#define ASSIGN_ERROR_MESSAGE ":= or ::="
+#else
+#define ASSIGN_ERROR_MESSAGE ":="
+#endif
+
/* if we need a statement */
else if ( mode == 's' || (mode == 'x' && IS_IN(TLS(Symbol), S_ASSIGN)) ) {
if ( type != 'c' && type != 'C') {
if (TLS(Symbol) != S_ASSIGN)
- Match( S_INCORPORATE, ":= or ::=", follow);
+ Match( S_INCORPORATE, ASSIGN_ERROR_MESSAGE, follow);
else
- Match( S_ASSIGN, ":= or ::=", follow );
+ Match( S_ASSIGN, ASSIGN_ERROR_MESSAGE, follow );
if ( TLS(CountNams) == 0 || !TLS(IntrCoding) ) { TLS(CurrLHSGVar) = (type == 'g' ? var : 0); }
ReadExpr( follow, 'r' );
}
diff --git a/trans/trans.grp b/trans/trans.grp
index 8555512583..e7c5e16d2b 100644
--- a/trans/trans.grp
+++ b/trans/trans.grp
@@ -328,6 +328,9 @@ local l;
end);
InstallGlobalFunction(NrTransitiveGroups, function(deg)
+ if deg=1 then
+ return 0;
+ fi;
if not(deg in [1..TRANSDEGREES]) then
return fail;
fi;
@@ -342,6 +345,9 @@ InstallGlobalFunction( TransitiveGroup, function(deg,num)
if not(deg in [1..TRANSDEGREES]) then
Error("degree must be in [1..",TRANSDEGREES,"]");
fi;
+ if deg=1 then
+ return fail;
+ fi;
if not IsBound(TRANSLENGTHS[deg]) then
TransGrpLoad(deg,num);
fi;