Behavioral Changes
- Collections returned by scope (e.g.
getBreadcrumbs,getTags,getAttachments) are shared state and should not be mutated. (#5541)- Previously, when going through
CombinedScopeView, we were returning a copy where mutations didn't show up in the underlying scopes. - This has now changed in order to reduce SDK overhead.
- Previously, when going through
Dateobjects returned by SDK data model getters are shared state and should not be mutated. (#5603)- Previously, these getters returned defensive copies for some date fields.
- This has now changed in order to reduce SDK overhead.
Performance
- Reduce writer buffer size from 8192 to 512 (#5544)
- Remove redundant event map copies (#5536)
- Optimize combined scope by adding an early return if only one scope has data (#5541)
- Reduce model access overhead by avoiding defensive
Datecopies in SDK data model getters. (#5603) - Reduce timestamp parsing and formatting overhead with Sentry-specific ISO-8601 handling. (#5602)
- Reduce JSON serialization overhead by creating the reflection serializer only when unknown-object fallback serialization is needed. (#5601)
- Reduce JSON serialization overhead by allocating reflection cycle-tracking state only when reflection serialization is used. (#5600)
- Reduce context serialization overhead by sorting key snapshots with arrays instead of temporary lists. (#5599)
- Reduce breadcrumb allocation overhead by creating the
Breadcrumbdata map only when data is added. (#5598) - Reduce JSON serialization overhead by lowering the initial
JsonWriternesting stack size while preserving on-demand growth. (#5591) - Reduce timestamp helper overhead by replacing unnecessary
Calendarusage inDateUtilswith directDatecreation. (#5589) - Reduce Android startup overhead by using the default timezone directly on older devices or when no timezone info is available in the locale. (#5587)