**This is a feature delivery release**
Compared to the previous release, the main added features are:
- Multi-stream (or multi-process) recording
- Automatic C++ instrumentation (GCC only)
Behavior change / compatibility break
- Viewer: external string lookups are now per record (they were previously per application).
- Viewer: old stored records will not be readable anymore (incompatibility due to the added stream informations)
- Instrumentation: old viewers are not compatible, due to transport header change.
New features
- Server and Viewer: add support for multistream (or multiprocess) records
- Server: support for multiple socket connections and multistream recording
- Viewer: add the configuration menu for the mono/multi stream
- Viewer: file dialog supports multi selection with highlight
- Viewer: record options are displayed per stream
- Viewer: enable Dear ImGui keyboard navigation
- Instrumentation: support of automatic C++ function instrumentation (GCC only)
The external string lookup is now independent for each record, and covers also this feature.
- Python: add support for Python 3.10 packages
Fixes and improvements
- Viewer: lock use can now be graphed for all threads (menu on the lock name)
- Viewer: in Text view, all events with dates are now taken into account for navigation
- Viewer: fix a crash when asking an histogram for a "lock use" scope
- Viewer: fix persistence of graphs between launches
- Viewer: fix a crash when the saved layout is not matching the record thread names
- Viewer: fix the display of the used size of records (now 64 bits size)
- Server: more robust handling of duplicated thread names
- Server: fix a crash when getting memory details with big quantity of non released allocations
- Python: fix an incorrect event logging sequence when both using coroutines and tracing C calls
- Python instru: disable an annoying warning on Windows
- C++ instru: collect the used language, the context switch collection state and the auto instrumentation state
- C++ instru: waiting for server connection is now a configurable timeout, no more a binary state
- C++ instru & server: more robust short date handling
- C++ instru: more robust initialization
- C++ instru: threads (standard or virtual) can be declared before service initialization and are persistent across multiple service initialization (thanks BrodyHiggerson for the use case)
- C++ instru: reduced disabled Palanteer include cost on windows with USE_PL=0 (now a few millisecond, as for Linux)
- Scripting: improve support of external strings, now applied also on the event specification