Release Notes
These are the release notes from bakame/stackwatch
. We’ve tried to cover all changes,
including backward compatible breaks from the first commit through to the current stable release.
If we’ve missed anything, feel free to create an issue, or send a pull request.
version 0.13.0 - Marrakesh : 2025-08-14
Added
--tags
option to the CLI command to filter profile that needs to be run based on thetags
property of the #[Profile] attribute.--memory-limit
option to the CLI command to control the memroy limit of the main process.UnitSpacing
Enum to control the space between value and unit when using the format related methods ofMemoryUnit
andDurationUnit
.Visibility
andState
Enums to improveInput
option flags properties.
Fixed
- BC BREAK:
Timeline::delta
default to creating the delta between thefrom
and the next snapshot before it was with the last snapshot if noto
label was given. - BC BREAK:
Input
boolean properties are replaced by discretEnum
Deprecated
- None
Removed
- BC BREAK:
Marker
class renamedTimeline
version 0.12.0 - Luanda : 2025-08-11
Added
--depth
argument and--no-recursion
flag to control recursion on directories.--isolation
flag to handle in isolation each file.
Fixed
- BC BREAK: command line format options
table
replace the default optioncli
- BC BREAK: Changed
Bakama\Stachwatcher\Marker::summary
method name toBakama\Stachwatcher\Marker::summarize
- Internal improvement, Lazy evaluation is now done in the
UnitOfWork
Deprecated
- None
Removed
- None
version 0.11.0 - Kampala : 2025-08-03
Added
- BC BREAK: Changed namespace from
Bakame\Aide\Profiler
toBakama\Stackwatcher
Statistics
classReport
class and theProfiler::report
method.ConsoleExporter::exportMetrics
ConsoleExporter::exportStatistics
ConsoleExporter::exportReport
JsonExporter
- The
Stackwatcher
command to ease profiling using command line
Fixed
- None
Deprecated
- None
Removed
- BC BREAK:
ConsoleTableExporter
renamedConsoleExporter
and moved under theExporter
namespace - BC BREAK:
Profiler::executionTime
removed useProfiler::metrics
instead - BC BREAK:
Profiler::cpuTime
removed useProfiler::metrics
instead - BC BREAK:
Profiler::memoryUsage
removed useProfiler::metrics
instead - BC BREAK:
Profiler::peakMemoryUsage
removed useProfiler::metrics
instead - BC BREAK:
Profiler::realMemoryUsage
removed useProfiler::metrics
instead - BC BREAK:
Profiler::realPeakMemoryUsage
removed useProfiler::metrics
instead - BC BREAK:
Marker::executionTime
removed useMarker::metrics
instead - BC BREAK:
Marker::cpuTime
removed useMarker::metrics
instead - BC BREAK:
Marker::memoryUsage
removed useMarker::metrics
instead - BC BREAK:
Marker::peakMemoryUsage
removed useMarker::metrics
instead - BC BREAK:
Marker::realMemoryUsage
removed useMarker::metrics
instead - BC BREAK:
Marker::realPeakMemoryUsage
removed useMarker::metrics
instead - BC BREAK:
ProfiledResult
is renamedResult
version 0.10.0 Johannesburg : 2025-07-17
Added
Marker::complete
andMarker::isComplete
Profiler::hasSummaries
Profiler::filter
Snapshot::fromArray
Metrics::fromArray
Summary::fromArray
LabelGenerator::withLength
label length can be configuredMemoryUnit::convertFrom
andMemoryUnit::convertTo
DurationUnit::convertFrom
andDurationUnit::convertTo
- The static methods from the
Profiler
now can warm up before recording the metrics.
Fixed
- BC BREAK:
ProfilingResult::result
is renamedProfilingResult::returnValue
- BC BREAK:
ProfilingResult::ProfilingData
is renamedProfilingResult::summary
- BC BREAK:
ProfilingResult
is renamedProfiledResult
- BC BREAK:
ProfilingData
is renamedSummary
- BC BREAK:
Label
is renamedLabelGenerator
- BC BREAK:
Exporter::exportProfilingData
is renamedExporter::exportSummary
- BC BREAK:
Snapshot::toArray
andSnapshot::jsonSerialize
representation simplified - BC BREAK:
Summary::toArray
andSummary::jsonSerialize
representation simplified - BC BREAK:
Summary::__construct
signature changed - BC BREAK:
Profiler::toArray
andProfiler::jsonSerialize
representation simplified - BC BREAK:
Marker::toArray
andMarker::jsonSerialize
representation simplified - BC BREAK:
Marker::delta
removed the 3rd argument - BC BREAK:
Marker::summary
throws when no summary can be generated - BC BREAK:
Marker::finish
is renamedMarker::take
Snapshot::cpu
keys presence is validated on instantiation
Deprecated
- None
Removed
- None
version 0.9.0 - Ibadan : 2025-07-09
Added
- Added
Metrics::forHuman
to ease getting human-readable metrics representations. - Added
Snapshot::forHuman
to ease getting human-readable metrics representations. - Added
Environment
OS Platform related methods. - Added
Marker
to provide an alternative way to profile your code. - Added
Label
to decouple label generation from bothMarker
andProfiler
. - Added
Exporter::exportMarker
method to the interface. - Added
Profiler::run
withProfiler::__invoke
becoming its alias - Added
Marker::identifier
andProfiler::identifier
to ease identify each instance uniquely
Fixed
- BC BREAK:
Profiler::last
is renamedProfiler::latest
to be consistent withMarker::latest
- BC BREAK:
Profiler::runWithLabel
is renamedProfiler::profile
Deprecated
- None
Removed
- None
version 0.8.0 - Harare : 2025-07-06
Added
- Added
Environment::rawMemoryLimit
to keep the original value if it cannot be properly parsed.
Fixed
- BC BREAK:
Environment::memoryLimit
is a nullable int - BC BREAK: Renamed
Metrics::stats
toMetrics::toArray
- BC BREAK: Renamed
Snapshot::stats
toSnapshot::toArray
- BC BREAK: Renamed
ProfilingData::stats
toProfilingData::toArray
- BC BREAK: Renamed
Environment::stats
toEnvironment::toArray
Deprecated
- None
Removed
- None
version 0.7.1 - Gaborone : 2025-07-06
Added
- None
Fixed
Metrics::cpuTime
calculation
Deprecated
- None
Removed
- None
version 0.7.0 - Gaborone : 2025-07-05
Added
Profiler::average
Environment
classConsoleTableExporter::exportEnvironment
to visually show the environment settingsConsoleTableExporter::exportProfiler
also provide the average as a summary
Fixed
Exporter::exportProfiler
now takes a second parameter to filter using the label.Metrics::average
, fix bug in the calculation.
Deprecated
- None
Removed
- None
version 0.6.0 - Fezzan : 2025-07-03
Added
DurationUnit
replacesTimeUnit
Enum.- Adding
Exporter::exportSnapshot
method.
Fixed
- BC BREAK: simplify
ConsoleTableExporter
memory and time unit display - BC BREAK: rewrite and simplify
MemoryUnit
andDurationUnit
Enum - BC BREAK:
Snapshot::executionTime
is renamedSnapshot::hrtime
. - BC BREAK:
Metrics::avg
is renamedMetrics::average
.
Deprecated
- None
Removed
- BC BREAK:
TimeUnit
is removed in favour ofDurationUnit
Enum
version 0.5.0 - Enugu : 2025-07-01
Added
- All
Profiler
static methods can have a logger attached to them MemoryUnit
andTimeUnit
Enum to ease metrics values conversion.
Fixed
- None
Deprecated
- None
Removed
- BC BREAK: renamed
CliExporter
asConsoleTableExporter
version 0.4.0 - Durban : 2025-06-29
Added
Metrics::avg
supportsProfilingData
instances.Metrics::add
public method.
Fixed
- library packaging by removing development related files from downloads.
- BC BREAK: normalize duration related metrics to be expressed in nanoseconds.
- BC BREAK: normalize memory related metrics to be expressed in bytes.
- BC BREAK: Adding missing field in
Metrics::stats
returned array.
Deprecated
- None
Removed
- BC BREAK:
ProfilingResult::profile
static method removed - BC BREAK:
ProfilingData::randomLabel
static method removed
version 0.3.0 - Cairo : 2025-06-29
Added
Profiler::first
,Profiler::last
,Profiler::nth
Metrics
Profiler
metrics related static methods.Profiler::execute
static method.
Fixed
- None
Deprecated
- None
Removed
- BC BREAK: The
Renderer
interface is removed - BC BREAK:
CliTableRenderer
renamedCliExporter
- BC BREAK:
CliTableRenderer
implements theExporter
interface - BC BREAK:
Profiler::lastProfile
replaced byProfiler::last
- BC BREAK:
Profiler::get
returns the lastProfile
for a specific label before it was returning the first one. - BC BREAK:
Profile::metrics
returns aMetrics
object before the metrics where attached directly to the profile. - BC BREAK: The
Metrics::executionTime
is now calculated usinghrtime
instead ofmicrotime
and returns the value in nanoseconds - BC BREAK: The
Profile
class is now a readonly value object, the methods showing the progress of the profile generation are removed. - BC BREAK:
Profile
renamedProfilingData
- BC BREAK:
ProfileResult::value
renamedProfileResult::result
- BC BREAK:
ProfileResult::profile
renamedProfileResult::profilingData
version 0.2.0 Bamako : 2025-06-26
Added
ProfilingException
as the exception markerUnableToProfile
andInvalidProfileState
exceptionsOpenTelemetryExporter
to enable exporting theProfiler
Fixed
- None
Deprecated
- None
Removed
- None
version 0.1.0 Addis Ababa : 2025-06-26
Initiale release