# changes, 1.17

• The function importFrom has been added, for importing individual symbols from another package.
• The function readPackage has been added, for retrieving the options in the preamble of a package quickly.
• The function hooks has been added, for retrieving the list of functions installed as hooks for handling computations of a specific type.
• The function baseRing has been added, for retrieving the ring from which a ring was formed.
• The functions findProgram and runProgram have been added, to provide a uniform way for packages to locate external programs. (The names and locations of such programs may vary from system to system.
• The function formation has been added, for retrieving the way a module was formed, whether as a direct sum, tensor product, or Hom-module.
• functionality improved:
• The function capture is now used for generating most examples and tests.
• The function installPackage accepts two new argument: installPackage(...,MakeHTML=>...) and installPackage(...,MakePDF=>...). The PDF output will be improved in a future release.
• The new optional argument name Keywords can now be used with packages to specify a list of key words (or phrases), useful for searching and organizing the packages by topic, as seen here: packages provided with Macaulay2.
• The functions addHook and runHooks have been modified to accept a new syntax, allow giving names to hooks, and run specific hooks using the option Strategy. The symbol Default has been added for use as the name of hooks. The mutable hash table GlobalHookStore has been added as a storage location for some hooks. For more information on using hooks, see that documentation node.
• The functions code is modified to also show the code for hooks listed by the function hooks.
• $\LaTeX$ typesetting for the web documentation is now rendered using $\KaTeX$, a JavaScript math typesetting library for browsers. As a result, $\LaTeX$ equations and matrices are rendered correctly. One notable change is that mathematical characters and equations now must be enclosed in $$...$$, $...$, $...$, or $$...$$ in order to be rendered. See html(TEX) for more details and examples
• The option Boxes of netList has been made more flexible to allow customization of the box; it now accepts as input a pair of lists of rows and columns.
• A brief documentation of various types of objects can be viewed using ? Symbol.
• The document function now accepts three new options: Acknowledgement, Contributors, and References. The content of each will appear under a subsection of the same name in the documentation. Moreover, document(String) is now a synonym for doc(String).
• The regex function, as well as other functions that accept regular expressions, have been rewritten to use the Perl regular expression syntax by default, which allows more fine-grained control of the matches. The POSIX extended flavor is still available as an option. The functionality is unchanged in almost all cases, except for regular expressions containing escaped special characters, where another backslash may be needed, and, in rare cases, where there are multiple options to match the regular expression. Internally, the new implementation incorporates the Boost.Regex library.
• new packages:
• EagonResolution, a package by David Eisenbud and Mike Stillman for Eagon resolutions of residue fields, has been added.
• EigenSolver, a package by Laurent Busé, Justin Chen, Kisun Lee, Anton Leykin, Tomas Pajdla, and Erika Pirnes for solving polynomial systems using eigen-computations, has been added.
• GKMVarieties, a package by Chris Eur and Ritvik Ramkumar for computations with GKM manifolds and moment graphs, has been added.
• GraphicalModelsMLE, a package by Carlos Amendola, Luis David Garcia Puente, Roser Homs Pons, Olga Kuznetsova, Harshit J Motwani, Elina Robeva, and David Swinarski, for maximum likelihood estimates for graphical statistical models, has been added.
• Hadamard, a package by Iman Bahmani Jafarloo for Hadamard products of projective subvarieties, has been added.
• MonomialOrbits, a package by David Eisenbud and Mike Stillman for orbit representatives of monomial ideals, has been added.
• MultiprojectiveVarieties, a package by Giovanni Staglianò for multi-projective varieties, has been added.
• MultiplicitySequence, a package by Justin Chen, Youngsu Kim, and Jonathan Montaño, for computing the multiplicity sequence of an ideal, has been added.
• NoetherianOperators, a package by Robert Krone, Justin Chen, Marc Harkonen, Yairon Cid-Ruiz, and Anton Leykin, for numerically computing local dual spaces, Hilbert functions, and Noetherian operators, has been added. (The package NumericalHilbert has been absorbed into this new package.
• NumericalLinearAlgebra, a package by Robert Krone, Marc Harkonen, and Anton Leykin for numerically compute local dual spaces and Hilbert functions, has been added.
• RandomRationalPoints, a package by Sankhaneel Bisui, Thai Nguyen, Karl Schwede, Sarasij Maitra, and Zhan Jiang, for computing a random point in a given variety over a finite field, has been added.
• ResLengthThree, a package by Lars Winther Christensen, Luigi Ferraro, Francesca Gandini, Frank Moore, and Oana Veliche, for multiplication in free resolutions of length three, has been added.
• ResolutionsOfStanleyReisnerRings, a package by for , has been added.
• Saturation, a package by Justin Chen, Mahrud Sayrafi, and Mike Stillman for computations involving quotients, saturations, and annihilators of modules and ideals, has been added. The package is preloaded, so the routines from this package will be used automatically. In particular, the new implementation supports caching of computations as well as new strategies, which can be listed using the hooks function.
• StatGraphs, a package by Carlos Amendola, Luis David Garcia Puente, Roser Homs Pons, Olga Kuznetsova, and Harshit J Motwani, for graphs used in algebraic statistics, has been added.
• SwitchingFields, a package by Zhan Jiang and Sarasij Maitra for switching base fields and obtaining natural maps, has been added.
• packages that have been published and certified:
• VirtualResolutions, a package by Ayah Almousa, Christine Berkesch, Juliette Bruce, David Eisenbud, Michael Loper, and Mahrud Sayrafi for virtual resolutions on products of projective spaces, has been published.
• improved packages:
• The doc(String) method from the SimpleDoc package has been rewritten to support documenting multiple nodes at once. The following keywords were added: Node, Synopsis, Tree, Acknowledgement, Contributors, References, and SourceCode. Moreover, two new functions, arXiv and stacksProject were added to help with referencing external documents.
• The PrimaryDecomposition package has been improved to support computation of associated primes and primary decomposition of modules. In addition, partial computations in this package are now cached.
• The MinimalPrimes package has been improved and the minimalPrimes and isPrime(Ideal) routines from that package are now used by default, deprecating the installMinprimes routine. A new routine radicalContainment has been added, and the function radical is moved to this package. In addition, partial computations in this package are now cached.
• Version 2.0 of InvariantRing introduces types for different group actions as well as rings of invariants. It also contains new functionality for computing invariants of finite groups, diagonal actions (tori/abelian groups), and linearly reductive groups. The code from version 1.1.0 has been updated to work with the new types.
• functionality changed:
• The functions associatedPrimes, topComponents, and removeLowestDimension have been moved to the package PrimaryDecomposition.
• The destinations of the links at the tops of the web pages portraying documentation nodes in a package have been altered. The links labeled next and previous have been interchanged with the links labelled forward and backward. This was done to bring the terminology into agreement with that used in the info nodes portraying documentation nodes. The result can be described as follows. By virtue of the Subnodes option, each node is provided with a certain number of subnodes, so the documentation as a whole may be regarded as an ordered union of rooted trees, with the top node of the package serving as the root of the first one. (Ideally it would be the only one.) The next and previous links can be used to traverse the (sibling) subnodes of a given node, in sequence. (The various roots are also regarded as siblings.) The forward and backward links can be used to traverse all the nodes, in depth-first sequence. Ideally, the documentation would be structured so such a traversal results in a readable document with topics presented in a logical sequence.
• functionality changed in a way that could break code:
• functionality removed
• The function removeHook has been removed.
• The ForestNode and TreeNode types have been made internal.