Skip to content

Release 0.26.0

Compare
Choose a tag to compare
@carl-mastrangelo carl-mastrangelo released this 09 Nov 08:23
· 77 commits to master since this release
v0.26.0

API Changes

  • PerfMark.setEnabled() now returns if setting the value succeeded. (#181).

Implementation Improvements

  • Added work arounds for Java 19's Virtual threads, which may not be able to
    use Thread Local storage. If this is the case, PerfMark attempts to
    emulate thread local trace buffers using a concurrent map.
  • Trace storage now more eagerly removes storage when it find the thread
    is gone, and is more GC friendly. PerfMark still attempts to preserve
    trace data after a thread finishes, but without strongly referring to it.

Unstable API Changes

The following changes are to unstable APIs of PerfMark. This section
describes APIs for advanced users to try out new functionality before
it becomes API stable.

  • Added Methods to Storage for clearing thread local and global storage (#177)
    • Storage.clearLocalStorage() enables individual threads to clear their storage
    • Storage.clearGlobalIndex() marks storage as SoftlyReachable where possible
      It can be used to indiciate that future calls to Storage.read() should not
      include data after the point that the global index was cleared. Both
      clearLocalStorage and clearGlobalIndex can be used to remove old trace
      data.
    • LocalMarkHolder was added to enter and exit critical sections of of
      MarkHolder mutation. The only implementation currently pulls the MarkHolder
      out of thread local storage for editing. However, this designed to work with
      other context-specific storage mechanisms, such as Kotlin's Coroutines.