The purpose of this section is to describe new features and changes between Singular 3-1-7 and Singular 4.* (formerly known as Spielwiese) both for developers and Singular users. In what follows we will refer to the systems as Singular 3 and Singular 4.

Version schema for Singular
---------------------------

SINGULAR version is of the form a.b.c.d which may also be written as a-b-c-d where a,b,c and d are numbers:

  * a is changed with major, incompatible changes

  * b is changed with incompatible changes (of some commands/libraries)

  * c is changed with compatible changes (i.e. new commands, extended options, new algorithms, etc.)

  * d is changed with each release (i.e. with bug fixes, etc.)

SINGULAR does also have "unofficial" build orginating from a code version between "official" version: such builds display "Development version a.b.c" in the header while "official" versions show "version a.b.c". Also the manual describes version a-b-c. To get the complete version number, use system("version"); or use SINGULAR_VERSION in C.

Notes for Singular users
------------------------

Coefficient rings
.................

To allow for easy integration of new coefficient rings into Singular, the the way coefficient rings are being handled has been redesigned.

In general, the user syntax has not changed, however there are some changes in the behaviour of Singular:

  * setting minpoly results in changing the current coefficient domain and clears all previously defined varaiables of that ring

  * Minor changes in the output of coefficient ring description. Moreover the output of elements of certain rings has been improved (for example, reals).

  * Algebraic and transcendental extensions of rationals and finite fields have been reimplemented. In particular, the heuristics for clearing denominators and factoring out content have been changed. In some cases this leads to a different, mathematically equivalent results of Groebner bases and related computations. For example a Groebner basis element may differ by a unit.

  * Most noteably, due to the redesign of the coefficient rings, if the user sets the minimal polynomial all variables dependent on the current ring are deleted.

Ring-dependent options
......................

Formally global Singular option now belong to individual polynomial rings. This includes:

  * intStrategy

  * redTail

  * redThrough

Also the following settings now belong to individual (currently active) polynomial rings:

  * short

  * minpoly

  * noether

Hence setting these options only affects the current ring. Be aware of this when switching between different rings, since the options affect the result of various computations (in particular Groebner bases).

Path names
..........

  * The tree structure of the binary Singular distribution has been changed. The typical tree now looks as show at https://github.com/Singular/Sources/wiki/Sw-tree

  * Accordingly Singular search paths (where Singular searches for libraries, dynamic modules, etc.) have been changed. You can display them by calling Singular by Singular -v.

  * currently, multi-arch installations of Singular 4 aere not possible.

Library versioning
..................

Due to switching from Subversion to GIT revision control system for the Singular source code, library version variables (displayed when loading a library) have changed.

New orderings for modules
.........................

The now can assign weights to module components, when defining a monomial ordering. For example

     ring R = 0, (x,y,z), (am(1,2,3,   10,20,30,40), dp, C);
     deg(x*gen(1));
     ==> 11

will assign weights 1,2,3 to x,y,z respectively, and weights 10,20,30,40,0,0,... to components of any free module defined over R. This ordering will first sort by this weighted degree, then by dp on the ring monomials and then will give priority to the large component index.

Future benefits of Singular 4
.............................

The redesign of Singular will allow us to provide new features in the future, for example:

  * Interpreter type for coefficient rings.

  * User defined coefficient rings.

  * Improved syntax for defining polynomial rings.

Notes for developers
--------------------

There has been an entensive process of refactoring, redesign and modularization of Singular to facilitate easier maintenance and future development:

  * Build System : automake, libfac has been integrated into Factory

  * Removed MP (Multi protocol) in favor of SSI links.

  * Separation/modularization into libraries and packages

  * For easy integration of new coeffcient rings, we defined a generic interface for coefficient rings and a supporting framework for making them accessible to the user.

     In particular we have separated everything related to coeffcient rings into a separate library libcoeffs. Dependency tree between restructured packages is show at http://www.singular.uni-kl.de/dox/singular.png

     In order to use libSingular as a C++ library, see libSingular.

Building Singular
-----------------

The user can build and install Singular with the following standard UNIX-like procedure:

  * Download and extract the latest official source package (.tar.gz).

  * Run the configure script, for instance, ./configure.

  * Build Singular by running make.

  * Install Singular by running make install.

In contrast to Singular 3, there are now many more configuration options.

All possible options for configure can be seen by running the configure script with option --help. On a multicore compute consider running make with the option -j [cores].

Side-by-side installation
-------------------------

Due to choosing paths according to FS standards it is no longer possible to have a side-by-side installation of different Singular versions or versions for different architectures.