{"data":{"markdownRemark":{"html":"<h1 id=\"252\"><a href=\"#252\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.5.2</h1>\n<p><em>24th September 2022</em></p>\n<p>This is a major relase of the software which focuses on improvements to data output, simulation control, determinism and debugging, scenario manipulation, and more. Please note that while 2.5.0 is available it is highly recommended to use 2.5.2 due to various fixes for both Spark/Hive configuration, Scala compatibility versioning, and console fixes.</p>\n<h2 id=\"upgrading\"><a href=\"#upgrading\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Upgrading</h2>\n<p>Upgrading can be done by changing the <code class=\"language-text\">simudyne.version</code> setting in your <code class=\"language-text\">pom.xml</code> to <code class=\"language-text\">2.5.2</code>. You MUST also switch any instance in your <code class=\"language-text\">pom.xml</code> where a library like <code class=\"language-text\">simudyne-core-abm_2.11</code> exists to <code class=\"language-text\">simudyne-core-abm_2.12</code> - This is because as of version 2.4 the SDK is now using Scala 12. If you have been using 2.4.0 or 2.4.1 you will likely not need to make this change.</p>\n<h2 id=\"breaking-changes\"><a href=\"#breaking-changes\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Breaking Changes</h2>\n<p>There are a few breaking changes in version 2.5 that may affect your existing models:</p>\n<ul>\n<li>If you have been using the <code class=\"language-text\">@ModelSettings</code> annotation. Most notably the <code class=\"language-text\">ticks</code> and <code class=\"language-text\">macroStep</code> have been removed in favor of the new <code class=\"language-text\">end</code> for working with new simulation control clock</li>\n<li>The property name for parquet output and hive configurations have been made generic to accomodate multiple output formats. <code class=\"language-text\">core.parquet-export-path</code> is now <code class=\"language-text\">core.export-path</code> and <code class=\"language-text\">core.export.username</code>/<code class=\"language-text\">core.export.password</code> instead of <code class=\"language-text\">hive-export</code></li>\n</ul>\n<p>Most other features have been additive function wise and should have no discernable impact.</p>\n<h2 id=\"changes\"><a href=\"#changes\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Changes</h2>\n<p>The following changes have been broken into the main X categories below.</p>\n<h3 id=\"simulation-control-clock\"><a href=\"#simulation-control-clock\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Simulation Control Clock</h3>\n<p>We've provided a change to how models process start, interim, and end states. This allows for both better control, and easier readability in composed sequence flows of models. For more info please refer to the <a href=\":version/reference/modelling\">modelling sections</a> particularly <a href=\":version/reference/modelling/model-interface\">Model Interface</a></p>\n<ul>\n<li>Addition of <code class=\"language-text\">firstStep</code>, <code class=\"language-text\">lastStep</code>, <code class=\"language-text\">kickOff</code> functions that act as <code class=\"language-text\">run</code> but at corresponding times</li>\n<li>Addition of <code class=\"language-text\">done</code> function for actions to be called once model has ended, and <code class=\"language-text\">finish</code> to prematurely end the model</li>\n<li>Inclusion in REST API for new <code class=\"language-text\">@ModelSettings</code></li>\n</ul>\n<h3 id=\"atomic-logging\"><a href=\"#atomic-logging\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Atomic Logging</h3>\n<p>Atomic Logging is a new process by which actions and messaging can be set to automatically record to an external file every 'atomic' action that occurs. This will allow for greater debugging, and is tied into the Determinsim health check which has seen some changes. See <a href=\":version/reference/testing_logging/atomic-log\">Atomic Logging</a> for more.</p>\n<ul>\n<li>Addition of Atomic Logging functionality creating 5 SDK controlled and 1 user controlled/writeable automatic logging enabled with a function call.</li>\n<li>Updating the Determinism health check to verify variables/agents/links and to include this info if the determinism health check fails which agents/variable does not match.</li>\n<li>Including Atomic Logging that if enabled will compare the resulting log files and inform which line has a mismatch</li>\n<li>Addition of Ordered Messages and functions for send/receive - previously this would only be possible by a user defined message with additional sort/filters.</li>\n<li>Ability to modify the length of the Determinism health check to be longer than default <code class=\"language-text\">3</code> ticks, this to support control clock changes in functionality such as <code class=\"language-text\">kickOff</code></li>\n</ul>\n<h3 id=\"enhanced-data-export\"><a href=\"#enhanced-data-export\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Enhanced Data Export</h3>\n<p>The Simudyne SDK previously was able to handle ingestion of JSON/CSV data to populate agents/network, and output to Parquet or Parquet format on HIVE, with other data available only via the REST API in JSON. We've now added multiple output formats as standard that will work the same as Parquet in terms of serializing structures or working with output channels.</p>\n<ul>\n<li>Ability to output to local JSON files</li>\n<li>Ability to output to CSV files</li>\n<li>Ability to output to MySQL tables</li>\n<li>Fixing of a bug where certain data formats (such as Int) would be treated as GenericRecord instead of ValueRecords</li>\n<li>Functionality to control timing of default outputs to instead of every tick to work for only first/kickoff/last ticks as desired. For certain models this should vastly lower size footprint if not required.</li>\n<li>Change of JDBCSource to allow for SQL Statements instead of a single table for ability to ingest from multiple joins as needed</li>\n</ul>\n<h3 id=\"scenario-console-rework\"><a href=\"#scenario-console-rework\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Scenario Console Rework</h3>\n<p>As part of changes in 2.4.1 we made some changes to improve how scenarios work with the console in Interactive mode. Typically scenarios are meant to be used/defined with the Scenario Runner, but as the console remains an easy way to debug and see visually changes in parameters this required some changes.</p>\n<ul>\n<li>Ability to load and save local scenario JSON files</li>\n<li>Backend retention of stored scenarios and modifying scenario input to builder</li>\n<li>Adding Seed # to Scenario REST API</li>\n<li>Allowing Scenario Runner to skip a failed run and inform user rather than halt program</li>\n<li>Adding ScenarioDefinitionsBuilder to Java API (previously only existed in Scala)</li>\n</ul>\n<h3 id=\"other\"><a href=\"#other\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Other</h3>\n<ul>\n<li>Warning for missing properties file</li>\n<li>Fixing error where output files would terminate empty</li>\n<li>Fixing error where simulation ID not used in new 2.4 output directory names</li>\n<li>Ability to set initial value for Accumulators</li>\n<li>Functionality to return N agents from a set of links</li>\n<li>Various helper functions added to PRNG for ease of use</li>\n<li>Internal Pipeline tooling upgraded to allow for easier regression and model testing from Development work</li>\n<li>Additional demo models included</li>\n<li>Redhat OpenShift testing</li>\n<li>Ability to install offline has been streamlined</li>\n</ul>","headings":[{"value":"2.5.2","depth":1},{"value":"Upgrading","depth":2},{"value":"Breaking Changes","depth":2},{"value":"Changes","depth":2},{"value":"Simulation Control Clock","depth":3},{"value":"Atomic Logging","depth":3},{"value":"Enhanced Data Export","depth":3},{"value":"Scenario Console Rework","depth":3},{"value":"Other","depth":3}],"frontmatter":{"title":"Release Notes","toc":false,"experimental":null}},"site":{"siteMetadata":{"title":"Simudyne Docs","latestVersion":"2.6"}}},"pageContext":{"absolutePath":"/home/vsts/work/1/s/content/2.6/docs/release-notes.md","versioned":false,"version":"2.6","kind":"docs","pagePath":"/release-notes","chronology":{"prev":{"name":"Lending Model","path":"/financial_toolkit/balance_sheet"},"next":{"name":"History","path":"/release-notes/release-history"}},"lastUpdated":"2026-04-21T13:56:54.866Z"}}