Version 4.xx ================= [4.0.56] - 2025-05-19 --------------------- This is a Quality Assured Release. .. admonition:: Note: the Ubuntu 18.04 binary distribution package is deprecated We are sunsetting the distribution of Ubuntu 18.04 packages with this release. With the next release, we will provide Ubuntu 24.04 binary distribution packages instead. .. admonition:: Note: we will change our versioning scheme to semantic versioning Please read the full notice in the ``Semantic Versioning`` page in the documentation. Fixed ~~~~~ - Three static methods which are part of the C++ (Hourglass) API implementation and passed as callbacks to the C-API, did not use the correct calling convention if the default calling convention wasn't ``__cdecl`` on Windows. This has been remedied. - ``SilKitDemoSimStepAsync`` did not work as intended, due to the predicate lambda capturing by-value instead of by-reference. - During hop-on of another participant, participants will send the current simulation step instead of the next simulation step, if they are inside of their simulation step. Changed ~~~~~~~ - The participant configuration ``TcpNoDelay`` now defaults to true. Please note, that this has performance implications. On Linux platforms this improves throughput, and latency in particular when used in combination with ``TcpQuickAck: true``. - Updated third party libraries - ``asio`` to ``1.30.2`` - ``fmt`` to ``11.1.4`` - ``spdlog`` to ``1.15.2`` - Add the ``myst_parser`` extension to documentation build, which allows using Markdown for documentation pages - Automatically 'upgrade' the ``Doxyfile`` using ``doxygen -u``, which avoids warnings when with different ``doxygen`` versions across distibutions - CAN XL: Update documentation, tests, and the demo to (better) reflect that we support it Added ~~~~~ - The documentation now contains a page that explains the upcoming new versioning scheme. - Experimental 'other-simulation-steps-completed' API [4.0.55] - 2025-01-31 --------------------- This is a Quality Assured Release. Changed ~~~~~~~ - **Important** ``SilKit_LinDataLengthUnknown`` in the C header ``Lin.h`` used to be a ``const`` global, which could cause linker issues if the header file is used in multiple translation units in the same binary. It has been turned into a ``#define``, like all the other constants in the C header files. The symbol was not present in the dynamic symbol table of the ``SilKit.dll`` / ``.so``, so this change does not break the ABI of the shared libraries. - Aligned C API error return codes ``SilKit_ReturnCode_`` and SIL Kit specific exceptions. All exceptions are now forwarded through the hourglass and thrown in the C++ API. For users of the C API, a more detailed error handling is possible with the extended error return codes. Before, all execptions ended up as ``SilKitError`` on the user side. - Overhaul of SIL Kit demos - Restructured into categories communication, api and tools - Communication demos: Can, Ethernet, Lin, Flexray, PubSub and Rpc demos - These demos are split into one participant per executable - Basic SIL Kit features are implemented in a base class used by the demos - No command line arguments needed for basic execution (with time synchronization and coordinated start) - Useful command line arguments are provided for all demos (e.g. rename the participant or network, logging, execution modes) - The old ``--async`` mode of the demos now is accessible by ``--async --autonomous`` (or short form ``-aA``) Added ~~~~~ - New demos for basic API usage - SimpleCan - Orchestration demos - Demos: Sample participant configurations Fixed ~~~~~ - Registry: Block all attempts to connect with an already present participant name, not just the first. - CMake: When demos are installed into the ``bin`` directory under the installation prefix, their RPATH will be set such that they are able to find the ``libSilKit[d].so``. This is the same RPATH value as the utility executables. - System Monitor: Show all participants, not just the ones that joined during the monitors execution. [4.0.54] - 2024-11-11 --------------------- Added ~~~~~ - Override the labels of ``DataPublisher``, ``DataSubscriber``, ``RpcClient``, and ``RpcServer`` instances through the participant configuration, extending the already possible override of the topic / function name. Changed ~~~~~~~ - Changed log messages for controller and participant creation, message tracing, system state tracker and time sync service - Revised the documentation (demos, troubleshooting, doxygen output, file structure) - Improved platform/compiler/architecture detection Fixed ~~~~~ - Failure to configure and package cross-builds to QNX on Windows [4.0.53] - 2024-10-11 --------------------- Changed ~~~~~~~ - Harmonized user interface of commandline utilities Registry, Monitor, and SystemController. All utilities listen to OS signals to detect termination request. - Old: Monitor and Registry wait for the user to press ``[Enter]`` to shutdown. - New: Monitor and Registry can be requested to shutdown via ``[Ctrl]-[C]``. Registry option ``-s, --use-signal-handler`` is deprecated. All utilities no longer require user interaction. - Old: Registry, Monitor and System Controller prompt the user by default to press ``[Enter]`` to end process after shutdown. - New: All utilities terminate without prompting for user input. SystemController option ``-ni, --non-interactive`` is deprecated. - The Logger now adds the participant's name (as a normalized string) to the user-defined ``LogName`` for file sinks. - Implemented the union (de-)serialization stubs in the ``silkit/util/serdes`` headers. Fixed ~~~~~ - If using the ``SimStepHandlerAsync``, the log message that reports the end of the simulation step is now printed after the call to ``CompleteSimulationStep``. - Fixed an issue with the NetSim API that caused an exception when used with log level ``trace``. [4.0.52] - 2024-09-02 --------------------- Fixed ~~~~~ - Fixed crash in ``sil-kit-registry`` utility that happened when the dashboard is enabled, but not actually available. Added ~~~~~ - Message aggregation for simulations with time synchronization. Accessible via the experimental section in the Participant Configuration (Experimental | TimeSynchronization | EnableMessageAggregation). [4.0.51] - 2024-07-18 --------------------- Added ~~~~~ - Couple the virtual time to the wall clock. An animation factor can be configured that describes how fast the simulation is allowed to run relative to the local wall clock. Accessible via a new experimental section in the Participant Configuration (Experimental | TimeSynchronization | AnimationFactor). - Event flow documentation for the Network Simulation API. - Registry (Dashboard): Automatically use bulk-endpoint if it is available - Configuration option for structured logging in JSON format [4.0.50] - 2024-05-15 --------------------- This is a Quality Assured Release. Fixed ~~~~~ - Fixed crash in ``sil-kit-system-controller`` utility. - Fixed source directory contents in ``.zip`` release archives. [4.0.49] - 2024-05-08 --------------------- Changed ~~~~~~~ - SystemController utility: Listens for OS signals to end simulation: Press ``[Ctrl]-[C]`` (SigInt) instead of ``[Enter]`` to end simulation. Better reports about the current system state in case of Error. Fixed ~~~~~ - Valid state transition from ``Aborting`` to ``Shutdown`` no longer emits a warning message. Added ~~~~~ - Participant Configuration: Support include semantics in participant configuration files/strings. - Network Simulation: Experimental API for custom simulation of CAN, LIN, Ethernet and FlexRay networks. [4.0.48] - 2024-04-15 --------------------- Changed ~~~~~~~ - We now use a linker script to limit the exported symbol visibility to the public C API and some legacy C++ symbols. - The ``--enable-dashboard`` CLI parameter for the registry is now a no-op. It is now activated when using ``--dashboard-uri`` or via the registry configuration. Fixed ~~~~~ - Fix MinGW build. - Various fixes for dashboard integration. Added ~~~~~ - Man pages for linux. - All public struct members are now included by default in the documentation. [4.0.47] - 2024-03-01 --------------------- Fixed ~~~~~ - Fixed building from the packaged sources (``SilKit-Source``). - LIN Demo: Removed duplicate call to StartLifecyle when run as the LIN slave [4.0.46] - 2024-02-27 --------------------- Fixed ~~~~~ - Added the ``*.manifest`` files to the source distribution. Building from the ``SilKit-Source`` directory in the distributed ``.zip`` files was broken. - Update ``yaml-cpp`` to version 0.8.0 to fix linker errors caused by a missing symbol. - The system controller utility now logs parts of the command line output using the logger object of the participant. Added ~~~~~ - Added a ``--log`` option to the system controller utility which cannot be used together with the ``--configuration`` option. It provides a shortcut to set the log level of the utility. - Utilities: prepare the registry for handling multiple simulations - Added a licensecheck to prevent source files without a license header [4.0.45] - 2024-02-06 --------------------- Fixed ~~~~~ - Registry failed to start correctly, if the dashboard is enabled, but the registry is letting the system determine the listening port, e.g., when using a URI like ``silkit://localhost:0``. Changed ~~~~~~~ - Add links to API sections in the documentation overview Added ~~~~~ - RPC usage example with lifecycle - Windows: Utilities and demos are now compiled with a manifest that sets the active codepage to UTF-8. The required commands to change the output codepage of the Windows console in ``cmd`` or PowerShell are documented in a new FAQ entry. [4.0.44] - 2024-01-22 --------------------- Fixed ~~~~~ - Changing the TCP send and receive buffer size failed on Windows Added ~~~~~ - Links to related SIL Kit projects in documentation and github Readme [4.0.43] - 2023-12-12 --------------------- Fixed ~~~~~ - Dashboard can be enabled using CLI arguments - Demos did not terminate when simulation is aborted (AbortSimulation) - Fix order of debug log message parameters [4.0.42] - 2023-11-29 --------------------- Changed ~~~~~~~ - LIN Demo: Adapted the schedule of the LIN Master and disallowed sending while in wrong controller state. [4.0.41] - 2023-11-28 --------------------- Fixed ~~~~~ - Potential deadlock when switching to virtual time-synchronization while replay is in use [4.0.40] - 2023-11-27 --------------------- Added ~~~~~ - Allow configuration of the connection timeout (``Middleware/ConnectTimeoutSeconds``) Changed ~~~~~~~ - Improved the documentation of Data Pub/Sub controllers - Improved the documentation of RPC controllers Fixed ~~~~~ - The LIN demo does not skip the first entry (sending frame 16) on all but the first iteration through the schedule anymore. - The name of the domain-socket used by the registry will use the hostname passed in the listen URI, not the resolved IP address (if any), for generating the name of the domain-socket. - When mixing autonomous participants without time-synchronization, and participants with time-synchronization, the timestamps for messages received before the virtual time is started, is now the 'invalid' timestamp value, normally used by participants without time-synchronization. - Reworked the pause/continue logic such that it pauses the virtual time synchronization without blocking the I/O thread. [4.0.39] - 2023-11-14 --------------------- Fixed ~~~~~ - Replaced remaining mentions of integrators with users. Added ~~~~~ - Usage examples for tracing and replay. - Timeouts per connection attempt. - Two-sided connection establishment: Allow direct connections, even if connections are only possible in one direction. [4.0.38] - 2023-11-02 --------------------- Fixed ~~~~~ - The dashboard now handles AbortSimulation. - The dashboard resolves the registry IP address if needed. Added ~~~~~ - Reintroduced build requirements to documentation Changed ~~~~~~~ - Consolidate SIL Kit tests into four executables [4.0.37] - 2023-10-17 --------------------- Changed ~~~~~~~ - Reworked the documentation on Virtual Time Synchronization - The documentation of the demo section now refers to the pre built Vector SIL Kit packages and not to a source build. [4.0.36] - 2023-09-19 --------------------- Added ~~~~~ - Documentation on ``DashboardUri`` Fixed ~~~~~ - Fixed misbehavior of the sil-kit-system-controller in interactive mode on user input: - The sil-kit-system-controller now triggers a Stop() in SystemState::Running or SystemState::Paused. - The sil-kit-system-controller only triggers AbortSimulation when not SystemState::Running, SystemState::Paused, SystemState::Shutdown or SystemState::Aborting. Changed ~~~~~~~ - Performance improvement of the internal serialization - The final state handling of the sil-kit-system-controller in interactive mode on user input has changed: - Old: The sil-kit-system-controller triggered AbortSimulation if the finalState was not received after 5s. - New: The sil-kit-system-controller retries receiving the finalState 3x5s. If this fails, the sil-kit-system-controller triggers AbortSimulation (if not already happened) and tries receiving the finalState 3x5s again. If this fails, the sil-kit-system-controller just terminates. [4.0.35] - 2023-09-04 --------------------- Added ~~~~~ - Memory management documentation introduced. - Integration tests for communication in the stop/shutdown/abort handlers. Changed ~~~~~~~ - When building the SIL Kit documentation, the sphinx build command is no longer called in a pipenv. Fixed ~~~~~ - Ensured that calling ``ISystemController::AbortSimulation()`` does not lead to the system controller terminating prior to other participants receiving its abort message. - Ensure that userContext field for external CanFrameTransmitEvents is always null. - Fixed warning in VS2017 (x86) build [4.0.34] - 2023-08-21 --------------------- Changed ~~~~~~~ - Behavior change of ``ParticipantState::Error`` - Old: Several situations could lead to an ``ParticipantState::Error`` before the user called ``StartLifecycle()`` - Reception of an invalid ``WorkflowConfiguration`` - Remote participant disconnected - Reception of ``AbortSimulation`` - New: ``ParticipantState::Error`` should only be reached after ``StartLifecycle()`` was called - Reception of a WorkflowConfiguration is not validated before ``StartLifecycle()`` - A disconnected remote participant is only transitioned to ``ParticipantState::Error`` if he had a started Lifecycle - Reaction on ``SystemCommang::AbortSimulation`` is deferred before ``StartLifecycle()`` (see below) - Behavior change of ``SystemCommand::AbortSimulation`` - Old: Reception of ``AbortSimulation`` before ``StartLifecycle()`` led to ``ParticipantState::Error`` - New: Reception of ``AbortSimulation`` before ``StartLifecycle()`` is firstly ignored. A later call to ``StartLifecycle()`` then directly leads to an abort (transition to ``ParticipantState::Aborting``, calling the ``AbortHandler``) - clang presets in ``CMakePresets.json`` now have the clang version in their names - Added an internal barrier between ``ParticipantState::Shutdown`` and setting the final state promise. This ensures that the participant state updates are all transmitted while shutting down. - Revised log messages when shutting down / disconnecting participants - Graceful, participant has lifecycle: "Participant has disconnected after gracefully shutting down", - Not graceful, participant has lifecycle: "Participant has disconnected without gracefully shutting down." - Registry shutdown: "Connection to SIL Kit Registry was lost - no new participant connections can be established." - Participant without lifecycle: "Participant has disconnected." Fixed ~~~~~ - Made simulation time stop for all coordinated participants when one coordinated participant disconnects ungracefully [4.0.33] - 2023-08-07 --------------------- Added ~~~~~ - New experimental extension of the LIN API that allows a user to send frame headers and respond to them without setting up a static configuration beforehand. - Added link to FMU importer in Readme.md Changed ~~~~~~~ - Restructured the documentation to have separate sections for overview. It is now divided into an overall introduction, a developer guide, and a user guide. - Removed internal use of exceptions for failing connections to the registry if another connection mechanism succeeded. Fixed ~~~~~ - Fixed missing entry of RegistryAsFallbackProxy in YAML schema. [4.0.32] - 2023-07-19 --------------------- This is a Quality Assured Release. Fixed ~~~~~ - Ensure that the registry rejects a connecting participant if a participant with the same name is already connected. [4.0.31] - 2023-07-10 --------------------- Added ~~~~~ - Improved Lifecycle and TimeSyncService features: - Full support for Operation Mode Autonomous with TimeSyncService including hopping onto / leaving a running simulation - Abort simulation in case Coordinated participants want to join a running simulation - Abort simulation in case an Autonomous with TimeSyncService sees an incompatible participant - Extended integration tests for communication ready guarantees Fixed ~~~~~ - Fixed a bug in internal barriers where in-between connecting participants could break the communicaiton guarantees - Fixed transition when aborting from ErrorState, now the state changes to Shutdown like all aborting paths (formery the transition was to ShuttingDown) - Internal fixes for thread-safety - Fixed that the SimTask cannot be triggered again after calling ``ILifecycleService::Stop()`` in the SimTask Changed ~~~~~~~ - CreateLifecycleService with OperationMode::Invalid now throws a ConfigurationError - Improved documentation on how to run demos in asynchronous mode [4.0.30] - 2023-06-26 --------------------- Added ~~~~~ - Added optional timeout mechanism to RPC service. Fixed ~~~~~ - Fix builds with CMake versions before ``3.19`` - Fixed crash in SilKitRpcDemo when run with `` Client --async`` without a server. Changed ~~~~~~~ - SIL Kit Demos (Can, Ethernet, Rpc, Lin, and PubSub) with ``--async`` now use an autonomous lifecycle. - Refactored documentation for participant configurations: The intent was made clearer, noting that it is an optional feature. [4.0.29] - 2023-06-14 --------------------- Fixed ~~~~~ - Registry: Set windows service state to ``stopped`` on error [4.0.28] - 2023-06-02 --------------------- Added ~~~~~ - Added documentation for Data Serialization/Deserialization (SerDes) API Fixed ~~~~~ - Fixed inconsistencies in API documentation - Fixed starting the registry without the ``--registry-configuration`` parameter [4.0.27] - 2023-05-30 --------------------- Changed ~~~~~~~ - Added detection of simulation start and end for the dashboard. - The simulation id initialization is deferred until the first dashboard relevant event happens. - A simulation is considered as ended, when the last participant disconnects. Added ~~~~~ - SIL Kit Registry (``sil-kit-registry(.exe)``) - Support for overriding command line settings via a YAML configuration file [4.0.26] - 2023-05-22 --------------------- Added ~~~~~ - Introducing an internal communication barrier between participant states. This happens in the transition from the states ServicesCreated to CommunicationInitializing and from Stopped to ShuttingDown. It leads to extended communication guarantees in the CommunicationReadyHandler, primarily for participants that use the autonomous lifecycle (see the documentation for details). Fixed ~~~~~ - Corrected spelling mistakes in the documentation - The dashboard is disabled for cross-builds to QNX, to avoid build errors [4.0.25] - 2023-05-17 --------------------- This version was skipped due to compatibility issues with dependent projects. [4.0.24] - 2023-05-04 --------------------- Known issue: A LIN transmission by a LIN Slave may have a timestamp that is smaller than the LinSendFrameHeaderRequest of the LIN Master that triggered the Slave response. Added ~~~~~ - Header-only C++ API implementation following the hourglass-pattern - The C++ symbols are still provided by the shared library, but are not used by default anymore - If a participant cannot establish a direct connection to another participant, it will fall back to using the registry as a proxy for communications with this particular participant - Support can be disabled on a particular participant using the new "Middleware/RegistryAsFallbackProxy" field in the participant configuration Fixed ~~~~~ - Messages are sent in the same order as the SIL Kit API calls that triggered them, regardless of the thread or handler the API calls were executed from. There are no ordering guarantees for API calls that are executed in parallel from different threads. [4.0.23] - 2023-04-17 --------------------- Changed ~~~~~~~ - Added network simulator information to the dashboard REST API Fixed ~~~~~ - Fixed data type of simulation id returned by the dashboard REST API - Ethernet and CAN (Trivial Sim.): The self-delivery with ``TransmitDirection::TX`` is now triggered only after the frame has been sent with ``TransmitDirection::RX``. Removed ~~~~~~~ - Visual Studio 2015 is no longer maintained and therefore not officially supported anymore. [4.0.22] - 2023-04-05 --------------------- Fixed ~~~~~ - Resolved issue that lead to wrong label matching behavior under certain circumstances. [4.0.21] - 2023-04-03 --------------------- Changed ~~~~~~~ - Improved FAQ - Preparation for upcoming tracing / replay [4.0.20] - 2023-03-20 --------------------- Changed ~~~~~~~ - Make additional data and rpc information available to the dashboard. Added ~~~~~ - Added frequently asked questions (FAQ) section to documentation. - Modification of BenchmarkDemo: Change the communication topology by modifying the PubSub topics. A participant should only send to a single other participant. - Add LatencyDemo: Measure the average latency between two participants in different processes. Fixed ~~~~~ - C-API: Fixed a bug where the ``SilKit_EthernetFrameEvent`` delivered in the Ethernet frame handler had the ``userContext`` field always set to ``nullptr``, instead of the value passed in the corresponding ``SilKit_EthernetController_SendFrame`` call. - C++-API: Fixed a bug where the ``userContext`` was set in the frame handlers registered on other controllers than the one calling ``SendFrame``. The ``userContext`` is only ever set when a frame event with ``TransmitDirection::TX`` is received, which is only possible on the same controller that sent it. [4.0.19] - 2023-03-02 --------------------- Changed ~~~~~~~ - Use function-try-blocks for C-API definitions to reduce indentation and reformat some code for better readability. Fixed ~~~~~ - Allow installing and starting the sil-kit-registry.exe as a Windows Service on Windows Containers during ``docker build`` steps. The layer creation fails if a domain socket is still active during shutdown of the temporary container. Disables the local-domain sockets of the ``sil-kit-registry.exe`` when running as a Windows Service. - When a participant is unable to connect to another participant, the correct error message is logged, and an error is raised. [4.0.18] - 2023-02-21 --------------------- Added ~~~~~ - Added descriptions to troubleshooting section for common errors. Changed ~~~~~~~ - Complete the Hourglass implementation of the C++ API used internally for testing. Fixed ~~~~~ - Properly handle IPv6 acceptors in the registry when transmitting to a remote participant [4.0.17] - 2023-02-09 --------------------- This is a Quality Assured Release. Fixed ~~~~~ - Fix DNS resolver issues on Ubuntu 18.04 and systemd-resolved. We now properly strip square brackets from IPv6 addresses in URIs. - Fixed a race-condition in the ITest_SystemMonitor. This caused sporadic failures on CI builds. Removed ~~~~~~~ - Removed the deprecated CMakeSettings.json file from the source tree. If you are a developer, use the CMakePreset.json instead which is more portable and flexible. - Removed `usr/share/doc` from the delivery packages. This should only be part of Debian packages. [4.0.16] - 2023-02-03 --------------------- Changed ~~~~~~~ - Improved error messages when connections between participants/to the registry have failed. - CMake: Reduced weak symbols exported in debug builds. - Allow configuration of acceptor URIs in the participant configuration. - The third party dependencies were updated. - ``fmt`` to version 9.1.0. - ``spdlog`` to version 1.11.0. [4.0.15] - 2023-01-23 --------------------- Changed ~~~~~~~ - Registry: - Allow running the ``sil-kit-registry`` as a windows service. In this case, the registry grants others the ``PROCESS_QUERY_LIMITED_INFORMATION`` permission. - The registry must be run with the ``--windows-service`` command line flag. This argument is *not* shown in the command line usage information available via ``--help``. This command line flag may be removed in the future. - Docs: Add registry requirement to demos documentation. - CMake: The minimum required CMake version has been bumped to 3.10 [4.0.14] - 2023-01-10 --------------------- Added ~~~~~ - CMake: Prepared cross-compiling for QNX Changed ~~~~~~~ - Tests: Improved tests regarding configuration parsing Fixed ~~~~~ - Catch and print exceptions when parsing utility CLI arguments - Various issues found by the Address Sanitizer and Thread Sanitizer of Clang 14 are now resolved. [4.0.13] - 2022-12-14 --------------------- Changed ~~~~~~~ - PubSub/Rpc: Improved performance in startup-phase when using labels. - Documentation: Configuration structure for PCAP tracing and replay Fixed ~~~~~ - LIN: Previously, only when using the network simulator, the FrameStatusHandler on the LIN Master was not called in case of an unconfigured response (RX_NO_RESPONSE). This inconsistency has been fixed. - Registry - The acceptor URIs the known participants list sent by the registry are now rewritten correctly. Previously, certain startup scenarios only worked when the participants were started in a certain order. - SerDes: Added missing limit library include. [4.0.12] - 2022-11-24 --------------------- Fixed ~~~~~ - Integration Tests - Linking executables with both, the dynamic library, and certain internal, static library components leads to ODR violations. The ASAN / UBSAN instrumentation from recent Clang versions is able to detect these. - C-API Tests - Fixed some memory leaks in C-API tests. - LIN - Fixed faulty behavior of ``ILinController::SendFrame()`` for ``LinFrameResponseType::MasterResponse``. The method now consistently uses the input frame data. - Lifecycle Service - Alleviate potential loss of the 'stop' signal issued from the lifecycle service of a participant. - Various fixes related to warnings - Remove duplicate variables in PubSub demo. - Fix 'D9025: overriding...' diagnostics in MSVC. - Fix warnings in hourglass code. - Fix cmake configuration on macos. - Properly initialize variable in unit test. [4.0.11] - 2022-11-18 --------------------- Changed ~~~~~~~ - Ethernet - The Ethernet controller now quietly pads Ethernet frames with zeros to the minimum size of 60 bytes. - (Re-)added experimental support for PCAP tracing and replay on ethernet controllers. The tracing and replay behavior may change in the future. - Registry - Only exit if neither TCP, nor domain sockets are available. - SIL Kit Library - Changed the default symbol visibility to hidden, which is now also enforced for Linux builds. - Symbols for ASIO are not exported as weak symbols anymore. Fixed ~~~~~ - C: CAN: - Added missing ``canId`` field to the ``SilKit_CanFrameTransmitEvent`` and bumped the structure version. [4.0.10] - 2022-11-07 --------------------- Changed ~~~~~~~ - Documentation - Improved Quickstart Docs and fixed sample code - Updated build instructions for documentation - Logging - Trace-Log was extended with outputs for controller creation. - Default verbosity of lifecycle reduced to debug - Demos: Replaced JSON configuration files with YAML files. The provided configurations did not change. - Extended SilKitDemoBenchmark - Calculates standard deviation for throughput, message rate, speedup - Added ``--write-csv`` command line argument to output results to csv file - Helper scripts for msg-size-scaling and performance-diff - Changed the lifecycle service to be less verbose in log level info. See log level debug for more detailed information of the lifecycle. - Updated participant configuration file schema and added it to the json schema support. Use .silkit.yaml/json suffix for automated schema support. [4.0.9] - 2022-10-19 -------------------- Added ~~~~~ - The LinDemo, PubSubDemo, and RpcDemo now allow using ``--async`` cli flag for unsynchronized execution. Fixed ~~~~~ - C-API: - Data race on static variable - Setting the direction field of the ``CanFrameEvent`` - Initialize the struct header of the embedded ``CanFrame`` structure in the ``CanFrameEvent`` - Immediate shutdown of the asynchronous mode of the LIN demo [4.0.8] - 2022-10-07 -------------------- Changed ~~~~~~~ - The third party dependencies were updated. - ``yaml-cpp`` to version 0.7.0. - ``asio`` to version 1.24.0. - ``fmt`` to version 8.1.1. - ``spdlog`` to version 1.10.0. - ``googletest`` to version 1.12.1. - The FlexRay controller now issues a warning if the static buffer payload is truncated or padded with zeros, i.e., if the size is not exactly as specified in the controller configuration. - The registry now transmits a diagnostic string when a participant announcement cannot be processed, e.g., because a participant with the same name already exists. The second participant will not time out after a few seconds anymore, but fail much faster. [4.0.7] - 2022-09-20 -------------------- Changed ~~~~~~~ - The documentation is now packaged separately in a `SilKit-4.0.7-Docs.zip` file. This simplifies the CI set up and reproducibility of the generated HTML. To build the documentation you should set up the build environment using pip: .. code-block:: sh pip3 install -r SilKit/ci/docker/docs_requirements.txt - The source tree is now packaged separately in a `SilKit-4.0.7-Source.zip` file. The SIL Kit Demos are part of this package. - We no longer have a `#if defined(HAVE_FMT)` in the `silkit/services/logging/ILogger.hpp` and variadic logging functions. This define was disabled by default for users and only used internally. - LIN allows sending with an unknown checksum model in master responses, now. - The Pub/Sub Demo was updated to use the internal serialization/deserialization routines. Fixed ~~~~~ - Fix building and linking on macOs. This platform is not part of the continuous test suite. - Fix to allow setting the hard and soft watchdog timeouts in the HealthCheck separately. [4.0.6] - 2022-09-06 -------------------- Changed ~~~~~~~ - Removed an empty directory from the packages - Updated the description of SIL Kit in the top-level README.rst Fixed ~~~~~ - Clean up peers after a remote participant disconnects - Windows: Fixed the internal name and original filename attributes of the ``sil-kit-monitor.exe`` [4.0.5] - 2022-08-25 Initial public release (quality assured release) --------------------------------------------------------------------- This is the first public open source release of the Vector SIL Kit. Starting with this version, Vector SIL Kit will provide longterm API, ABI, and network compatibility. Note that prior versions do not provide this compatibility. [4.0.4] - 2022-08-22 -------------------- Compatibility with 4.0.3 ~~~~~~~~~~~~~~~~~~~~~~~~ - Application binary interface (ABI): Yes - Application software interface (API): No - Middleware network protocol: No Changed ~~~~~~~ - Utility (SerDes) - ``SilKit/include/silkit/util/serdes/Serialization.hpp``: - The media type for PubSub was changed from ``application/vnd.vector.sil.data; protocolVersion=1`` to ``application/vnd.vector.silkit.data; protocolVersion=1`` - The media type for RPC was changed from ``application/vnd.vector.sil.rpc; protocolVersion=1`` to ``application/vnd.vector.silkit.rpc; protocolVersion=1`` - LIN - ``SilKit_LinChecksumModel_Undefined`` was renamed to ``SilKit_LinChecksumModel_Unknown``. - C: Orchestration - ``SilKit_LifecycleService_Stop`` was added to the C-API. This corresponds to ``SilKit::Services::Orchestration::ILifecycleService::Stop``. - C: Ethernet - Frames delivered in user-provided ``SilKit_EthernetFrameHandler`` functions had an invalid payload delivered. This was fixed, the frame is now correctly delivered. The error only occured in the C API, the C++ API correctly delivered the entire frame. [4.0.3] - 2022-08-22 -------------------- Compatibility with 4.0.2 ~~~~~~~~~~~~~~~~~~~~~~~~ - Application binary interface (ABI): No - Application software interface (API): No - Middleware network protocol: Yes Added ~~~~~ - LIN - ``SilKit/include/silkit/services/lin/ILinController.hpp``: - The new method `SetFrameResponse` allows LIN nodes to adjust their LIN response configuration during operation (i.e., after Init()). Calls to `SetFrameResponse` trigger the `LinSlaveConfigurationHandler` on the LIN master. - The LIN types `LinChecksumModel::Unknown` and / or `LinDataLengthUnknown` now have wildcard functionality for nodes configured with `LinFrameResponseMode::RX` on that id. The first transmission will set the checksum model and / or data length. - CAN - Added ``SilKit_CanTransmitStatus_DefaultMask``. - Ethernet - Added ``SilKit_EthernetTransmitStatus_DefaultMask``. Changed ~~~~~~~ - LIN - ``SilKit/include/silkit/services/lin/ILinController.hpp``: - The methods `AddLinSlaveConfigurationHandler`, `RemoveLinSlaveConfigurationHandler`, `GetSlaveConfiguration` and related data structures `LinSlaveConfigurationEvent`, `LinSlaveConfigurationHandler` and `LinSlaveConfiguration` have been moved to the experimental namespace and now reside in ``SilKit/include/silkit/experimental/services/lin/LinControllerExtensions.hpp``. - `LinChecksumModel::Undefined` is renamed to `LinChecksumModel::Unknown`. - Utility - Moved the headers from ``silkit/util/serdes/sil/*.hpp`` to ``silkit/util/serdes/*.hpp``. - CAN - Removed unused ``SilKit_CanTransmitStatus_DuplicatedTransmitId`` and ``SilKit::Services::Can::CanTransmitStatus::DuplicatedTransmitId`` enumerators. - Ethernet - Removed unused ``SilKit_EthernetTransmitStatus_DuplicatedTransmitId`` and ``SilKit::Services::Ethernet::EthernetTransmitStatus::DuplicatedTransmitId`` enumerators. - FlexRay - Renamed ``FlexrayHeader::HeaderFlag`` to ``FlexrayHeader::Flag`` and introduced ``FlexrayHeader::FlagMask``. - RPC - Renamed ``RpcSpec::Topic`` to ``RpcSpec::FunctionName``. - Renamed enumerators ``SilKit_CallStatus_UPPER_SNAKE_CASE`` to ``SilKit_RpcCallStatus_PascalCase``. Removed ~~~~~~~ - Orchestration - Removed the deprecated ``ITimeSyncService::SetSimulationStepHandler`` handler which took a handler function without the ``duration`` argument. - FlexRay - Removed the convenience functions ``FlexrayHeader::IsSet``, ``FlexrayHeader::Clear``, and ``FlexrayHeader::Set``. Fixed ~~~~~ - Coordinated, but non-required participants that received the required participant list before calling `ILifecycleService::StartLifecycle()` did not go to the error state. [4.0.2] - 2022-08-15 -------------------- Compatibility with 4.0.1 ~~~~~~~~~~~~~~~~~~~~~~~~ - Application binary interface (ABI): Yes - Application software interface (API): Yes - Middleware network protocol: Yes Changed ~~~~~~~ - SilKit will now build on NetBSD (currently not tested automatically) [4.0.1] - 2022-08-15 -------------------- Compatibility with 4.0.0 ~~~~~~~~~~~~~~~~~~~~~~~~ - Application binary interface (ABI): No - Application software interface (API): Yes - Middleware network protocol: Yes Changed ~~~~~~~ - The calling convention used in the C-API was changed to ``cdecl`` on 32-bit Windows. Removed ~~~~~~~ - The ``sil-kit-registry`` command line argument ``--configuration`` was removed. [4.0.0] - 2022-08-11 -------------------- Compatibility with 3.99.30 ~~~~~~~~~~~~~~~~~~~~~~~~~~ - Application binary interface (ABI): No - Application software interface (API): No - Middleware network protocol: No Added ~~~~~ - Added the ``SILKIT_ENABLE_COVERAGE`` CMake option for adding code-coverage compiler flags when building with GCC or Clang. Changed ~~~~~~~ - Added an CLI argument to sil-kit-system-controller to run it without user interaction (--non-interactive or -ni) - Participants to not go to `ParticipantState::Error` anymore when the system state changes to `SystemState::Error` Removed ~~~~~~~ - Removed various demos (CCan, CEthernet, CFlexray, CLin, Lifecycle, and TimeAnnotation) as they were meant for testing - Removed benchmark demo Fixed ~~~~~ - The sil-kit-system-controller crashed when any button was pressed. This is fixed.