All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
v3.2.2 - 2026-04-01
- Added checkpoint (i.e. save/restore) virtual functions to the ExecutionControlBase class to allow for different checkpoint implementations (issue #184).
- virtual void setup_checkpoint();
- virtual void perform_checkpoint();
- virtual void post_checkpoint();
- virtual void setup_restore();
- virtual void perform_restore();
- virtual void post_restore();
- Refactored the HLA save and restore services into a SaveRestoreServices class.
- Fixed encoding of the SpaceFOM Execution Configuration Object (ExCO) Least Common Time Step (LCTS) attribute encoding to be big-endian.
- Improved performance by updating the functions that get the granted and lookahead times to return a const reference instead of a copy.
- Updated the auto-provide switch setting encoder to use the HLA encoder helpers.
- Updated auto-provide switch setting status string and value checks.
- Fixed missing forward declared class statements.
- Reduced the scope of local variables.
- Fixed shadowed variables.
- Fixed implicit integer conversions.
v3.2.1 - 2026-03-02
- Improved performance by reusing a common empty user supplied tag instead of creating a new tag for every RTI call that requires a tag.
- Moved StringUtilities.hh to the include/TrickHLA/utils directory.
- FROM: $TRICKHLA_HOME/include/TrickHLA/StringUtilities.hh
- TO: $TRICKHLA_HOME/include/TrickHLA/utils/StringUtilities.hh
- Added a README file for the example simulations.
- Added detection and handling of a lost RTI connection.
- Added the SISO 2026 Simulation Innovation Workshop (SIW) Time Compatibility paper and presentation slides.
- Added the update_Pitch_env.sh script to update the Pitch pRTI specific environment variables to use the RTI set by the RTI_HOME environment variable.
- Added support for setting the Federate Type string from either the TrickHLAFederateConfig.py or SpaceFOMFederateConfig.py Federate configurations.
- Changed the S_hla.mk file to override the environment variables (PRTI6_ROOT, PRTI1516E_HOME, or PitchRTI_ROOT) set by the Pitch RTI if they are defined and not configured to the same path set by the RTI_HOME environment variable.
- Fixed ignored-qualifiers and unused-parameter compile time warnings.
- Fixed the clean_sims.sh, make_sims.sh, and spotless_make_sims.sh scripts to verify an entry in the sims directory listing is a directory before processing it.
- Fixed complier warnings when using the -Wextra option.
v3.2.0 - 2025-12-23
- Added support for IEEE 1516-2025 (HLA 4).
- Added encoding support for Fixed Records including direct encoding and decoding of Trick simulation variables from memory.
- Added encoding support for 8, 16, 32, and 64-bit integer enumerations (issue #181).
- Improved the variable array encoder efficiency for dynamic arrays.
- Added functions to TrickHLAFederateConfig.py to allow either the HLA base time unit or multiplier to be set and automatically scale the Trick time tics value.
- set_HLA_base_time_unit_and_scale_trick_tics( new_base_time_unit )
- set_HLA_base_time_multiplier_and_scale_trick_tics( new_base_time_multiplier )
- Shutdown on notification of SpaceFOM Execution Configuration Object (ExCO) deletion (SpaceFOM PCR-002).
- Added support for designated late joining federates (SpaceFOM PCR-003).
- Added support for specifying the HLA time resolution at runtime using the SpaceFOM ExCO (SpaceFOM PCR-007).
- Using std::string for TrickHLA settings instead of char *.
- Scaling the Trick executive Tics to the HLA base time multiplier is now combined with setting the HLA base time multiplier to resolve a time check dependency.
- FROM: federate.scale_trick_tics_to_base_time_unit()
- TO: federate.set_HLA_base_time_unit_and_scale_trick_tics( unit ) or federate.set_HLA_base_time_multiplier_and_scale_trick_tics( multiplier )
- Renamed ObjectDeleted class to ObjectDeletedHandler to be consistent with the naming convention used for other handler APIs.
- FROM: ObjectDeleted
- TO: ObjectDeletedHandler
- Renamed the TrickHLAPackingBaseSimObject simulation object to TrickHLAObjectBaseSimObject including the corresponding simulation module filename.
- FROM: TrickHLAPackingBaseSimObject (S_modules/THLAPackingBase.sm)
- TO: TrickHLAObjectBaseSimObject (S_modules/THLAObjectBase.sm)
- Renamed the Modified_data directory to TrickHLA_data to better support Default Data.
- FROM: Modified_data
- TO: TrickHLA_data
- Configure and initialize TrickHLA from default data instead of the input file.
- Extend your simulation objects with TrickHLAObjectBaseSimObject and include the S_modules/THLAObjectBase.sm file in your simulation S_define file to allow you to configure and initialize the TrickHLA settings using default data instead of using an input.py file.
- If the simulation object that defines and instantiates your Conditional, LagCompensation, or Packing implementations does not extend TrickHLAObjectBaseSimObject (defined in S_modules/THLAObjectBase.sm), then make sure to explicitly call the initialize() function for each from the S_define file.
# Example from sims/SpaceFOM/SIM_sine/S_define
P50 ("initialization") lag_compensation.set_data( &sim_data );
P50 ("initialization") lag_compensation.initialize();
P50 ("initialization") packing.set_data( &lag_compensation );
P50 ("initialization") packing.initialize();
P50 ("initialization") conditional.set_data( &packing );
P50 ("initialization") conditional.initialize();
- Added this CHANGELOG file.
- Added Ball simulation based off the Trick tutorial Ball simulation.
- Added a check to the THLABaseSimObject to set the interaction cycle time to the data cycle time if a time is not set.
- Added a check to the THLABaseSimObject to verify the interaction cycle time is an integer multiple of the data cycle time.
- Changed to use IEEE 1516 HLA encoder helpers instead of the custom written encoders.
- Changed TRICK_CFLAGS in S_hla.mk to remove the -std=c++14 setting (issue #177).
- Changed the Execution Control to perform the Least Common Time Step (LCTS) time checks when an Execution Configuration Object (ExCO) change is processed (issue #179).
- Changed the Timeline functions to be more const friendly (issue #180).
- Removed wheelbot example simulation.
v3.1.18 - 2025-04-10
- Added checks for duplicate interactions for the same FOM name.
- Added missing includes.
- Updated job phasing.
- Handle ExecutionControl interactions first before user interactions.
- Updated SIM_Frame_Test and SIM_RelStateTest simulations.
- Cleaned up and tested the RefFrameTree, RefFrameData, and RefFrameDataState code base.
v3.1.17 - 2025-03-27
- More cleanup for frame test simulations.
v3.1.16 - 2025-03-26
- Workaround swig 3.x and 4.0 issue with sim object instance variable references by making them private.
v3.1.15 - 2025-03-26
- Refactored clock reset.
- Refactored clock to set clock tics per second.
- Using Trick message_publish with message level instead of send_hs for console output.
- Moved exit_freeze job to the last phase to ensure it runs last because it does a clock reset.
- Workaround swig 3.x and 4.0 issue with sim object instance variable references by making them private.
v3.1.14 - 2025-03-23
- Fixed Trick clock reset time when using CTE.
v3.1.13 - 2025-03-22
- Added support for TSync CTE card.
- Added check for time padding against freeze frame time if CTE is used.
- Add a check for how long we wait for CTE go to run time and detect if the time padding is not enough.
- Accounting for Trick freeze frame time and padding time constraints.
- Merge pull requests #167 and #168.
v3.1.12 - 2025-03-17
- Added a Central Timing Equipment (CTE) example SpaceFOM simulation (issue #165).
- Detect when multiphase init sync-points are not configured (issue #163).
- Account for the Trick time-tic value when using clock_wall_time (issue #164).
- Updated TrickHLA clock implementation.
v3.1.11 - 2025-02-26
- Added initial implementation of building the relative state transformation from the transform path.
- Added the SISO SIW Time Constraints paper.
- Adjusted the JEOD examples input file to support new JEOD 5.2 input file requirements.
- Fixed some LRTree and RefFrame issues.
- Fixed interface issue with JEODRefFrameState.
v3.1.10 - 2025-01-29
- Updated some messages to be warnings and not errors since we don't terminate.
- Calculate a reasonable padding time based on the least common time step (LCTS) (issue #162).
v3.1.9 - 2025-01-23
- Use a fixed pause time for MTR shutdown propagation for SpaceFOM (issue #161).
- Updated check on time padding of 2 seconds or more does not need to be 3 times LCTS.
v3.1.8 - 2025-01-18
- Added a check for time constraints coming out of freeze to reverify the Trick software frame against the LCTS.
- Trick software frame needs to be configured for all federates to be able to freeze on a LCTS boundary (issue #160).
v3.1.7 - 2025-01-17
- Removed unnecessary setting of the Trick software frame in some input files.
v3.1.6 - 2025-01-16
- Freeze time is sim-time on LCTS boundary computed from scenario time (issue #159).
- Updated check for realtime for time constraint verification.
v3.1.5 - 2025-01-15
- Added header dependencies explicitly to sim-module for forward declared classes that don't have the header file included anywhere.
- Updated sim-module includes to work around Trick issue of not generating source code for all classes for friend void init_attr__();
v3.1.4 - 2025-01-12
- Renamed RT local variable to address collision with macro in users code (issue #157).
v3.1.3 - 2025-01-10
- Added script for running clang-tidy on TrickHLA source code.
- Added function to determine if an instance handle is a match to the object.
- Skip some time constraint verifications if thread not associated or association is disabled.
v3.1.2 - 2024-12-26
- Refactored verification of timing constraints.
v3.1.1 - 2024-12-20
- Ensure freeze time is on LCTS boundary (issue #156).
- Version v3.1.1 release including LCTS freeze boundary fix (issue #156).
v3.1.0 - 2024-12-09
- Added blocking I/O APIs.
- Added wheelbot TrickHLA example simulation.
- Created new Labeled Rooted Tree (LRTree) collection of base classes.
- Added support for a designated late joiner federate.
- Added SpaceFOM sine child thread example simulation.
- Added SpaceFOM zero-lookahead example simulation.
- Added Distributed Interface (DistIf) example simulation and models.
- Added checks for LCTS, lookahead, software frame and initialization of HLA cycle time.
- Added blocking IO example simulation.
- Added support of ownership transfer at initialization.
- Added ownership transfer at initialization example simulation.
- Changed minimum Trick version to 19.0.0.
- Make the reflected data queue permanent and not a compile time feature (Issue #135).
- Updated SIM_IMSim_Test to build.
- Fixed the ask_MOM_for_federate_names() function from clearing the joined_federate_name_map causing reflections to fail.
- Fixed multiphase sync points not being appended in the list.
- Refactored synchronization point implementation.
- Fix for Pitch pRTI include path change.
- Refactored mutex locked critical sections for TAR and TARA.
- Fixed the handling of sync-points for a designated late joiner.
- Handle the case of an unknown sync-point getting announced more than one time.
- Updated build instructions (issue #152).
- Dropping support for DIS and DSES.
v3.0.0 - 2024-12-08
- Added DSES documentation approved for public release (STIDAA #20205002034).
- Adding static code analysis script for the flawfinder tool (issue #8).
- Added a FESFA template to the SpaceFOM documents.
- Created a SpaceFOM FCD Template document.
- Updated documentation.
- Fixed issue #6, for job_cycle_time being overridden in error message.
- Resolved null pointer checks found by cppcheck v2.1 (issue #7).
- Fixed obsolete usleep call found by flawfinder (issue #9).
- Moved cppcheck suppressions to inline in the code instead of in a file (issue #11).
- Indent case labels (issue #12).
- Refactor save and restore label types (issue #13).
- Fix shutdown problems (issue #15( and fix debug output to include package and class names (issue #16).
- Revert back to using non-c++11 API for std::ifstream::open (issue #18).
- Update script to format models and format code (issue #19).
- Rename get_double_time() to get_time_in_seconds() (issue #23).
- Refactored mutex's (issue #27).
- Refactored cyclic data functions (issue #30 and issue #31) and coding style (issue #29).
- Only update ExCO on freeze exit (issue #33) and code style fix for booleans
- Refactor spin-lock wait code into its own class (issue #35).
- Move debug_level and DebugHandler init to Federate (issue #41).
- Updated blocking-cyclic-read Object setting for blocking I/O (issue #45).
- Improved spin-lock performance (issue #47).
- Fixed time_management flag to work as expected (issue #49).
- Handle multiple attribute reflections per cyclic receive (#91).
- Fix sync-point concurrency (issue #94).
- Fixed problem of Freeze button on Trick Sim Control panel being pressed more than once resulting in more than one expected freeze action.