-
Notifications
You must be signed in to change notification settings - Fork 147
Recent ChangeLog
This page describes changes in the repository after the latest release. The format is more or less the same as Keep a Changelog. It will be occasionally updated. See also the full git logs.
(As of 13 Jan 2026)
-
Implemented
#continuedoto break out of pre-processor#doloops (#443) and (#740). -
On SortReallocateand#SortReallocateto control the reallocation of the sort buffer at the end of modules (#537). -
Read-only mode for
TableBase, allows the opening of tablebase files without write permissions (#513) -
To ease debugging efforts, FORM can now print a stack trace on termination on Linux systems, if enabled at compile time and
eu-addr2lineoraddr2lineare available (#526). -
Added support for compression of sort files with Zstandard, resulting in a small performance improvement for heavy disk-based sorts (#541).
-
Added an interface to the FLINT library, for greatly improved polynomial arithmetic performance (#644).
-
Added
On HumanStats;to include human-readable numbers in the sorting statistics (#678). -
Added an interface to the graph generator of the GRACE system, enabling graph generation from within FORM scripts (295c9bb, #716, #744)
-
Added support for arbitrary precision floating point coefficients and numerical evaluation of common functions and MPL (6a744e8, #532, #680, #724, #725)
-
Print a more useful error message in case of
MaxTermSize-related crashes (#289). -
Format Mathematicanow encloses dot products (#472) as well as entire expressions (#491) in parentheses. Example:V p,q; L F = (1 + p.q)^3; Format Mathematica; P +s; .endF = ( + 1 + 3*(p.q) + 3*(p.q)^2 + (p.q)^3 );This change avoids problems caused by syntax differences between FORM and Mathematica.
-
FORM now warns when saving expressions with too-long names (over 16 characters), which are truncated in save files (#500, #503, #555).
-
FORM now tries to create the sort file at startup to validate
TempSortDir(#527, part of #511). -
Improved memory allocation for sorting buffers by splitting a large single memory allocation into smaller, individual allocations (#529). This change is intended to ease buffer overrun detection. Unused memory was identified and removed, reducing memory usage (typically 16 MB for sequential FORM and 24 MB per thread for TFORM). The default values for the 3 setup parameters
SubLargeSize,SubSmallExtensionandSubSmallSizehave been updated. -
In the debug build, FORM now warns when any sort buffer sizes are altered (#529, #590).
-
Enabled deprecation warnings by default for several features (native Windows, 32-bit systems, ParFORM and Checkpoint) (#573). See also #627.
-
Changed Fortran output to append a floating-point suffix to integer literals exceeding
2^31-1, which fixes issues caused by overly large integer literals when using 64-bit Fortran compilers (#584). -
FORM now always uses "multirun" mode for temporary file names, to avoid clashes when running multiple concurrent FORM jobs with a shared FORMTMP or FORMTMPSORT location (#591).
-
IntoHide;now correctly hides all active expressions at the end of the module.NIntoHidehas been added to negate this, similar toDrop/NDropandHide/NHide(#671). -
Warnings due to missed
ModuleOptions for the handling of dollar variables in TFORM and ParFORM are now enabled by default, rather than only whenOn AllWarnings;is set (#649). -
The default build no longer specifies
-march=nativeto avoid crashes when running FORM on heterogeneous computing clusters (#706). -
putfirst_can now be used with tensors (#751).
-
Fixed
ModuleOptionto correctly parsePolyFun forPolyRatFun f(#473). -
Fixed a memory error caused by workspace overflow during optimization (#481).
-
Fixed
PolyRatFunbugs due to an incorrect clean flag (#482). -
Fixed a memory error caused by an array index being out of bounds when printing an empty set by
On names/On codes(#487). -
Fixed a memory error in
RemoveSpectatorafter making holes in the spectator array (#488). -
Fixed crashes in pattern matching when argument wildcards match with more than 8191 arguments (#490, #519).
-
Fixed data races in TFORM thread statistics (#493).
-
Fixed a freeze bug in parsing complex conjugate operators (#502).
-
Fixed a memory leak in the
MakeIntegerstatement associated with handling terms with multiple instances of target functions, which has been present since version 4.2.0 (#509). -
On Windows, FORM now switches the standard output to binary mode, resolving newline character issues in the output (#511).
-
Fixed incorrect error reporting for buffer overflows in
SubSmallExtension(#513). -
Fixed a bug that could result in termination due to "too small SmallExtension" even when
SmallExtensionhad available space (#513). -
Fixed possible buffer shortages in sorting function arguments and dollar variables (#515).
-
Fixed bugs in
Transformthat caused crashes formulargswhen the result size was large (#516). -
Fixed bugs that led to crashes/nonsense results in TFORM with
PolyRatFun(#517). -
Fixed a bug in ParFORM where the
redefinestatement failed to handle multiple expressions correctly (#530). -
Fixed workspace-related issues that caused failures during output optimization with large expressions (#535).
-
Fixed bugs in
FactArgthat caused crashes when the argument to be factorized or one of the resulting factors was large (#565). -
Fixed bugs in
PolyRatFunthat allowed the use of non-symbols (such as vectors, indices and functions) in rational functions, resulting in incorrect results (#570). -
Fixed wrong signs caused by pattern matching with negative vectors (#583). This bug has been present since version 4.2.0.
-
Fixed
isnumericalin the#ifinstruction (#586). -
Fixed crashes that occur with
Off Compress(#592). -
Fixed a bug that caused crashes during compression when built without zlib (#593).
-
Fixed rare crashes that occur when loading save files (#594).
-
Fixed a sign handling bug in set element processing where
+signs were incorrectly interpreted as unary minus operators (#601). -
Fixed a crash when using an empty implicitly-declared set (#601).
-
Alleviated lock contention in the load balancing mechanism of TFORM (#613).
-
Fixed typos in error messages for the
#breakdoinstruction (2319a49). -
Fixed a memory leak when working inside dollar variables (#652).
-
Fixed missed application of antisymmetric function properties after
ChainIn(#657). -
Fixed a bug when
putfirst_is used on un-equally sized arguments (#658). -
Fixed missed termination after syntax errors in
FindLoop/ReplaceLoop(#660). -
Fixed incorrect output formatting of
FactArgapplied to a function of a negative vector (#661). -
Fixed problems with the
#timeoutmechanism under TFORM (#672). -
Fixed a crash when
Transform addargsormulargsis applied to a function with no arguments (#688). -
Fixed an issue with
Repeatwhen an enclosedSumcreates dummy indices (#689). -
Fixed a memory leak in the final stage of sorting in the "sub" buffers (#691).
-
Fixed an issue which caused TFORM performance degradation in some benchmarks (#701).
-
Fixed an out-of-bounds read when reading the setup parameters (#714).
-
Fixed a memory leak due to nested
#proceduredefinitions (#722). -
Fixed a memory leak when a dollar variable is incremented by the pre-processor (#720).
-
Fixed a crash in the tokeniser due to heavy use of bracket substitutions (#731).
-
Fixed infinite loops in the parser after syntax errors (#732).
-
Fixed a bug when using hidden expressions on the RHS when using
InParallel;mode (#733). -
Fixed a bug when using built-in macros in a procedure with an argument-field wildcard (#734).
-
Fixed problems with dummy index renumbering, in combination with
Keep Brackets;(#737). -
Fixed a memory leak when factorised dollar variables are factorised again (#752).