Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 18:43
· 18 commits to main since this release

Added

  • Add Java-compatible health reports and a live health dashboard with background
    uploads, rolling TPS, tick-duration, CPU, world, and ping history, and trusted
    viewer clients.
  • Add an optional spark expansion for Endstone PlaceholderAPI with TPS,
    tick-duration, and process/system CPU placeholders. Spark continues to work
    normally when PAPI is not installed or active.
  • Add one-hour process-memory history and 1m/5m/15m allocation-rate metrics on
    Windows and Linux, with health show --memory and --network detail views.
  • Attribute sampled Python plugin call chains on CPython 3.12+; CPython 3.11
    remains native-only.
  • Export active Bedrock behavior-pack metadata and a reviewed safe subset of
    server.properties, with opt-in support for additional safe keys.
  • Preserve the initiating player's UUID across profiler, health, activity,
    upload, and recovery metadata.
  • Allow /spark profiler open --comment <text> to override the comment shown in
    the live viewer.
  • Report the number of ticks included by --only-ticks-over, and distinguish
    samples discarded from an unfinished terminal tick from other incomplete data.
  • Improve Windows native symbol attribution for templates, lambdas, local
    classes, and other ambiguous compiler-generated names.
  • Support Java-compatible Spark configuration environment variables.

Changed

  • Align command parsing, help visibility, profiler action precedence, umbrella
    permissions, and zero-interval defaults more closely with Java spark.
  • Align live-viewer updates and profiling windows to stable global cadences, and
    use monotonic deadlines for timed profiles, uptime, ping, and network sampling
    so wall-clock changes or server stalls do not skew them.
  • Distribute Linux builds as a single endstone_spark.so. A full server restart
    is recommended when upgrading from the old helper-based runtime or after an
    update that changes Spark's persistent native allocation support.
  • BREAKING: Linux allocation profiling now supports allocator providers that
    are part of the server's startup dependency graph. Custom allocator providers
    loaded later at runtime are not supported.
  • Improve Windows x64 allocation profiling so plugin unload does not leave native
    callbacks targeting unloaded Spark code.
  • Reduce sampler/allocation aggregation overhead, profile-export allocations, and
    peak memory use during crash-recovery replay.
  • Make Linux native symbol attribution more conservative by rejecting ambiguous
    evidence instead of presenting uncertain labels as resolved functions.

Fixed

  • Improve allocation-profiler cleanup and failure handling on Windows and Linux,
    including Windows stack unwinding and LastError preservation, Linux caller
    attribution, and bounded stop/finalize paths so slow cleanup cannot freeze the
    server indefinitely.
  • Keep persistent Linux allocation support safe across plugin unload and late
    callbacks. Incompatible or exhausted process-lifetime state is reported and
    requires a full server restart.
  • Make recovery-journal flushing, rotation, and module-definition ordering more
    durable, and retain recovery data when shutdown cleanup is incomplete.
  • Preserve independent complete call trees for different threads that share the
    same display name.
  • Export Python filename leaves and code identifiers without server-owner
    directory paths while retaining available line information.
  • Harden live-viewer and health-dashboard connection lifecycle, reconnects,
    trusted-client validation, malformed input handling, and bounded send/receive
    queues.
  • Keep viewer and health notification failures off the server tick path and ensure
    failed connections are cleaned up.
  • Include players correctly in aggregate world entity gauges and include world
    metadata in the initial health report.
  • Match upstream spark protocol details for profile data version, tick-threshold
    units, and tick-duration placeholder windows and percentile ranks.
  • Prevent Spark's native allocation-hook internals from being charged to Spark in
    execution-profile Plugins View.
  • Prevent the viewer's process-memory denominator from decoding as zero while
    preserving native RSS/committed-memory semantics.
  • Skip unsafe device-metadata ping polling for unauthenticated headless BDS
    clients.
  • Keep a completed allocation profile stable until serialization finishes before
    persistent allocation-rate counting resumes.
  • Prevent Windows execution sampling failures from leaving the target BDS thread
    suspended.
  • Preserve recovery journals when export shutdown cleanup does not complete, and
    report cleanup warnings only when cleanup actually remains incomplete.

Full Changelog: v0.5.3...v0.6.0