@comment -*-texinfo-*-
@comment this file contains the News about Singular versions
@comment Unix
@ifclear VERSION
@include version.texi
@end ifclear

@majorheading NEWS in SINGULAR @value{VERSION}

@ifclear singularmanual
@macro nref{what}
\what\
@end macro
@end ifclear

@ifset singularmanual
@macro nref{what}
@ref{\what\}
@end macro
@end ifset

@heading News for version @value{VERSION}

New libraries:
@itemize
@item @code{normal.lib}: new command @code{isNormal}, option @code{normalCheck} for @code{normal} (@nref{normal_lib})
@end itemize

New commands:
@itemize
@item @code{chinrem}, @code{farey} for @code{smatrix} (@nref{smatrix})
@end itemize

Changed commands:
@itemize
@item overflow check for @nref{vdim}
@item better overflow check/les overflows for Hilbert function (@nref{hilb})
@end itemize

Changes in the kernel/build system:
@itemize
@item changes for gcc 12
@item new option @code{--log LOGFILE}
@item configure can change the path to hml documentation (@code{--htmldir=...})
@item different format for @code{doc.tbz2}
@item new algorithm for Hilbert function (@nref{hilb})
@end itemize

@c New commands:
@c @itemize
@c @end itemize
@c
@c New libraries:
@c
@c @itemize
@c @end itemize

@heading News for version 4-3-0

New libraries:
@itemize
@item enumpoints.lib: enumerating rational points (@nref{enumpoints_lib})
@item sagbigrob.lib: Sagbi-Groebner basis of an ideal of a subalgebra (@nref{sagbigrob_lib})
@item puiseuxexpansion.lib: Puiseux expansions over algebraic extensions (@nref{puiseuxexpansions_lib})
@item integralbasis_lib: Integral basis in algebraic function fields: new version (@nref{integralbasis_lib})
@end itemize


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

@heading News for version 4-2-1

New commands:
@itemize
@item Letterplace: dim, rightStd for qrings (@nref{LETTERPLACE})
@item Letterplace: map, fetch, imap (@nref{map}, @nref{fetch}, @nref{imap})
@end itemize

New libraries:

@itemize
@item decomp.lib: functional decomposition of polynomials (@nref{decomp_lib})
@item hodge.lib: algorithms for Hodge ideals (@nref{hodge_lib})
@item tateProdCplxNegGrad.lib: sheaf cohomology on product of projective spaces (@nref{tateProdCplxNegGrad_lib})
@end itemize

Changes in the kernel/build system:
@itemize
@item @code{liftstd} (with 2 arguments) improved (@nref{liftstd})
@item building on Cygwin with shared libaries
@item building the manual via @code{--enable-doc-build}
@end itemize

@heading News for version 4-2-0

Syntax changes:
@itemize
@item renamed poly.lib to polylib.lib (@nref{polylib_lib})
@end itemize

New libraries:

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

Changed libraries:
@itemize
@item classify_aeq.lib: new procedure @code{classSpaceCurve} (@nref{classify_aeq_lib})
@item grobcov.lib: new version (@nref{grobcov_lib})
@item modular.lib: parallel version for verification via @code{system("verifyGB",I)}
@end itemize

New commands:
@itemize
@item @code{system("verifyGB",I)}: test, if I is a Groebner basis (using parallel processes)
@item Letterplace: modulo,syz,lift,liftstd, rightStd (@nref{LETTERPLACE})
@end itemize

Changes in the kernel/build system:
@itemize
@item update for using FLINT 2.6.x and for FLINT 2.7.0
@item Singular can be build with NTL or FLINT or both
(if non is availabel, @code{factroize} and @code{gcd} will not work.)
@end itemize

@heading News for version 4-1-3
New libraries:
@itemize
@item invar.lib: Invariant theory @nref{invar_lib}
@item moddiq.lib: ideal quotient and saturation @nref{moddiq_lib}
@item ncModslimgb.lib: modular Groebner bases for G-algebras @nref{ncModslimgb_lib}
@end itemize

Changed libraries:
@itemize
@item chern.lib:  new version (@nref{chern_lib})
@item grobcov.lib: new version (@nref{grobcov_lib}),
      new functions @nref{ConsLevels}, @nref{Levels}, @nref{Grob1Levels},
      @nref{DifConsLCSets}
@end itemize

