Repository navigation
Releases: yandex/demeter
Releases · yandex/demeter
Release list
v1.8.0
Release Changelog
Inject profiler
- Fixed startup crashes in R8-minified builds caused by loading
@Injectconstructor classes by their original names after obfuscation. - Constructor and parameter names are now captured during bytecode instrumentation. Runtime metric collection no longer uses
Class.forNameor Kotlin reflection. - Dependency links are created only when a match is unambiguous. Constructor timing and thread data remain available.
Compatibility
- Update the Demeter Gradle plugin and Inject runtime artifacts to
1.8.0together. - Previously instrumented libraries remain supported. Their constructor timing is recorded, but the legacy call cannot restore dependency links.
Full Changelog: v1.7.0...v1.8.0
v1.7.0
Release Changelog
Compose multimodule support
- Compose instrumentation now supports Android feature and library modules.
- Configure
com.yandex.demeter.composeanddemeterComposein each required module; keep runtime Demeter dependencies in the app module.
Compatibility
- Updated Kotlin to 2.4.10 and adapted the Compose compiler integration.
Full Changelog: v1.6.0...v1.7.0
v1.6.0
Release Changelog
Coroutine tracer
- Automatically finds all launch/async calls, eliminating manual labeling.
- Builds a tree of parent-child relationships between Jobs.
- Measures the duration of each coroutine and logs cancellations and exceptions.
- Displays all of this in a user-friendly UI right on the device.
Fix
- #7 IR lowering crash in Demeter Compose plugin: No mapping for symbol
Full Changelog: v1.3.0...v1.6.0
v1.3.0
Release Changelog
Firefox Profiler
- JSON format compatible with profiler.firefox.com
- Complete call stack data with parent-child relationships
- Multi-threaded execution tracking
Flamegraph
- TXT format compatible with
FlameGraph/flamegraph.pl - Standard format:
thread;frame1;frame2;frameNduration - Ready for SVG generation
UI
- New format selection dialog with 3 options (CSV, Flamegraph, Firefox Profiler)
- Async export for better UI responsiveness
DB
- New
parentExecutionIdfor call hierarchy tracking - Optimized indices for export queries
- Recursive SQL queries for call stack extraction
Full Changelog: v1.2.0...v1.3.0
v1.2.0
Release Changelog
Major Plugin Architecture Refactoring
This release introduces a breaking change that separates profiler plugins into lightweight core functionality and optional UI components.
Breaking Changes
Core vs UI Plugin Split
Plugins are now split into:
- Non-UI plugins - profiling with optional reporter callbacks
- UI plugins
Migration Example:
// Before
Demeter.init(
DemeterInitializer(
context = this,
plugins = listOf(TracerDemeterPlugin(), InjectDemeterPlugin())
)
)
// After (with UI)
Demeter.init(
UiDemeterInitializer(
context = this,
uiPlugins = listOf(TracerUiDemeterPlugin(), InjectUiDemeterPlugin())
)
)
// After (no-UI)
Demeter.init(
DemeterInitializer(
plugins = listOf(
TracerDemeterPlugin(reporter = { payload -> /* handle */ })
)
)
)New Dependencies
implementation("com.yandex.demeter:profiler-tracer-ui-plugin:1.2.0")
implementation("com.yandex.demeter:profiler-inject-ui-plugin:1.2.0")
implementation("com.yandex.demeter:profiler-compose-ui-plugin:1.2.0")v1.1.5
v1.1.3
v1.0.0
- New: Compose recompositions plugin
- Fix: sort logs by name and thread
- Fix: export data to
.csvformat
Full Changelog: v0.38.0...v1.0.0
