[5.0.8] - 2026-10-13

Note on the SIL Kit MSI installer

Up to and including SIL Kit 5.0.7, SilKit-X.Y.Z.msi installed per-user by default unless ALLUSERS=1 was set explicitly. That was not intended. Starting with SIL Kit 5.0.8, the MSI installs per-machine.

What this means when you upgrade

  • The 5.0.8 (or later) MSI can’t detect or remove an earlier per-user installation, so both will be on the system side by side.

  • Upgrading still works. The new installer:

    • disables removes the previous VectorSilKitRegistry service and installs the SilKitRegistry system service of the new version,

    • sets the SilKit_InstallDir environment variable to the new installation, and

    • updates the CMake find_package lookup to find the new installation.

  • Uninstalling the old version is optional and only cleans up. To do it, open Settings > Apps > Installed apps (or Programs and Features) as the user who originally installed it and uninstall the old SIL Kit entry.

“Vector” branding removed

Up to 5.0.7

From 5.0.8

Installation folder

<ProgramFiles>\Vector SIL Kit <VERSION>

<ProgramFiles>\SIL Kit <VERSION>

Registry system service

VectorSilKitRegistry

SilKitRegistry

Service config file

<ProgramData>\Vector SIL Kit\silkit-registry.yaml

<ProgramData>\SIL Kit\silkit-registry.yaml

The old <ProgramData>\Vector SIL Kit folder is not removed. If you customized silkit-registry.yaml, copy it to the new location.

Added

  • Add Integration Test for Timestamp Behavior

  • Add Integration Test for Remote Logging

  • The documentation now explains the delineation between fast (trivial) and accurate (detailed, network simulator based) simulation, including notes for LIN.

  • The documentation now lists every third party dependency found in the source tree with its version and license on the Licenses page, followed by the full license text of each component that ships one.

Fixed

  • The SIL Kit Registry could hang on shutdown when a configured dashboard server accepted the connection but never answered. Dashboard requests now have connect, write and read deadlines, and an in-flight request is aborted after a grace period so that shutdown is always bounded.

  • A malformed or unexpected response from the dashboard service no longer terminates the registry’s dashboard worker thread; unknown fields in the response are now ignored.

  • The SIL Kit Registry could call into a destroyed dashboard instance while still serving traffic, because the dashboard was torn down before the registry that holds a pointer to it.

  • If the dashboard service did not support the bulk-update endpoint, the registry’s dashboard worker thread stopped while events kept accumulating in an unbounded queue. The capability probe has been removed; the worker now keeps draining the queue and reports the failing requests instead. This also removes one request during registry startup.

  • Dashboard events accumulated but not yet sent are now flushed when the registry shuts down, instead of being discarded.

  • Log messages from the dashboard instance and its worker thread carry the Dashboard log topic again; they were previously emitted without a topic and so escaped topic filtering.

  • Fix ITest_AsyncSimTask (test failed when run repeatedly)

  • Fix the TimeSyncService warning about an exceeded soft time limit, which showed a literal {} instead of the measured timeout in milliseconds

  • The third party license notices were incomplete. They now also cover components that are vendored inside another dependency, such as c4core inside the rapidyaml sources, and the components that ship inside the HTML documentation. ThirdParty/LICENSES.rst is generated from a software bill of materials and is the file the documentation shows, so the two can no longer disagree.

  • The SIL Kit Registry silently listened on local domain sockets only when its listen URI contained an invalid or unresolvable host. It now fails to start with a configuration error naming the host.

  • The SIL Kit Registry did not listen over TCP on bracketed IPv6 addresses, e.g., silkit://[::1]:8500, on platforms whose address parser rejects the brackets.

  • Bracketed IPv6 addresses containing hexadecimal digits, e.g., tcp://[2001:db8::1]:8500, were passed to the system resolver, which rejects them. A participant configured to accept connections on such an address failed to join, and a peer advertising one was not connected to on it.

  • ISilKitRegistry::GetLogger() returned nullptr, and the C API SilKit_Vendor_Vector_SilKitRegistry_GetLogger returned a pointer of the wrong internal type. Both now return the registry’s logger.

  • A participant in the Running or Paused state could miss the system-wide stop if its locally computed system state went directly to Stopped without passing Stopping. The participant now also stops in that case.

  • The PCAP trace sink did not actually take its lock when tracing Ethernet frames, and opening and closing the sink were unsynchronized, allowing a data race.

  • PCAP trace files had wrong packet timestamps. Their header announces nanosecond resolution, but the packet timestamps were written in microseconds. Packet timestamps are now written in nanoseconds.

Changed

  • third-party: the dashboard client no longer depends on oatpp, and the ThirdParty/oatpp submodule has been removed. The dashboard payloads are now built with the already-bundled rapidyaml, and the REST requests are issued over the already-bundled standalone asio. The requests the dashboard service receives are unchanged apart from three cosmetic differences in the JSON encoding: a space follows each : separator, forward slashes are no longer escaped as \/, and non-ASCII characters are sent as UTF-8 rather than \uXXXX escapes. Control characters that cannot be escaped are replaced with U+FFFD.

  • third-party: the SIL Kit build now defines ASIO_NO_DEPRECATED, so that using an asio interface that upstream has deprecated is a build error rather than something that only surfaces when asio removes it. No SIL Kit source used one.

  • Running a build without dashboard support (SILKIT_BUILD_DASHBOARD=OFF) and passing --dashboard-uri now reports plainly that this build has no dashboard support, instead of printing an error about a failed dashboard instance creation.

  • A --dashboard-uri whose scheme is not http is now rejected when the dashboard instance is created. The dashboard client only ever spoke plaintext HTTP, so an https:// URI was previously accepted and silently downgraded.

  • Changes to the SIL KIT MSI installer:

    • Default installation path changed from <ProgramFilesFolder>\Vector SIL Kit <VERSION> to <ProgramFilesFolder>\SIL Kit <VERSION>

    • Windows System Service Name changed from VectorSilKitRegistry to SilKitRegistry

    • SIL Kit Registry System Service config file installation path changed from <ProgramDataFolder>\Vector SIL Kit\silkit-registry.yaml to <ProgramDataFolder>\SIL Kit\silkit-registry.yaml

    • Note that the <ProgramDataFolder>\Vector SIL Kit is not removed by installing SilKit-5.0.8.msi.

  • PCAP replay now also reads PCAP files with microsecond resolution, e.g., as written by tcpdump or Wireshark. Previously only nanosecond resolution files were accepted.

  • TimeSyncService now throws LogicError{"TimeSyncPolicy is not set"} if CompleteSimulationStep is used before StartLifecyle.