Repository navigation
v0.6.0
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
sparkexpansion 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, withhealth show --memoryand--networkdetail 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 andLastErrorpreservation, 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