Improved old documentation and added many new descriptions of functions.
Greatly improved the debugger. In particular, the debugger will put you directly onto the line of the program with an error, and allows the user to execute a given number of steps of the program (see step) and to conveniently display and change values of variables as they evolve.
Improved the making of packages: made it much easier for a user to create a complete package, including documentation.
Improved the handling of symmetric algebras and Rees algebras; improved implementation of things like analytic spread.
Improved handling of finite fields: GF now uses Conway polynomials when possible. Maps between Galois fields made with them are now easy to produce with map(E,F). (Note: actually, the user must load the package manually.)
The function hilbertFunction is now faster at computing power series expansions.
The function betti now uses the dot product of the heft vector of the ring with the (multi)degrees of the basis elements in a chain complex in its display. See heft vectors.
The behavior of return in the debugger has changed: it now stops in the debugger at the next available opportunity.
The function minors has been altered so the ideal of n by n minors that it provides for negative values of n is the unit ideal.
The optional argument to monoid and to polynomial ring creation named ConstantCoefficients has been removed. Specifying ConstantCoefficients=>false can be accomplished by specifying Join=>false. See Join.
functionality added or improved:
Filenames starting with ~/ will have the tilde replaced by the home directory.
The D language, in which the Macaulay2 interpreter is written, is now type-safe
During compilation of Macaulay2, as much of the computation as possible is now done to satisfy the make-target all, with the resulting files placed in a staging area, ready for quickly satisfying the make-target install.
During compilation of Macaulay2, it is now possible to keep the architecture independent files in a separate directory tree, saving time if versions for multiple architectures are to be built. Including those files in a source tar file will allow the distribution of a fat source tar file, speeding up compilation.
Pressing the RET key in the Macaulay2 interaction buffer on a line containing a source file name and line number will open up the source file at that position in a new buffer. This allows error messages to be treated with dispatch.
The behavior of setup has changed, in that the commands that set the paths are now placed in separate files in the home directory of the user, and those files are sourced only if they are present. That enables the user to continue to share the usual init files on multiple machines, even though Macaulay2 may be installed in various different locations.
A new division algorithm has been implemented in rings with monomials less than 1, e.g., where the monomials can involve negative exponents, and hence do not form a well-ordered set. See division in polynomial rings with monomials less than 1.
A bug in irreducibleCharacteristicSeries, upon with minimalPrimes depends, was fixed. Now the new ring supporting the characteristic series will have variables with the same names and degrees, but the ordering of the variables and the monomial ordering will be different. This ensures that homogeneity will be preserved. Also, for convenience, the routine now returns a sequence, instead of a list, suitable for immediate parallel assignment.
The function part has been altered so that for multigraded rings, it does not use the first component of the degree vector. New functionality has been added, and the method for part(Sequence,RingElement) has been removed.
Heft vectors are now automatically computed, see heft vectors. Users who specify the Heft option explicitly may be able to avoid that now.
The description of a ring provided by describe is now abbreviated by making use of run length encoding.
Browsers started by viewHelp are now run in a separate process group so they don't die when Macaulay2 terminates.
The function get has been fixed so it returns an error message if the process associated with the pipe has died.
The function searchPath now does what the documentation said it would do.
The output operation s<<x, when s is a string, has been changed so that if a file with filename s is already open, that file will be used instead of opening a new file with the same name, erasing the data already written to the file.
Tensor product of a module with a ring has been modified so it will make a ring map between the two rings that is derived from the names of the variables.
The degrees in symmetric algebras have been corrected.
The default for polynomial rings over polynomial rings is now to join the degree vectors of monomials in the base to the degree vectors of the top level monoid, usually resulting in a multigraded ring. For example, QQ[x][y] is now bigraded.
Inverting a noninvertible matrix results in an error message now.
The function export, given a string (rather than a symbol) will now make a new symbol with that name, even if a symbol with the same name already exists in another visible package.
The function basis will now check finite dimensionality in advance, to avoid running out of memory.
Functions and types associated with hypertext and documentation have been isolated in a new package called Text, which gets loaded automatically by beginDocumentation.
The file layout system, as described by Layout, formerly called LAYOUT, now supports separation of architecture independent files from architecture dependent files.
The cross reference hyperlinks in the info form of the documentation have been improved, but we recommend reading it in emacs with M-x info, configuring the emacs variable Info-hide-note-references so its value is hide. See reading the documentation.
Now the function needs will reload the requested file not only if the file has not been loaded before, but also if it has changed since the previous time.
It is now possible to represent a series of three or more slashes within a string delimited by /// by typing a longer series.
The conversion of TEX to html has been improved and documented, see html(TEX).
Unicode, encoded in utf-8 format, is supported in documentation pages, both in html form and in emacs info form: 你好.
When an error occurs within a string being evaluated with value, the appropriates lines of the string will be displayed if the debugger is entered.
A new method for substring accepts a pair of integers as first argument of the sort returned by regex.
Regular expression handling, by the functions regex, match, replace, and select, is now much faster because strings are not copied.
The function regex now has a form that restricts the range of the search.
Macaulay2 now incorporates frobby, a free library for computing the Alexander dual of a monomial ideal (see dual(MonomialIdeal)).
The function select will now give an error message if the function provided to it returns something neither true nor false.
The binary representation of a real number is now available using promote(RR,type of QQ). The code for lift(RR,type of QQ) has been tightened up so a rational number is provided that provides exactly the same real number when promoted.
The emacs commands M-x M2, bound to f12, and M2-send-to-program, bound to f11, have some new capability. With prefix argument C-u C-u to M-x M2, the tag from which the buffer name is constructed (by prepending and appending asterisks) can be entered in the minibuffer. With a prefix argument to M2-send-to-program, the name of the buffer to which this and future uses of the command (in this buffer) should be sent can be entered, with history.