## E.1 News and changes

# NEWS in SINGULAR 4.4.1

## News for version 4.4.1

Changed libraries:

- `homolog.lib`: handling of module weights ( Ext_R)
- `normaliz.lib`: new version ( normaliz_lib)
- `polymake.lib`: new version for topcom 1.1 ( polymake_lib)
- `sagbiNormaliz.lib`: new version for normaliz 3.10.5 ( sagbiNormaliz_lib)
- `sagbiNormaliz0.lib`: version for normaliz <=3.10.1 ( sagbiNormaliz0_lib)

Changes in the kernel/build system:

- changes for gcc 15
- changes for FLINT 3.3
- changes for normaliz 3.10.5
- fix `quotient` for qring case ( quotient)
- `nres`,`mres`,`prune_map`: allow ring elements as coefficients ( nres, mres, prune_map)
- `read`,`write` support a link (`"ssi:string"`) to read/write data encoded as strings ( read, write)

## News for version 4-4-1

New libraries:

- `arnold.lib`: Classification of isolated singularities with a nondegenerate Newton Boundary ( arnold_lib)
- `modprimdec.lib`: primary decompisition by modular methods ( modprimdec_lib)
- `modquotient.lib`: ideal quotient and saturation by modular methods ( modquotient_lib)
- `sagbiNormaliz.lib`: interface for the computation of Sagbi bases ( sagbiNormaliz_lib)
- `transformation.lib`: The image of a transformation given up to a specified degree ( transformation_lib)

Changed libraries:

- `polyclass.lib`: extended ( polyclass_lib)
- `primdec.lib`: choice of random values, irreducibility test ( primdec_lib)

Changes in the kernel/build system:

- use new algorithm for weighted Hilbert function hilb
- use new algorithm for std in the case of ordering `ds/Ds` and zero dimensional ideal over `QQ` (can be switched off by `option(pure_gb;`)
- use new algorithm for std in the case of a block ordering and ideal over `QQ` (can be switched off by `option(pure_gb;`)
- changed reduction routine for local orderings

## News for version 4-4-0

New libraries:

- `modfinduni.lib`: parallel computation of finduni ( modfinduni_lib finduni)
- `sagbiNormaliz.lib`: computation of Sagbi bases via normaliz ( sagbiNormaliz_lib)
- `stdmodule.lib`: Compute Standard Bases of submodule of free module over polynomial subalgebra ( stdmodule_lib)
- `tropicalEllipticCovers.lib`: Gromov-Witten numbers of tropical elliptic curves and their covers ( tropicalEllipticCovers_lib)

Changed libraries:

- `normal.lib`: optimized, integrated `locnorma.lib` and `modnormal.lib` ( normal_lib)
- `normaliz.lib`: update to normaliz 3.10 ( normaliz_lib)
- `hess.lib`: fixes ( hess_lib)
- `sheafcoh.lib`: new routines sheafCohBGGregul, sheafCohBGGregul_w, sheafCoh_w, ( sheafcoh_lib)
- `sheafcoh.lib`: display of the tables is moved to displayCohom ( sheafcoh_lib)
- `elim.lib`: rename `sat` to `sat_with_exp`, `sat` now return the saturation i9deal (only).
- `primdec.lib`: fixed a bug in absolute primary decomposition ( primdec_lib)

New type:

- `bigintvec`: bigintvec

New commands:

- new command prune_map
- new command mres_map

New/renamed monomial orderings:

To avoid confusion (with the degree reverse lexicographic ordering) the orderings `rp` and `rs` are renamed:

- renamed orderings `rp` -> `ip` `rs` -> `is`
- new ordering `Ip`

Changes in the kernel/build system:

- new algorithm for std in the case of ordering `ds` and zero dimensional ideal over `QQ`
- new algorithm for lift function ( lift)
- mstd for local rings ( mstd)
- use the new Hilbert function algorithm for hilb. (Different output format/ different return type)
- renamed orderings `ringorder_rp` -> `ringorder_ip` `ringorder_rs` -> `ringorder_is`
- new ordering `ringorder_Ip`
- changes for FLINT 3.0.x/3.1.x

