| Version | Change log |
| Frink 2025-12-12 Dec 14, 2025 | Improved the allEqual[expr, target] function to internally use the == operator, not the <=> operator, enabling its use on more types, including arrays and booleans. |
| Frink 2025-11-29 Nov 30, 2025 |
Added the applySafe[function, argList, errval=undef] function which allows code to attempt to execute a function that might behave badly (e.g. divide by zero) and return an error code in that event. Released a new version of Frink: The Next Generation (version 2025-11-29). This merges all changes from the main branch. |
| Frink 2025-11-25 Nov 26, 2025 |
Fixed a case where exponentiation to a rational power with large integers in the rational number would return an error. The code now falls back to a floating-point path if the numbers get too big. Released a new version of Frink: The Next Generation (version 2025-11-25). This merges all changes from the main branch. |
| Frink 2025-11-08 Nov 9, 2025 |
Added and documented new Unicode operators as synonyms for division and subtraction: Unicode ∕ DIVISION SLASH, u2215 Unicode ??' MINUS SIGN, u2212 This makes it easier to cut and paste mathematical expressions from other sources and do the right thing with them. See the Unicode Operators section of the documentation for more details. Released a new version of Frink: The Next Generation (version 2025-11-08). This merges all changes from the main branch. |
| Frink 2025-07-11 Jul 12, 2025 |
Fixed a case where symbolic code tries to construct an invalid rational number (denominator zero.) This happens when your code tries to divide by zero in some cases. Also added several checks to prevent this in other codepaths, to speed up common cases, to fail faster, and to return faster results when denominator is 1. Thanks to Hakan Kjellerstrand for the test case. Released a new version of Frink: The Next Generation (version 2025-07-11). This merges all changes from the main branch. |
| Frink 2025-06-14 Jun 14, 2025 | Merges all changes from the main branch. |
| Frink 2025-04-28 Apr 29, 2025 |
Major rewrite and fixes of the multifor loop to make it work better (or at all) in certain conditions. These conditions require that the bounds of one loop depend on the bounds of the loops to its left, and require backtracking to ensure that conditions can be met. It also fixes the next command for multifor loops, especially the version with a numbered level to jump to. It now properly ensure loop bounds are enforced and recalculated correctly, even when backtracking is necessary. |
| Frink 2025-04-12 Apr 13, 2025 |
Major rewrite and fixes of the multifor loop to make it work better (or at all) in certain conditions. These conditions require that the bounds of one loop depend on the bounds of the loops to its left, and require backtracking to ensure that conditions can be met. It also fixes the next command for multifor loops, especially the version with a numbered level to jump to. It now properly ensure loop bounds are enforced and recalculated correctly, even when backtracking is necessary. |
| Frink 2025-03-27 Mar 29, 2025 | The method image.autocrop[levels=3] now takes an optional positive integer argument that determines how different that border pixels can be when autocropping. This may need to be increased as high as, say, 127 for JPEG images with lots of artifacts. |
| Frink 2025-02-11 Feb 12, 2025 |
Added baseUnitNames[] function which returns an array of names of the base units in a known order. For example, this normally returns [m, s, kg, A, K, dollar, mol, bit, cd]. Added baseDimensionNames[] function which returns an array of names of the base dimensions in a known order. For example, this normally returns [length, time, mass, current, temperature, currency, amount_of_substance, information, luminous_intensity]. |