Skip to content

Releases: dfeneyrou/palanteer

v0.6

30 Dec 21:33
Compare
Choose a tag to compare

This is a feature delivery release

Compared to the previous release, the main added changes are:

  • Feature (global): efficient printf-like logging (supersedes markers).
    • nanosecond logging performance
    • format arguments can be searched and graphed
  • Feature in the viewer: some exports have been added
  • Important fix: instrumentation crash under stress
  • Important fix: correctness of multi-resolution graphs

Behavior change / compatibility break

  • Viewer: the marker window has been replaced with the log window, which generalizes markers and provides more features
  • Viewer: old stored records will not be readable anymore (incompatibility due to somes changes for the logs)
  • Instrumentation: old viewers are not compatible, due to transport header change.
  • Instrumentation: plMarker APIs are deprecated.
    • they are currently wrapped on plLogWarn function and will be removed soon

New features

  • Global: efficient printf-like logging
    • nanosecond logging performance
    • format arguments can be searched and graphed
    • a comparison with Nanolog and spdlog is provided
  • Viewer: some exports available
    • anywhere with ctrl-P for screen capture
    • in main menu bar for Chrome Trace Format (JSON)
    • in text and log windows for a text export
    • in plot windows for CSV export

Fixes and improvements

  • C++ instru: remove a critical flaw in the event collection mechanism which could lead to a crash under stress (thanks @gpascualg for the report with details)
  • Python instru: the filename of the exception source is now provided in the log text, along with the line number
  • Viewer: reworked the computation of the multi-resolution of the graphs. Previous version was broken and provided poor visual results
  • Viewer: fix the profiling applied always on a particular thread, for threads without provided names (thanks @jojado8408 for reporting)
  • Code cleaning: fix "issues" highlighted by the tool include-what-you-use
  • Code cleaning: fix "issues" highlighted by the static analysis tool CodeChecker
  • Code cleaning: remove warnings when compiling under Windows with the flag /W4 /permissive- (thanks @gpascualg and @BrodyHiggerson)

Palanteer v0.5

21 Nov 21:47
Compare
Choose a tag to compare

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

Palanteer v0.4

09 Sep 19:08
Compare
Choose a tag to compare

This is a bug fix release

Behavior change / compatibility break

  • None

New features

  • Viewer: add support for high DPI

Fixes and improvements

  • Python instrumentation: fix a crash when tracing C calls
  • Viewer: fix a crash in some cases in the file dialog window when playing with sorting
  • C++ instrumentation: added printf-like API for plDeclareVirtualThread and plDeclareThreadDyn
  • Documentation updated
  • Documentation: upgraded Markdeep
  • Viewer: upgraded Dear ImGui

Palanteer v0.3

16 Aug 21:30
Compare
Choose a tag to compare

This is a general maintenance release

Compared to the previous release, the main changes are:

  • Addition of the 'compact application model' taking advantage of 32 bits architectures to reduce the exchanged data to 12 bytes per event (instead of 24 bytes)
  • 10% speed gain on server side (compression library update)

Behavior change / compatibility break

  • Viewer: old stored records will not be readable anymore (break in 6a1bcdf)
  • Instrumentation: old viewers are not compatible, due to added options (see below). But the current viewer accept older instrumentation libraries.

New features

  • Instrumentation: add support for a hash 'salt', useful when using 32 bits hash to remove potential collisions.
  • Instrumentation: add support for the 'compact model', allowing 50% reduction of used bandwidth (i.e. 12 bytes per event) between client and server, under some instrumentation constraints
  • Python: add interface to profile Python modules (thanks @Victor333Huesca!)
  • Scripting improved API to handle the case of externally launched programs (thanks @LotemAm!)
  • Viewer: application icon added under Windows

Fixes and improvements

  • Viewer: display of all instrumentation options in the 'Record view'
  • Instrumentation: Added the missing "group" version of plDeclareThread
  • Server: add the missing control of the instrumentation protocol version, to detect client-server incompatibilities
  • Documentation updated
  • Viewer: application icon added under Windows
  • Server: upgraded compression library zstd to benefit from the recent speed improvement for low compression ratios.
  • Viewer: upgraded Dear ImGui and stb_image.h

Palanteer v0.2

31 Jul 13:14
Compare
Choose a tag to compare

This is the first Palanteer official release

Compared to the initial commit, the main changes are:

  • Virtual/userland thread support
  • Stability fixes (one of them critical)
  • Improved packaging.

Behavior change / compatibility break

  • Viewer: old stored records will not be readable anymore (break in 8e9e9ac)
  • The Python instrumentation does not log anymore the C calls by default.
    Indeed, wildly used built-in function (like list "append") may be very heavy and are not always necessary

New features

  • Viewer: record catalog improvement: total size per app is displayed and a menu to collapse/open alls app was added
  • Server: 10% faster event processing on server side by disabling specific assertions in containers in release mode.
  • Virtual/green/userland thread support in C++, and the equivalent asyncio/gevent/greenlet in Python
  • Improved CMakeFile.txt (thanks @bareya, @RichieSams!)
  • Python packages are now wheels
  • Python code is now formatted for PEP8 (with the tool "black")

Fixes

  • Server: fixed the lock event automata (a not taken lock event after a wait begin event was not ended as it should)
  • Viewer: fixed the search on Windows (strcasestr exists but does not work properly)
  • Viewer: fixed the behavior of clicking on items in the text view
  • Viewer: fixed the plot and histogram layout persistency
  • Server: filter problematic characters for a file in the sent application name
  • Server: improve robustness and behavior of the server connection automata
  • Server: improve robustness of the server against corrupted data sent from instrumentation
  • Instrumentation; fixed a major stability issue (event corruption) in the collection mechanism
  • Viewer: fixed proper quitting of the viewer
  • Instrumentation: fixed missing deactivated APIs (thanks @Lnsrini, @learn-more)
  • Tools: fixed missing API names in the tool extStringCppParser.py
  • Documentation improvement (thanks @ajweeks!)