## News for version 4-3-2

Changed libraries:

- many: call std in many places only if attribute `isSB` is not set
- many: change many calls to `execute` by better variants

New commands:

- `coeffs` for `ring` ( coeffs)

Changes in the kernel/build system:

- new algorithm for Hilbert function ( hilb)

## News for version 4-3-1

New libraries:

- `normal.lib`: new command `isNormal`, option `normalCheck` for `normal` ( normal_lib)

Changed libraries:

- chern.lib: fixed `symNsym` ( chern_lib)
- homolog.lib: fixed corner cases for `depth` ( homolog_lib)

New commands:

- `chinrem`, `farey` for `smatrix` ( smatrix)

Changed commands:

- overflow check for vdim
- Hilbert function ( hilb) cannot overflow (different return type)
- `delete` accepts `intvec` for the indices to delete ( delete)
- several GB based commands accept the choice of the algorithm: `"std","slimgb","sba","modstd","singmatic","groebner","ffmod","nfmod"` ( syz, eliminate, intersect, modulo, liftstd, lift)
- `reduce` for non-field coefficients: search best reduction

Changes in the kernel/build system:

- changes for gcc 12
- new option `--log LOGFILE`
- configure can change the path to hml documentation (`--htmldir=...`)
- different format for `doc.tbz2`
- new algorithm for Hilbert function ( hilb)

## News for version 4-3-0

New libraries:

- enumpoints.lib: enumerating rational points ( enumpoints_lib)
- sagbigrob.lib: Sagbi-Groebner basis of an ideal of a subalgebra ( sagbigrob_lib)
- puiseuxexpansion.lib: Puiseux expansions over algebraic extensions ( puiseuxexpansions_lib)
- integralbasis_lib: Integral basis in algebraic function fields: new version ( integralbasis_lib)

Changes in the kernel/build system:

- input history is stored by default in `.singularhistory` ( Editing input).
- ABI change: all number routines (`n_...`) have only `coeffs` as last argument, functions with `ring` as last argument are removed
- PATH is not changed for `system("sh",..)` (use SingularBin)
- `hilb` avoids int overflow (also in `degree, stdhilb`)
- `liftstd` (with 2 arguments) improved ( liftstd)
- `noether` improved ( noether), use in `groebner(I,"HC")` for faster results for local orderings, 0-dimensional ideals ( groebner).
- letterplace routines improved ( LETTERPLACE)
- info file is now `singular.info` instead of `singular.hlp`
- update for using FLINT 2.8.x

## News for version 4-2-1

New commands:

- Letterplace: dim, rightStd for qrings ( LETTERPLACE)
- Letterplace: map, fetch, imap ( map, fetch, imap)

New libraries:

- decomp.lib: functional decomposition of polynomials ( decomp_lib)
- hodge.lib: algorithms for Hodge ideals ( hodge_lib)
- tateProdCplxNegGrad.lib: sheaf cohomology on product of projective spaces ( tateProdCplxNegGrad_lib)

Changes in the kernel/build system:

- `liftstd` (with 2 arguments) improved ( liftstd)
- building on Cygwin with shared libraries
- building the manual via `--enable-doc-build`

## News for version 4-2-0

Syntax changes:

- renamed poly.lib to polylib.lib ( polylib_lib)

New libraries:

