Skip to content

Recent ChangeLog

Takahiro Ueda edited this page Dec 23, 2024 · 78 revisions

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.

Changelog - FORM (Unreleased)

(As of 10 December 2024)

Added

  • Many changes (TODO: demystify them).

    • diagram generation
    • floating point numbers
    • ...
  • Partially implemented #continuedo (#443).

  • On SortReallocate and #SortReallocate to control the reallocation of the sort buffer at the end of modules (#537).

The following changes and fixes have also been backported to the 4.3 branch.

Changed

  • Format Mathematica now 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;
    .end
    
       F = (
           + 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).

  • 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, SubSmallExtension and SubSmallSize have been updated.

  • In the debug build, FORM now warns when any sort buffer sizes are altered (#529, #590).

Fixed

  • Fixed ModuleOption to correctly parse PolyFun f or PolyRatFun f (#473).

  • Fixed a memory error caused by workspace overflow during optimization (#481).

  • Fixed PolyRatFun bugs 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 RemoveSpectator after 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 MakeInteger statement associated with handling terms with multiple instances of target functions, which has been present since version 4.2.0 (#509).

  • 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 SmallExtension had available space (#513).

  • Fixed possible buffer shortages in sorting function arguments and dollar variables (#515).

  • Fixed bugs in Transform that caused crashes for mulargs when 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 redefine statement failed to handle multiple expressions correctly (#530).

  • Fixed workspace-related issues that caused failures during output optimization with large expressions (#535).

  • Fixed bugs in FactArg that caused crashes when the argument to be factorized or one of the resulting factors was large (#565).

  • Fixed bugs in PolyRatFun that 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 isnumerical in the #if instruction (#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 typos in error messages for the #breakdo instruction (2319a49).