Changes in the kernel/build system:
@itemize
@item improved gcd and multiplication via FLINT
@item improved lift (and related)
@item port to polymake 3.5.x
@item rational functions via flint (@nref{flintQ})
@item free algebra over Z (@nref{LETTERPLACE})
@item adaptions/functions for @code{Singular.jl}(@uref{https://github.com/oscar-system/Singular.jl})
@end itemize

@heading News for version 4-1-2
New libraries:
@itemize
@item arnoldclassify.lib: Arnol'd Classifier of Singularities (@nref{arnoldclassify_lib})
@item difform.lib: Procedures for differential forms (@nref{difform_lib})
@item dmodideal.lib: Algorithms for Bernstein-Sato ideals of morphisms (@nref{dmodideal_lib})
@item fpalgebras.lib: Generation of various algebras in the letterplace case (@nref{fpalgebras_lib})
@item ncrat.lib: non-commutatie rational functions
(@nref{ncrat_lib})
@end itemize

Changed libraries:
@itemize
@item freegb.lib: lpDivision, lpPrint (@nref{freegb_lib})
@item fpadim.lib (@nref{fpadim_lib})
@item schreyer.lib: deprecated
@item 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)(@nref{goettsche_lib})
@item grobcov.lib: small bug fix (@nref{grobcov_lib})
@end itemize

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

@heading News for version 4-1-1

New syntax:
@itemize
@item @code{alias}: may be used as a prefix to a variable declaration.
Can only be used in procedure headings. (@nref{General command syntax}).
@end itemize

New command:
@itemize
@item @code{fres}: improved version of @code{sres}: computes a (not necessarily minimal) free resolution of the input ideal/module, using Schreyer's algorithm.
(@nref{fres},@nref{sres}).
@end itemize


Extended commands:
@itemize
@item pseudo ordering @code{L} allows setting of limits for exponents in polynomials (@nref{Pseudo ordering L},@nref{attrib} for @code{maxExp})
@item @code{%},@code{mod}: also for poly operands (@nref{poly operations}).
@item @code{delete}: extended to intvec, ideal, module (@nref{delete}).
@item syz (@nref{syz}), lift (@nref{lift}), liftstd (@nref{liftstd}), intersect(@nref{intersect}): with a specified GB algorithm
@end itemize

New libraries:
@itemize
@item classify2.lib: Classification of isolated singularities of corank <=2 and modality <= wrt. right equivalence over the complex numbers according to Arnold's list. (@nref{classify2_lib})
@item 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 (@nref{goettsche_lib})
@item combinat.lib, modules.lib, methods,lib, nets.lib: a more mathematical view of modules (@nref{combinat_lib}: combinatorics),
(@nref{methods_lib}: construct procedures),
(@nref{modules_lib}: free resolutions),
(@nref{nets_lib}: pretty printing)
@item ncHilb.lib: Hilbert series of non-commutative monomial algebras (@nref{ncHilb_lib})
@item realclassify.lib: Classification of real singularities(@nref{realclassify_lib})
@item rootisolation.lib: real root isolation using interval arithmetic(@nref{rootisolation_lib})
@item rstandard.lib: Janet bases and border bases for ideals (@nref{rstandard_lib})
@end itemize

Changed libraries:
@itemize
@item chern.lib:  new version (@nref{chern_lib})
@item gitfan.lib:  new (incompatible) version (@nref{gitfan_lib})
@item grobcov.lib:  new version (@nref{grobcov_lib})
@end itemize

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

@heading News for version 4-1-0

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

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

Changed libraries:
@itemize
@item classify_aeq.lib: new procedures (@nref{classify_aeq_lib})
@item grobcov.lib: new version (@nref{grobcov_lib})
@item ncfactor.lib: factorization in some noncommuative algebras (@nref{ncfactor_lib}) with new routine ncfactor (@nref{ncfactor})
@item primdec.lib: new option "subsystem" (@nref{primdec_lib})
@end itemize

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

Experimental stuff:
@itemize
@item module @nref{customstd_lib}: modify @code{std} (@nref{satstd})
@end itemize

@heading News for version 4-0-3

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

Changed libraries:
@itemize
@item renamed algemodstd_lib to @nref{nfmodstd_lib}, extended to @code{module}
@item renamed derham_lib to @nref{deRham_lib}
@item grobcov.lib (grobcovK): Groebner Cover for parametric ideals (@nref{grobcov_lib}) with new routine
   ConsLevels (@nref{ConsLevels}), removed AddCons  AddConsP.
@end itemize

@heading News for version 4-0-2
New commands:
@itemize
@item align (@nref{align})
@item branchTo (@nref{procs with different argument types})
@item @code{->} (@nref{proc expression})
@end itemize

Change in ring handling:
@itemize
@item @code{typeof(} qring @code{)} returns @code{"ring"}
@end itemize

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

Changed libraries:
@itemize
@item revised polymake interface (polymake.so)
@item revised gfanlib interface (gfanlib.so)
@item Presolve::findvars (@nref{findvars}, @nref{variables})
@item Ring::addvarsTo (@nref{addvarsTo})
@item Ring::addNvarsTo (@nref{addNvarsTo})
@item Ring::hasAlgExtensionCoefficient (@nref{hasAlgExtensionCoefficient})
@item Schreyer::s_res (@code{s_res})
@item grobcov.lib (grobcovK) (@nref{grobcov_lib}) with new routines
   AddCons  AddConsP.
@item normaliz.lib (for normaliz >=2.8) (@nref{normaliz_lib})
@item renamed groebnerFan to groebnerFanP in polymake.lib (@nref{polymake_lib})
@item renamed fVector to fVectorP in polymake.lib (@nref{polymake_lib},@code{polymakeInterface_lib})
@end itemize

@heading News for version 4-0-1

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

New feature: attribute @code{ring_cf} for @code{ring} (@nref{attrib})

@heading 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.

@sc{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

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

Improved functionality

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

Availability

@sc{Singular} is available as source code and for Linux, Mac OS X, Windows, FreeBSD and
SunOS-5.

