Release Notes

changelog

Product: 

Class: 

Warning

uCalc API Preview Release Notice:The uCalc engine has successfully transitioned to modern cross-platform environments.The next phase envolves some structural changes, performance optimizations, and API refinements.The API is subject to breaking changes prior to the stable release. Please evaluate the preview version thoroughly before production use.

Remarks

This page contains the technical changelog for the uCalc SDK. For a high-level overview of major new features, please see What's New.

Upgrading from a legacy version? Because of the massive architectural improvements made in recent years, the release notes is starting with a clean slate, instead of listing every change since old versions.

Current Status & Roadmap

The uCalc SDK has been successfully packaged for modern cross-platform environments. This Developer Preview allows you to evaluate the engine's token-aware architecture, explore the interactive documentation, and integrate early before General Availability (GA).

While the core logic relies on decades of mature development, this preview is a transitional build. To set proper expectations for production use, please note the current development roadmap:

  • Performance Optimization: The Math Parser successfully targets modern compilers, but needs to undergo heavy re-optimization to match or exceed the extreme execution speeds of its legacy predecessors.

  • Structural Refinement & API Stability: The Text Transformer is slated for a clean structural rewrite under the hood to bypass current limitations and natively support advanced Language Building capabilities. Additionally, the uCalc String Library is currently still in its active design phase. Expect notable breaking API changes, especially in the String Library, as final architectures are locked in.

Release Notes


5.7.2-preview.0 October 15, 2026

⚠️ Breaking Changes (Preview Context)

  • Output Formatting API: The optional boolean parameter (returnFormatted) used to toggle user-defined formatting has been removed from EvalStr, EvaluateStr, ValueAt, ToString, and ValueStr. It has been replaced with two more powerful and explicit overloads:
    1. An overload accepting the new FormatStyle enum and an optional precision integer.
    2. An overload accepting a custom format expression string (e.g., "Result = Format('{:6}', double(Result))").
  • Float/String Conversions: The underlying engine for converting strings to floats (and vice versa) has been upgraded from hand-crafted routines to use Boost. This resolves previous limitations and incorrect conversions in certain edge cases, but may result in slight output variations compared to std or previous builds.
    • Note on Extremes: Extremely small numbers (e.g., 1e-99999) will now correctly evaluate to 0, while extremely large numbers will return inf or -inf.
  • 15 digits of precision by default: If formatting doesn't specify precision, it defaults to 15. Numbers with more than 15 digits may display differently than before. And the cutoff for switching to scientific notation is different.

🛠️ Fixes & Refinements

  • FormatStyle Enum: Introduced the FormatStyle enum (None, Default, General, Scientific, Fixed, Hex) to provide fast, standardized control over numeric formatting without needing to define a custom format.
  • Inline Custom Formatting: Evaluation functions now accept a custom format string directly as a parameter, allowing for powerful one-off formatting using the {fmt} & C++ standard patterns.
  • uCalc.Format() now also works with Linux, and macOS (not just Windows)
  • ToBase() function added for end-users
  • Bin() Converts from an integer to binary form returned as string

5.7.1-preview.6 September 25, 2026

🛠️ Improvements & Refinements

  • Bug fix: uCalc memory leak.

Creating / releasing a uCalc object repeatedly would take up more and more memory that was never fully released, eventually resulting in running out of memory. Now fixed.


5.7.1-preview.5 September 22, 2026

🛠️ Improvements & Refinements

  • A lot of internal code cleanup
  • The Mac and Linux compilations included certain lines that were susceptible to buffer overflows. Now a safer approach that works the same for Windows, Mac, and Linux is used.

5.7.1-preview.4 September 18, 2026

🛠️ Improvements & Refinements

  • Fixed: NuGet package also works with legacy .NET Framework.

5.7.1-preview.3 September 15, 2026

🛠️ Improvements & Refinements

  • Added constants: pi, and e; more to come later.

Note: The introduction of e as a constant may break your code if you relied on e as a parameter; for instance: DefineFunction("f(a,b,c,d,e) = a+b+c+d+e")


5.7.1-preview.2 September 13, 2026

🛠️ Improvements & Refinements

  • Support for simplified syntax in .NET, such as:
var myExpr = new uCalc.Expression("5+4");Console.WriteLine(myExpr); // returns 9

⚠️ Deprecations & Breaking Changes

The previous implementation for this syntactic sugar caused ambiguity in .NET (but not C++) for some cases. Now an Expression object evaluates as a string as though EvaluateStr() were invoked. For other types, either casting or functions like EvaluateInt(), EvaluateDbl(), etc. must explicitly be used.


5.7.1-preview.1 September 9, 2026

🛠️ Improvements & Refinements

  • The {@File} pattern method and File() and FileSize() functions now work across platforms (was previously implemented for Windows only). Access restrictions to these will be configurable in a later update.
  • Additional configuration constants were added; config constants are now documented.

5.7.1-preview.0 September 6, 2026

🛠️ Improvements & Refinements

  • Changed the wording for the preview warning and added more context further down in the README.

5.7.0-preview.9 August 30, 2026

🛠️ Improvements & Refinements

  • Added lcm() function (Least Common Multiple)

5.7.0-preview.8 August 28, 2026

🛠️ Improvements & Refinements

  • The following optional parameters were added to TraceTransform(): separator, format, elementVarName, indexVarName, and stepCountVarName.

5.7.0-preview.7 August 26, 2026

🛠️ Improvements & Refinements

  • Added gcd() function (Greatest Common Divisor)

5.7.0-preview.6 August 23, 2026

🛠️ Improvements & Refinements

  • Fixed incorrect placement of markdown closing markers in examples for the C++ NuGet README
  • Removed elements not meant to show in the NuGet README examples (both .net and C++)
  • Added separate links for C++ and .NET packages in the NuGet README

5.7.0-preview.5 August 21, 2026

🛠️ Improvements & Refinements

  • Embedded release notes into the NuGet package
  • The README for the uCalc SDK for C++ NuGet package has examples in C++ instead of C#
  • Fixed: code snippet display in the Remarks section of the documentation
  • Fixed: StringRepeat crash that happened with negative value (Ex: "'a' * -1")
  • Added "Invalid operation" error, distinct from "Invalid floating point operation"

5.7.0-preview.4 August 19, 2026

🛠️ Improvements & Refinements

  • Equation solver example added to NuGet README file and online documentation.

5.7.0-preview.3 August 14, 2026

🛠️ Improvements & Refinements

  • Hyphens mistakenly included in NuGet package tags as space substitute removed.
  • Some documentation dead links fixed.
  • Documentation page template restructured in more SEO-friendly way
  • More accurate display of doc page change and sdk version timestamps

5.7.0-preview.2 August 7, 2026

🛠️ Improvements & Refinements

  • Improved clarity for the NuGet package title, description, README, tags.

5.7.0-preview.1 July 29, 2026

🚀 Major Features & Additions

Major relaunch of uCalc with smarter functionality and extensive documentation, including 600+ interactive online examples, and AI assistant.

🛠️ Improvements & Refinements

🐛 Bug Fixes

⚠️ Deprecations & Breaking Changes

Examples

This page last modified on: 

10/15/2026