# changes, 1.4

• In preparation for running Macaulay2 in parallel using threads, the Safe C language, in which the interpreter is written, has been reworked. The chief advantage is that now, references to top level objects now consist of a single address pointer, and thus assignment can happen atomically. Formerly, a small integer (for identifying the type of object pointed to) accompanied the pointer, but now it is stored with the rest of the object. Also, new keywords have been added to allow the definition of new types, support has been added for translation to C++, and support for atomic operations and thread local variables has been added.
• new packages:
• BooleanGB, a package for Gröbner bases in Boolean rings, has been added.
• DGAlgebras, a package for handling differential graded algebras, has been added.
• FormalGroupLaws, a package for commutative formal group laws, has been added.
• GraphicalModels, a package for discrete and Gaussian statistical graphical models, has been added.
• Graphics, a package for creating graphics, has been added.
• Graphs, a package providing data types, visualization, and basic functions for graphs, has been added.
• HodgeIntegrals, a package for Hodge integrals on the moduli space of curves, has been added and certified.
• Kronecker, a package for Kronecker and rational normal forms, has been added.
• ModuleDeformations, a package for computating versal deformations of maximal Cohen-Macaulay modules, has been added and certified.
• NAGtypes, a package containing declarations of types needed by two other packages, has been added.
• Nauty, an interface package for the program nauty, which computes automorphism groups of graphs and digraphs, has been added.
• Normaliz, an interface package to the program normaliz, which computes the Hilbert basis of a rational cone, has been certified.
• NormalToricVarieties, a package designed to manipulate normal toric varieties and related geometric objects, has been added.
• Parametrization, a package for rational parametrization of rational plane curves, has been added.
• PHCpack, an interface package to the program PHCpack, which uses homotopy continuation methods to solve systems of polynomial equations numerically, has been added.
• Serialization, a preliminary package for saving Macaulay2 objects in files, has been added.
• SimplicialDecomposability, a package containing various decomposability routines for simplicial complexes, has been added and certified.
• ToricVectorBundles, a package for vector bundles on toric varieties, has been added and certified.
• WeylGroups, a package for root systems and Weyl groups, has been added.
• improved packages:
• directImageComplex, now has the ability to compute direct image complexes, and maps between them.
• Polyhedra, a package for computations with convex polyhedra, has been improved: matrices that are returned from polyhedral objects are over ZZ now, except for vertices of a polyhedron; fourierMotzkin is now called only once, to increase the speed in higher dimensions.
• Schubert2, a package for enumerative geometry, has been well documented (finally) and has been improved, e.g. incidence correspondences between flag varieties has been added.
• The SimpleDoc package, used for documentation in Macaulay2, has a new function, multidoc, that allows multiple documentation nodes per string. The format of the Consequences section has changed. There is a new keyword, Pre, that allows preformatted text to be easily inserted.
• The package XML has been documented.
• The debugging function on has been improved.
• Gröbner bases over fields are now autoreduced, so the answer is mathematically well-defined. Resulting changes in coefficients of polynomials in matrices returned by such functions as syz and complement may be observed.
• The function basis, now is functorial: if given a matrix, it returns the matrix between the images of the bases of the source and target.
• The functions basis, and truncate(List,Module) now allow partial multidegrees to be given. The result is a basis or generating set over the subring generated by variables whose initial degrees are zero.
• Various bug fixes, including several memory leaks, and an efficiency related bug where e.g. generators gb I, of an ideal over the rationals, would take a long time to compute
• TEX mode can now handle $\mapsto$.
• Addition of ideals with an expression such as I+J has been extended to work in the case where I and J are ideals in different, but compatible, rings. Here compatibility means the one is an predecessor of the other, as would be the coefficient ring of a polynomial ring or the ambient ring of a quotient ring.
• Added a new method, matrix(RingElement), that makes a one by one matrix from a ring element.
• Added a new method exp(RingElement) for the exponential function applied to a nilpotent ring element.
• functionality changed:
• Elements of sets are now sorted before printing.