- interval.lib: interval arithmetic ( interval_lib)
- maxlike.lib: algebraic statistics ( maxlike_lib)
- nchilbert.lib: Hilbert series for LetterPlace algebras ( nchilbert_lib)
- polyclass.lib: class of polynomials ( polyclass_lib)
- recover.lib: Hybrid numerical/symbolical algorithms ( recover_lib)
- redcgs.lib: Reduced Comprehensive Groebner Systems ( redcgs_lib)
- ringgb.lib: coefficient rings ( ringgb_lib)
- sets.lib: Sets ( sets_lib)
- stanleyreisner.lib: T1 and T2 for a general Stanley-Reiser ring ( stanleyreisner_lib
- systhreads.lib: multi-threaded objects ( systhreads_lib)

Changed libraries:

- classify_aeq.lib: new procedure `classSpaceCurve` ( classify_aeq_lib)
- grobcov.lib: new version ( grobcov_lib)
- modular.lib: parallel version for verification via `system("verifyGB",I)`

New commands:

- `system("verifyGB",I)`: test, if I is a Groebner basis (using parallel processes)
- Letterplace: modulo,syz,lift,liftstd, rightStd ( LETTERPLACE)

Changes in the kernel/build system:

- update for using FLINT 2.6.x and for FLINT 2.7.0
- Singular can be build with NTL or FLINT or both (if none is available, `factorize` and `gcd` will not work.)

## News for version 4-1-3

New libraries:

- invar.lib: Invariant theory invar_lib
- moddiq.lib: ideal quotient and saturation
- ncModslimgb.lib: modular Groebner bases for G-algebras ncModslimgb_lib

Changed libraries:

- chern.lib: new version ( chern_lib)
- grobcov.lib: new version ( grobcov_lib), new functions ConsLevels, Levels, Grob1Levels, DifConsLCSets

Changes in the kernel/build system:

- improved gcd and multiplication via FLINT
- improved lift (and related)
- port to polymake 3.5.x
- rational functions via flint ( flintQ)
- free algebra over Z ( LETTERPLACE)
- adaptions/functions for `Singular.jl`(https://github.com/oscar-system/Singular.jl)

## News for version 4-1-2

New libraries:

- arnoldclassify.lib: Arnol'd Classifier of Singularities ( arnoldclassify_lib)
- difform.lib: Procedures for differential forms ( difform_lib)
- dmodideal.lib: Algorithms for Bernstein-Sato ideals of morphisms ( dmodideal_lib)
- fpalgebras.lib: Generation of various algebras in the letterplace case ( fpalgebras_lib)
- ncrat.lib: non-commutatie rational functions ( ncrat_lib)

Changed libraries:

- freegb.lib: lpDivision, lpPrint ( freegb_lib)
- fpadim.lib ( fpadim_lib)
- schreyer.lib: deprecated
- goettsche.lib: new, extended version (The Nakajima-Yoshioka formula up to n-th degree,Poincare Polynomial of the punctual Quot-scheme of rank r on n planar points Betti numbers of the punctual Quot-scheme of rank r on n planar points)( goettsche_lib)
- grobcov.lib: small bug fix ( grobcov_lib)

Changes in the kernel/build system:

- integrated xalloc into omalloc: (`./configure --disable-omalloc`)
- improved heuristic for `det` ( det)
- improved reading of long polynomials
- improved groebner bases over Z coefficients
- code for free algebras (letterplace rings) rewritten (using now the standrad `+,-,*,^,std`,...) ( LETTERPLACE)
- new commands `rightstd` ( rightstd (letterplace))
- extended `twostd` to LETTERPLACE ( twostd (letterplace), twostd (plural))
- pseudo type `polyBucket`
- new type `smatrix`: sparse matrix (experimental) ( smatrix).
- extended `coef` to ideals ( coef).
- error and signal handling in `libSingular` ( libSingular).
- updated gfanlib to version 0.6.2
- port to NTL 11 (needs C++11: gcc6 or -std=c++11), which does not conflict with polymake (needs C++14)

## News for version 4-1-1

New syntax:

- `alias`: may be used as a prefix to a variable declaration. Can only be used in procedure headings. ( General command syntax).

New command:

- `fres`: improved version of `sres`: computes a (not necessarily minimal) free resolution of the input ideal/module, using Schreyer's algorithm. ( fres, sres).

Extended commands:

- pseudo ordering `L` allows setting of limits for exponents in polynomials ( Pseudo ordering L, attrib for `maxExp`)
- `%`,`mod`: also for poly operands ( poly operations).
- `delete`: extended to intvec, ideal, module ( delete).
- syz ( syz), lift ( lift), liftstd ( liftstd), intersect( intersect): with a specified GB algorithm

New libraries:

- classify2.lib: Classification of isolated singularities of corank <=2 and modality <= wrt. right equivalence over the complex numbers according to Arnold's list. ( classify2_lib)
- goettsche.lib: Goettsche's formula for the Betti numbers of the Hilbert scheme of points on a surface, Macdonald's formula for the symmetric product ( goettsche_lib)
- combinat.lib, modules.lib, methods,lib, nets.lib: a more mathematical view of modules ( combinat_lib: combinatorics), ( methods_lib: construct procedures), ( modules_lib: free resolutions), ( nets_lib: pretty printing)
- ncHilb.lib: Hilbert series of non-commutative monomial algebras ( ncHilb_lib)
- realclassify.lib: Classification of real singularities( realclassify_lib)
- rootisolation.lib: real root isolation using interval arithmetic( rootisolation_lib)
- rstandard.lib: Janet bases and border bases for ideals ( rstandard_lib)

Changed libraries:

- chern.lib: new version ( chern_lib)
- gitfan.lib: new (incompatible) version ( gitfan_lib)
- grobcov.lib: new version ( grobcov_lib)

Changes in the kernel/build system:

- port to polymake 3.x.x
- port to NTL 10 with threads (needs also C++11: gcc6 or -std=c++11)
- p_Invers is only a helper for p_Series: now static
- p_Divide is now p_MDivide, pDivide/p_Divide is a new routine

## News for version 4-1-0

Syntax changes:

- new (additional) form of ring definitions: (for example `ring R=QQ[x,y,z];`) ( General syntax of a ring declaration)
- new (additional) form of multi-indicies: (for example `i(1,2,3,4,5)`) ( Names)
- changed behaviour of `charstr` ( charstr)
- new data type `cring` to describe the coefficient rings, to be used for the new definitions for (polynomial) rings ( General syntax of a ring declaration)
- new command `ring_list` to access the parts used to construct polynomial rings ( ring_list, ringlist)
- extended polynomial ring construction: also from lists produced by `ring_list`
- new attribute `ring_cf` for `ring` ( attrib)
- printing of rings changed to match `cring` names ( charstr)

New libraries:

- new library: classifyMapGerms.lib: standard basis of the tangent space at the orbit of an algebraic group action ( classifyMapGerms_lib)
- new library: ffmodstd.lib: Groebner bases of ideals in polynomial rings over algebraic function fields( ffmodstd_lib)
- new library: nfmodsyz.lib: syzygy modules of submodules of free modules over algebraic number fields( nfmodsyz_lib)
- new library: curveInv.lib: invariants of curves ( curveInv_lib)
- new library: gfan.lib: interface to gfanlib ( gfan_lib)
- extended library: interface to polymake merged into polymake_lib
- new library: tropicalNewton.lib: Newton polygon methods in tropical geometry ( tropicalNewton_lib)
- new library: schubert.lib: some procedures for intersction theory ( schubert_lib)

Changed libraries:

- classify_aeq.lib: new procedures ( classify_aeq_lib)
- grobcov.lib: new version ( grobcov_lib)
- ncfactor.lib: factorization in some noncommuative algebras ( ncfactor_lib) with new routine ncfactor ( ncfactor)
- primdec.lib: new option "subsystem" ( primdec_lib)

Changes in the kernel:

- improved mapping of polynomials/ideals/...
- port to gcc 6
- port to gfanlib 0.6 (requires C++11, i.e. gcc >=4.3)
- port to NTL 10
- port to polymake 3.0
- port to readline 7
- sba works for global orderings, also for coefficient types Z and Z/m
- std works for all orderings, also for coefficient types Z and Z/m with local/mixed orderings
- factorize works for polynomial rings over ZZ

Experimental stuff:

- module customstd_lib: modify `std` ( satstd)

## News for version 4-0-3

New libraries:

- new library: brillnoether.lib: Riemann-Roch spaces of divisors on curves ( brillnoether_lib)
- new library: chern.lib: Chern classes ( chern_lib)
- new library: ffmodstd.lib: Groebner bases of ideals in polynomial rings over algebraic function fields( ffmodstd_lib)
- new library: GND.lib: General Neron Desingularization ( GND_lib)
- new library: graal.lib: localization at prime ideals ( graal_lib)
- new library: hess.lib: Riemann-Roch space of divisors ( hess_lib)

Changed libraries:

- renamed algemodstd_lib to nfmodstd_lib, extended to `module`
- renamed derham_lib to deRham_lib
- grobcov.lib (grobcovK): Groebner Cover for parametric ideals ( grobcov_lib) with new routine ConsLevels ( ConsLevels), removed AddCons AddConsP.

## News for version 4-0-2

New commands:

- align ( align)
- branchTo ( procs with different argument types)
- `->` ( proc expression)

Change in ring handling:

- `typeof(` qring `)` returns `"ring"`

New libraries:

- algemodstd.lib: Groebner bases of ideals in polynomial rings over algebraic number fields(renamed to nfmodstd_lib)
- arr.lib: arrangements of hyperplanes ( arr_lib)
- brillnoether.lib: Riemann-Roch spaces of divisors on curve ( brillnoether_lib)
- hess.lib: Riemann-Roch space of divisors on function fields and curves ( hess_lib)
- gradedModules.lib: graded modules/matrices/resolutions ( gradedModules_lib)

Changed libraries:

- revised polymake interface (polymake.so)
- revised gfanlib interface (gfanlib.so)
- Presolve::findvars ( findvars, variables)
- Ring::addvarsTo ( addvarsTo)
- Ring::addNvarsTo ( addNvarsTo)
- Ring::hasAlgExtensionCoefficient ( hasAlgExtensionCoefficient)
- Schreyer::s_res (`s_res`)
- grobcov.lib (grobcovK) ( grobcov_lib) with new routines AddCons AddConsP.
- normaliz.lib (for normaliz >=2.8) ( normaliz_lib)
- renamed groebnerFan to groebnerFanP in polymake.lib ( polymake_lib)
- renamed fVector to fVectorP in polymake.lib ( polymake_lib,`polymakeInterface_lib`)

## News for version 4-0-1

Version 4-0-1 is a bug fix release.

New feature: attribute `ring_cf` for `ring` ( attrib)

## News for version 4-0-0

Version 4-0-0 is a milestone release of Singular. The new release series 4 aims for an entirely modularized architecture simplifying connectivity with other systems and paving the way for parallel computations. As a first step in modularization, the new release features an internal structural separation of coefficient rings and polynomial rings. This allows for a flexible integration of new coefficient rings.

SINGULAR 4-0-0's list of new functionality and significant improvements further extends that of the 3-1-6/7 prerelease series.

New functionality

- de Rham cohomology of complements of algebraic varieties ( deRham_lib)
- Gromov-Witten numbers of elliptic curves ( ellipticcovers_lib)
- classification of isolated complete intersection singularities in characteristic 0 ( classifyci_lib)
- parametrization of orbits of unipotent actions ( orbitparam_lib)
- F5-like Groebner basis algorithm ( sba)
- element-wise application of functions to data structures ( apply)
- support for debugging libraries ( ASSUME)

Improved functionality

- Groebner cover for parametric ideals ( grobcov_lib)
- normalization of affine rings ( normal_lib)
- classification of real singularities ( realclassify_lib)
- GIT-fans ( gitfan_lib)
- algebraic/transcendental field extensions
- Non-commutative subsystem
- an abstraction layer for parallel computations ( parallel_lib)
- run-time loading of supplementary kernel code ( Dynamic modules)
- interpreter language support for name spaces ( package)

Availability

SINGULAR is available as source code and for Linux, Mac OS X, Windows, FreeBSD and SunOS-5.

User manual for Singular version 4.4.1, 2025, generated by texi2html.