- Serialize attachment envelope headers as JSON to correctly encode header values (#1109).
- Changed
ClientOptions::enable_metricsto default totrue, aligning metrics behavior with other Sentry SDKs (#1106). Metric capture APIs still require themetricsfeature flag at compile time.
- Added the following metrics-related fields to the
ClientOptionsstruct insentry-core. Both fields are no-ops, unless themetricsfeature flag is enabled:enable_metrics, used to enable sending metrics to Sentry (#1073).before_send_metric, used to define a callback for filtering/pre-processing metrics before sending to Sentry (#1064).
- There are several breakages related to the SemVer feature additivity bug fixes:
sentry_core::ClientOptionsfieldsbefore_send_log,enable_logs,auto_session_tracking, andsession_modeare no longer gated behind thelogsandrelease-healthfeature flags (#1091). Code that constructsClientOptionswith a full struct literal (without..Default::default()), or which exhaustively matches against it, must now include all four fields regardless of enabled features.sentry_core::Scopecan no longer be publicly constructed or exhaustively matched against, even when theclientfeature is disabled (#1094). Previously, both of these were possible whenclientwas disabled.sentry_core::Scope::add_event_processornow requires passed closures to beRefUnwindSafe(#1093). Thanks to this change,sentry_core::Scopeis nowUnwindSaferegardless of feature flag configuration; previously,Scopewas onlyUnwindSafewhen theclientfeature was disabled.sentry_tracing::EventMappingis now#[non_exhaustive](#1097).sentry_log::RecordMappingis now#[non_exhaustive](#1098).
📊📈💯 The Sentry-Rust SDK now supports emitting Sentry Metrics (#1073)!
To get started, you will need to add the metrics feature flag when compiling the sentry crate. You will also need to enable metrics when initializing the SDK, like so:
use sentry::ClientOptions;
let _guard = sentry::init((
"(your DSN here)",
ClientOptions {
enable_metrics: true,
// ... other options ...
..Default::default()
},
));You can then capture metrics as follows:
use sentry::metrics;
use sentry::types::protocol::latest::Unit;
// We support counter, gauge, and distribution metrics.
metrics::counter("example.counter", 1).capture();
metrics::gauge("connections", 20).capture();
metrics::distribution("response.time", 123.4)
.unit(Unit::Millisecond) // units can also be set on gauges
.attribute("http.status", 200) // attributes can be set on all metric types
.capture();- Fixed several feature additivity SemVer violations, where enabling a feature flag could have introduced breaking changes. All known violations are fixed now, so simply enabling an additional feature flag in any Sentry SDK crate should no longer cause any public API breakages. Fixing these issues required us to break the public API in some places; those breakages are detailed above.
- Update reqwest from 0.12.25 to 0.13.1 (#998). This change is breaking for users who use the
RequestHttpTransport::with_clientmethod. sentry_core::HubSwitchGuardis now!Send, preventing it from being moved across threads (#957).
- Added a
Envelope::into_itemsmethod, which returns an iterator over ownedEnvelopeItems in theEnvelope(#983). - Expose transport utilities (#949)
- Fixed thread corruption bug where
HubSwitchGuardcould be dropped on wrong thread (#957). - We now fork the
Hubevery time a span is entered. This prevents data from leaking across spans (#957).
- Log HTTP 413 responses as oversized envelope discards in HTTP transports (#966)
- Bump minimum supported Rust version to 1.88 (#970).
- Make it possible to == Transaction/Span/TransactionOrSpan (#942)
- Update reqwest from 0.12.15 to 0.12.25 (#951)
- Removed the
ClientOptionsstruct'strim_backtracesandextra_border_framesfields (#925).- These fields configured backtrace trimming, which is being removed in this release.
- Removed backtrace trimming to align the Rust SDK with the general principle that Sentry SDKs should only truncate telemetry data when needed to comply with documented size limits (#925). This change ensures that as much data as possible remains available for debugging.
- If you notice any new issues being created for existing errors after this change, please open an issue on GitHub.
- fix: adjust sentry.origin for log integration (#919) by @lcian
- Add custom variant to
AttachmentTypethat holds an arbitrary String. (#916)
- feat(log): support combined LogFilters and RecordMappings (#914) by @lcian
- Breaking change:
sentry::integrations::log::LogFilterhas been changed to abitflagsstruct. - It's now possible to map a
logrecord to multiple items in Sentry by combining multiple log filters in the filter, e.g.log::Level::ERROR => LogFilter::Event | LogFilter::Log. - If using a custom
mapperinstead, it's possible to return aVec<sentry::integrations::log::RecordMapping>to map alogrecord to multiple items in Sentry.
- Breaking change:
- ref(log): send logs by default when logs feature flag is enabled (#915) by @lcian
- If the
logsfeature flag is enabled, the default Sentryloglogger now sends logs for all events at or above INFO.
- If the
- ref(logs): enable logs by default if logs feature flag is used (#910) by @lcian
- This changes the default value of
sentry::ClientOptions::enable_logstotrue. - This simplifies the setup of Sentry structured logs by requiring users to just add the
logfeature flag to thesentrydependency to opt-in to sending logs. - When the
logfeature flag is enabled, thetracingandlogintegrations will send structured logs to Sentry for all logs/events at or above INFO level by default.
- This changes the default value of
- ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
- The
tracingintegration now uses the tracing span name as the Sentry span name by default. - Before this change, the span name would be set based on the
tracingspan target (<module>::<function>when using thetracing::instrumentmacro). - The
tracingintegration now uses<span target>::<span name>as the default Sentry span op (i.e.<module>::<function>when usingtracing::instrument). - Before this change, the span op would be set based on the
tracingspan name. - Read below to learn how to customize the span name and op.
- When upgrading, please ensure to adapt any queries, metrics or dashboards to use the new span names/ops.
- The
- ref(tracing): use standard code attributes (#899) by @lcian
- Logs now carry the attributes
code.module.name,code.file.pathandcode.line.numberstandardized in OTEL to surface the respective information, in contrast with the previously senttracing.module_path,tracing.fileandtracing.line.
- Logs now carry the attributes
- fix(actix): capture only server errors (#877) by @lcian
- The Actix integration now properly honors the
capture_server_errorsoption (enabled by default), capturing errors returned by middleware only if they are server errors (HTTP status code 5xx). - Previously, if a middleware were to process the request after the Sentry middleware and return an error, our middleware would always capture it and send it to Sentry, regardless if it was a client, server or some other kind of error.
- With this change, we capture errors returned by middleware only if those errors can be classified as server errors.
- There is no change in behavior when it comes to errors returned by services, in which case the Sentry middleware only captures server errors exclusively.
- The Actix integration now properly honors the
- fix: send trace origin correctly (#906) by @lcian
TraceContextnow has an additional fieldorigin, used to report which integration created a transaction.
- feat(tracing): send both breadcrumbs and logs by default (#878) by @lcian
- If the
logsfeature flag is enabled, andenable_logs: trueis set on your client options, the default Sentrytracinglayer now sends logs for all events at or above INFO.
- If the
-
ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
- Additional special fields have been added that allow overriding certain data on the Sentry span:
sentry.op: override the Sentry span op.sentry.name: override the Sentry span name.sentry.trace: given a string matching a validsentry-traceheader (sent automatically by client SDKs), continues the distributed trace instead of starting a new one. If the value is not a validsentry-traceheader or a trace is already started, this value is ignored.
sentry.opandsentry.namecan also be applied retroactively by declaring fields with valuetracing::field::Emptyand then recorded usingtracing::Span::record.- Example usage:
#[tracing::instrument(skip_all, fields( sentry.op = "http.server", sentry.name = "GET /payments", sentry.trace = headers.get("sentry-trace").unwrap_or(&"".to_owned()), ))] async fn handle_request(headers: std::collections::HashMap<String, String>) { // ... }
- Additional attributes are sent along with each span by default:
sentry.tracing.target: corresponds to thetracingspan'smetadata.target()code.module.name,code.file.path,code.line.number
- Additional special fields have been added that allow overriding certain data on the Sentry span:
-
feat(core): add Response context (#874) by @lcian
- The
Responsecontext can now be attached to events, to include information about HTTP responses such as headers, cookies and status code. - Example:
let mut event = Event::new(); let response = ResponseContext { cookies: Some(r#""csrftoken": "1234567""#.to_owned()), headers: Some(headers_map), status_code: Some(500), body_size: Some(15), data: Some("Invalid request"), }; event .contexts .insert("response".to_owned(), response.into());
- The
- build(panic): Fix build without other dependencies (#883) by @liskin
- The
sentry-paniccrate now builds successfully when used as a standalone dependency.
- The
- fix(transport): add rate limits for logs (#894) by @giortzisg
- feat(log): support kv feature of log (#851) by @lcian
- Attributes added to a
logrecord using thekvfeature are now recorded as attributes on the log sent to Sentry.
- Attributes added to a
- feat(types): add all the missing supported envelope headers (#867) by @lcian
- feat(types): add setters for envelope headers (#868) by @lcian
- It's now possible to set all of the envelope headers supported by the protocol when constructing envelopes.
- feat(core): add some DSC fields to transaction envelope headers (#869) by @lcian
- The SDK now sends additional envelope headers with transactions. This should solve some extrapolation issues for span metrics.
- feat: filter username and password in URLs (#864) by @lcian
- Usernames and passwords that could be contained in URLs captured when using the Actix Web or axum integration are now always filtered out.
- If the
Requestis created manually by the user, then these fields are not filtered out. - This information was already filtered by Relay, but should also be filtered by the SDK itself as a first line of defense.
- docs: match description of
debugoption with behavior since PR #820 (#860) by @AlexTMjugador
- feat(tracing): support combined EventFilters and EventMappings (#847) by @lcian
EventFilterhas been changed to abitflagsstruct.- It's now possible to map a
tracingevent to multiple items in Sentry by combining multiple event filters in theevent_filter, e.g.tracing::Level::ERROR => EventFilter::Event | EventFilter::Log. - It's also possible to use
EventMapping::Combinedto map atracingevent to multiple items in Sentry. ctxin the signatures ofevent_from_event,breadcrumb_from_eventandlog_from_eventhas been changed to takeimpl Into<Option<&'context Context<'context, S>>>to avoid cloning theContextwhen mapping to multiple items.
- feat(core): emit debug log when calling capture_log but logs are disabled (#849) by @lcian
- fix(logs): stringify u64 attributes greater than
i64::MAX(#846) by @lcian
- chore(deps): bump
anyhowand disable itsbacktracefeature (#632) by @LunaBorowska
- refactor(logs): apply user attributes to log regardless of
send_default_pii(#843) by @lcian- User attributes should be applied to logs regardless of
send_default_pii. Therefore, that parameter was removed fromsentry_core::Scope::apply_to_log.
- User attributes should be applied to logs regardless of
- feat(tracing): add support for logs (#840) by @lcian
- To capture
tracingevents as Sentry structured logs, enable thelogsfeature of thesentrycrate. - Then, initialize the SDK with
enable_logs: truein your client options. - Finally, set up a custom event filter to map events to logs based on criteria such as severity. For example:
let sentry_layer = sentry_tracing::layer().event_filter(|md| match *md.level() { tracing::Level::ERROR => EventFilter::Event, tracing::Level::TRACE => EventFilter::Ignore, _ => EventFilter::Log, });
- To capture
- feat(log): add support for logs (#841) by @lcian
- To capture
logrecords as Sentry structured logs, enable thelogsfeature of thesentrycrate. - Then, initialize the SDK with
enable_logs: truein your client options. - Finally, set up a custom event filter to map records to Sentry logs based on criteria such as severity. For example:
let logger = sentry::integrations::log::SentryLogger::new().filter(|md| match md.level() { log::Level::Error => LogFilter::Event, log::Level::Trace => LogFilter::Ignore, _ => LogFilter::Log, });
- To capture
- refactor(logs): cache default attributes and add OS attributes (#842) by @lcian
os.nameandos.versionare now being attached to logs as default attributes.
- fix(logs): send environment in
sentry.environmentdefault attribute (#837) by @lcian
- refactor(tracing): refactor internal code and improve docs (#839) by @lcian
- Errors carried by breadcrumbs will now be stored in the breadcrumb
dataunder their original field name. - Before, they were all stored under a single key called
errors.
- Errors carried by breadcrumbs will now be stored in the breadcrumb
- chore(deps): upgrade
ureqto 3.x (#835) by @algesten
Support for Sentry structured logs has been added to the SDK.
-
To set up logs, enable the
logsfeature of thesentrycrate and setenable_logstotruein your client options. -
Then, use the
logger_trace!,logger_debug!,logger_info!,logger_warn!,logger_error!andlogger_fatal!macros to capture logs. -
To filter or update logs before they are sent, you can use the
before_send_logclient option. -
Please note that breaking changes could occur until the API is finalized.
-
feat(logs): add log protocol types (#821) by @lcian
-
feat(logs): add ability to capture and send logs (#823) by @lcian & @Swatinem
-
feat(logs): add macro-based API (#827) by @lcian & @szokeasaurusrex
-
feat(logs): send logs in batches (#831) by @lcian
- feat(core): implement Tracing without Performance (#811) by @lcian
- The SDK now implements Tracing without Performance, which makes it so that each
Scopeis associated with an object holding some tracing information. - This information is used as a fallback when capturing an event with tracing disabled or otherwise no ongoing span, to still allow related events to be linked by a trace.
- A new API
Scope::iter_trace_propagation_headershas been provided that will use the fallback tracing information if there is no currentSpanon theScope.
- The SDK now implements Tracing without Performance, which makes it so that each
- refactor: remove
debug-logsfeature (#820) by @lcian- The deprecated
debug-logsfeature of thesentrycrate, used for the SDK's own internal logging, has been removed.
- The deprecated
- build: include
sentry-actixoptionally whenrelease-healthis enabled (#806) by @lciansentry-actixis now being included as a dependency only when explicitly added, either as a direct dependency or through theactixfeature flag of thesentrycrate.- Due to a mistake in the
Cargo.toml, it was previously being included as a dependency by default when using just thesentrycrate with default features.
An OpenTelemetry integration has been released. Please refer to the changelog entry below for the details.
- refactor(tracing): remove
EventFilter::exceptionand always attach exception (#768) by @lcian- The
EventFilter::Exceptionenum variant has been removed. Please useEventFilter::Eventinstead to achieve the same behavior. - Using
EventFilter::Eventwill always attach any error struct used within theerrorfield passed to thetracingmacro, asEventFilter::Exceptiondid previously. - The
errorfield will also be attached to breadcrumbs as anerrorsfield resembling the structure of Sentry events created from error structs.
- The
- fix: use
release-healthflag insentry-actixand remove it from subcrates where unneeded (#787) by @lcian- As a follow-up from the changes in the previous release, the
ClientOptionsfieldsauto_session_trackingandsession_modeare now gated behind therelease-healthfeature flag of thesentrycrate. - If you depend on
sentrywithdefault-features = false, you need to include therelease-healthfeature flag to benefit from the Release Health features of Sentry and have access to the aforementioned client options. - The
release-healthfeature flag is used correctly insentry-actixto enable compilation of that subcrate when it's disabled. - The
release-healthhas been removed from thesentry-tracingandsentry-towersubcrates, where it was unnecessary.
- As a follow-up from the changes in the previous release, the
- refactor: remove Surf transport (#766) by @lcian
- The Surf transport has been removed as the
surfcrate is unmaintained and it was holding back dependency upgrades. - If you really want to still use Surf, you can define a custom
TransportFactoryand pass it as thetransportin yourClientOptions
- The Surf transport has been removed as the
- refactor: honor
send_default_piiinsentry-actixandsentry-tower(#771) by @lcian- The client option
send_default_pii(disabled by default) is now honored bysentry-actixandsentry-tower. - This means that potentially sensitive headers such as authorization, cookies, and those that usually contain the user's IP address are filtered and not sent to Sentry.
- If you want to get back to the previous behavior and capture all headers, please set
send_default_piitotruein yourClientOptions. - Please refer to our Data Collected page for a comprehensive view of the data collected by the SDK.
- The client option
- refactor(debug-images): force init
DEBUG_METAon integration init (#773) by @lcian- The
DebugImagesintegration has been updated to init theDEBUG_METALazyimmediately. - Using this integration is known to cause issues in specific versions of the Linux kernel due to issues in a library it depends on.
- Previously, on problematic systems the SDK would cause deadlock after capturing the first event. Now the SDK will panic on initialization instead. Please open an issue if you're affected.
- The
- feat(otel): add OpenTelemetry SpanProcessor, Propagator, Extractor (#779) by @lcian
- A new integration for the
opentelemetrycrate has been released. - It can be used to capture spans created using the
opentelemetryAPI and send them to Sentry. - Distributed tracing is also supported, provided that the upstream/downstream services support the Sentry or W3C distributed tracing metadata format.
- Please refer to the subcrate's README or the crate docs to see an example of setup and usage.
- A new integration for the
- feat: expose
sentry-actixas a feature ofsentry(#788) by @lciansentry-actixis now exposed by thesentrycrate assentry::integrations::actix, gated behind theactixfeature flag.- Please update your dependencies to not depend on the
sentry-actixsubcrate directly.
- build(deps): bump openssl from 0.10.71 to 0.10.72 (#762) by @dependabot
- build(deps): bump tokio from 1.44.1 to 1.44.2 (#763) by @dependabot
- chore(deps): bump some dependencies and update
Cargo.lock(#772) by @lcian
- Replace
once_cellwithstd::sync::LazyLock(#776) by @FalkWoldmann - chore: update GH issue templates for Linear compatibility (#777) by @stephanie-anderson
- chore: update issue templates with blank issue and Discord link (#778) by @lcian
- refactor(core): fail with message if TLS backend not available (#784) by @lcian
- build: add
sentry-opentelemetryto workspace (#789) by @lcian - docs: update docs including OTEL and other integrations (#790) by @lcian
- fix(otel): fix doctests (#794) by @lcian
- fix(otel): fix span and trace ids for distributed tracing (#801) by @lcian
- build(otel): exclude version from circular dev-dependencies (#802) by @lcian
- chore(msrv):
cargo updateand bump MSRV to 1.81 (#754) by @lcian- The minimum supported Rust version has been raised to 1.81.
- feat(core): introduce
release-healthfeature (#749) by @pepperoni505- A new
release-healthfeature flag was introduced that gates the Release Health features of Sentry. - This allows for compilation of the SDK on certain WASM targets.
- Release Health features were already present and enabled with no feature flag in previous versions.
- The new feature flag will be enabled by default when using
sentry,sentry-actix,sentry-towerorsentry-tracingwith the default features. - If you're fine-tuning your feature flags, make sure to enable
release-healthto get back the previous behavior.
- A new
- ref(metrics): remove features and code related to the old metrics beta (#740) by @lcian
- The metrics feature and the code related to it has been removed from the crate, as the Sentry backend stopped ingesting metrics a while ago.
- Switch to MIT license (#724) by @cleptric
- The license for the crates has been changed to MIT.
- feat(actix): capture HTTP request body (#731) by @pacifistes
- The middleware for
actix-webnow supports capturing and attaching the request body to HTTP request transactions. - You need to enable
send_default_piiin your client options for this to be enabled, and you can fine-tune the behavior using the new optionmax_request_body_size.
- The middleware for
- feat(core):
transaction.set_datasets data onTraceContext(#739) by @lciantransaction.set_datanow sets data onTraceContext, as the SDK should not use theextrafield.
- ref(backtrace): add entries and extra logic for in-app detection (#756) by @lcian
- feat(core): add more frames to be considered not in_app (#760) by @lcian
- The logic used by the SDK to detect
in-appstack frames has been improved. Now the SDK will mark more frames as notin-app. - A similar improvement has been added to the Sentry backend so that old versions of the SDK can benefit from improved
in-appreporting.
- The logic used by the SDK to detect
- fix(http): Finish transaction on drop (#727) by @Dav1dde
- Fixed a bug where the current transaction was not finished (hence not sent to Sentry) when its corresponding future was dropped, e.g. due to a panic.
- follow #439 for actix-web. fix #680 (#737) by @pavel-rosputko
- The HTTP request metadata is now being correctly attached to transactions when using
sentry-actix.
- The HTTP request metadata is now being correctly attached to transactions when using
- fix(tracing): wrap error with synthetic mechanism only if attaching stacktrace (#755) by @lcian
- Fixed a bug that should result in improved grouping and issue titles for events reported by
sentry-tracingwhen not capturing stack traces.
- Fixed a bug that should result in improved grouping and issue titles for events reported by
- fix(actix): process request in other middleware using correct Hub (#758) by @lcian
- The subsequent middleware in the chain when processing a request now execute within the correct Hub.
- fix(anyhow): attach stacktrace only if error provides backtrace (#759) by @lcian
- Fixed a bug where the SDK was providing incorrect stack traces when capturing an
anyhowwhen thebacktracefeature is enabled butRUST_BACKTRACEis not set. - This should result in correct grouping of the affected issues.
- Fixed a bug where the SDK was providing incorrect stack traces when capturing an
- Fix CS (#726) by @cleptric
- fix(doctests): update prost (#750) by @lcian
- chore(msrv): bump MSRV to 1.75 (#751) by @lcian
- refactor(actix): simplify body_from_http (#757) by @robjtede
- chore: prepare changelog for release (#761) by @lcian
- build(deps): bump openssl from 0.10.66 to 0.10.70 (#732) by @dependabot
- build(deps): bump ring from 0.17.8 to 0.17.13 (#747) by @dependabot
- feat(sentry-tower) Make SentryLayer and SentryService
Syncif request isn't (#721) by @syphar - sentry-tower: Update
axumdependency to v0.8 (#718) by @Turbo87 - Allow retrieving user of scope (#715) by @thomaseizinger
- Elide lifetimes where possible (#716) by @thomaseizinger
- Replace release bot with GH app (#714) by @Jeffreyhung
- Delay sampling of span to
finish(#712) by @thomaseizinger
Fixes:
- Envelopes will be discarded rather than blocking if the transport channel fills up (previously fixed in async-capable transports, now applied to the curl/ureq transports). (#701)
Features:
- Renamed the
UNSTABLE_metricsandUNSTABLE_cadencefeature flags tometricsandmetrics-cadence1respectively.
- ref(metrics): Add normalization and update set metrics hashing (#658) by @elramen
- feat: add embedded-svc based http transport (#654) by @madmo
Compatiblity:
- Raised the MSRV to 1.73.
Improvements:
- Slightly improved overhead of the
tracinglayer. (#642)
Updates:
- Updated
reqwestto version0.12. - Updated
tonicto version0.11.
- feat(crons): Add new fields to
MonitorConfigtype (#638) by @szokeasaurusrex - build(deps): bump h2 from 0.3.22 to 0.3.24 (#635) by @dependabot
- fix(hub): avoid deadlocks when emitting events (#633) by @Tuetuopay
Features:
- Add experimental implementations for Sentry metrics and a cadence sink. These
require to use the
UNSTABLE_metricsandUNSTABLE_cadencefeature flags. Note that these APIs are still under development and subject to change.
Features:
- Updated
sentry-towerdependencies, includingaxumandhttp.
- MonitorSchedule constructor that validates crontab syntax (#625) by @szokeasaurusrex
- fix(docs): Fix some doc errors that slipped in (#623) by @flub
- docs(tower): Mention how to enable http feature from sentry crate (#622) by @flub
- build(deps): bump rustix from 0.37.23 to 0.37.25 (#619) by @dependabot
- The minimum supported Rust version was bumped to 1.68.0 due to requirements from dependencies. (#612)
- Apply clippy fixes and cherry-pick PRs (#610) by @Swatinem
- ref: Apply user field from scope to transaction event (#596) by @kamilogorek
- Remove profiling support (#595) by @viglia
- chore: upgrade webpki-roots 0.22.5 -> 0.23.0 (#593) by @boxdot
- chore(deps): bump rustls (#592) by @utkarshgupta137
- Apply scope metadata to transactions (#590) by @loewenheim
- feat(tracing): Improve structure for tracing errors (#585) by @jan-auer
- feat(crons): Add monitor check-in types to sentry-types (#577) by @evanpurkhiser
Features:
- Add a new
(tower-)axum-matched-pathfeature to use theMatchedPathas transaction name, along with attaching the request metadata to the transaction.
Fixes:
- Fix rate-limiting/filtering of raw envelopes.
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- Aligned profiling-related protocol types.
Features:
- Added a
ProfilesSamplerto theClientOptions.
Fixes:
- Fix building
ureqtransport without thenative-tlsfeature. - Fixed serialization of raw
Envelopes, and added a newfrom_bytes_rawconstructor.
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- The minimum supported Rust version was bumped to 1.66.0 due to CI workflow misconfiguration.
Fixes:
- Switch to checked version of
from_secs_f64intimestamp_to_datetimefunction to prevent panics (#554) by @olksdr
Internal:
- Disable unnecessary default regex features for
sentry-backtrace(#552) by @xfix - Use correct Rust toolchain for MSRV jobs (#555) by @kamilogorek
Features:
debug_imagesis now a default feature. (#545- Added a
from_path_rawfunction toEnvelopethat reads an envelope from a file without parsing anything. (#549) - Added a
datamethod toperformance::Spanthat gives access to the span's attached data. (#548)
Fixes:
- Envelopes will be discarded rather than blocking if the transport channel fills up. (#546)
- fix: Prefer
match_patternovermatch_namein actix (#539) by @wuerges - feat(profiling): Add profile context to transaction. (#538) by @viglia
- Re-disable scheduled jobs on forks (#537) by @MarijnS95
- fix: Avoid Deadlock popping ScopeGuards out of order (#536) by @Swatinem
- sentry-core: make TraceContext publicly readable (#534) by @tommilligan
- sentry-core: make TransactionContext.trace_id readable (#533) by @tommilligan
- docs: fix outdated
native-tls/rustlsinfo in README (#535) by @seritools - features: Make
tower-httpenable thetowerfeature (#532) by @Turbo87
Features:
- Users of
TransactionContextmay now addcustomcontext to it. This may be used bytraces_samplerto decide sampling rates on a per-transaction basis. (#512)
Fixes:
- Correctly strip crates hashes for v0 symbol mangling. (#525)
Internal:
Thank you:
Features, fixes and improvements in this release have been contributed by:
Features:
- Allow
traces_samplerto inspect well known properties ofTransactionContext(#514)
Breaking Changes:
- The minimum supported Rust version was bumped to 1.60.0 due to requirements from dependencies. (#498)
- Added the
traces_sampleroption toClientOptions. This allows the user to customise sampling rates on a per-transaction basis. (#510)
Features:
- Add support for Profiling feature. (#479)
- Add
SSL_VERIFYoption to control certificate verification. (#508) - Add Windows OS version to OS context (#499)
- Add a
tower-httpfeature as a shortcut (#493)
Internal:
- Take advantage of weak features in Rust 1.60 for TLS enablement (#454)
- Turn off
pprofdefault features (#491) - Change session update logic to follow the spec (#477)
- Extract public
event_from_errorfn insentry-anyhow(#476)
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- The minimum supported Rust version was bumped to 1.57.0 due to requirements from dependencies. (#472)
- Add the
rust-versionfield to the manifest. (#473) - Update to edition 2021. (#473)
Features:
Internal:
- Replace ancient
lazy_staticcrate withonce_cellorconstslices. (#471)
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- Updated the
debugidanduuiddependencies to versions0.8.0and1.0.0respectively.
Features:
- Request data can now be attached to Transactions and Spans via
set_transaction. (#439) - macOS versions are now reported instead of the Darwin kernel version. (#451)
- Support capturing the error of functions instrumented with
#[instrument(err)]. (#453) - Support capturing span data of instrumented functions. (#445)
- Expose the
debug_imagesfunction fromsentry-debug-images.
Fixes:
- Generate a more correct request URL in the
sentry-towerintegration. (#460) - Do not
panicon invalidHTTP(S)_PROXYenv. (#450)
Internal:
- Project Ids in DSN are treated as opaque strings. (#452)
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- The minimum supported Rust version was bumped to 1.54.0 due to requirements from dependencies.
- Updated the
sentry-actixintegration toactix-web@4. (#437)
Features:
- Calling
Scope::set_transactionwill override the Transaction name of any currently running performance monitoring transaction. (#433)
Fixes:
- Make sure Spans/Transactions have a meaningful/non-empty name. (#434)
Thank you:
Features, fixes and improvements in this release have been contributed by:
Features:
Fixes:
- Remove unused
serde_jsonfeature fromcurldependency. (#420) sentry-tracing: When converting atracingevent to asentryevent, don't create an exception if the original event doesn't have one (#423)sentry-tracing: Add line numbers and tags into custom Contexts sections. (#430)
Thank you:
Features, fixes and improvements in this release have been contributed by:
Fixes:
- Make sure
sentry-corecompiler without theclientfeature. (#416) - Fix incorrect wrapping of Service Futures in
sentry-towerthat could lead to memory leaks combined with the Http Service. (#417)
Breaking Changes:
- The minimum supported Rust version was bumped to 1.53.0 due to requirements from dependencies.
- The
backtracefeature ofsentry-anyhowis enabled by default. (#362) - The
tracing-subscriberdependency ofsentry-tracinghas been bumped to version0.3.x. (#377) Scope::add_event_processornow takes a generic parameter instead of a boxed function.(#380)- The new performance monitoring APIs required changes to a few
protocoltypes. - A few more constructors are now decorated with
#[must_use]. - Usage of
chronoin public API types was removed in favor ofSystemTime. (#409)
Features:
- Added manual APIs for performance monitoring and span/transaction collection. (#395)
- Added span/transaction collection to
sentry-tracing. (#350, #400) - Added a new crate
sentry-towerand featuretowerthat enables integration withtower. (#356) - The new
sentry-towercrate has ahttpfeature which can be used to log request details and start new performance monitoring spans based on incoming distributed tracing headers. (#397) - Similarly, the
sentry-actixintegration also has the ability to start new performance monitoring spans based on incoming distributed tracing headers. (#411) - Added a new feature
surf-h1for usingsurfwith the h1 client. (#357) - Added support for
Span::recordtosentry-tracing. (#364) - Errors captured in the
tracingintegration are being reported as sentry Exceptions. (#412) - Added Windows support for debug images. (#366)
Fixes:
- The
tokiodependency is now only required for thecurl,reqwest, andsurffeatures. (#363) - The rate limiting implementation was updated to follow the expected behavior. (#410)
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- The minimum supported Rust version was bumped to 1.46.0 due to requirements from dependencies.
Features:
- Added support for pre-aggregated Sessions using the new
SessionMode::Requestoption. This requires Sentry 21.2. - Added a new
Client::flushmethod to explicitly flush the transport and use that to make sure events are flushed out when usingpanic=abort. - Added a new
flushhook to theTransporttrait. - Exposed a new
RateLimiterutility that transport implementations can use to drop envelopes early when the DSN is being rate limited. - Optionally allow capturing backtraces from anyhow errors.
- Added new crate
sentry-tracingand featuretracingthat enables support to capture Events and Breadcrumbs from tracing logs.
Fixes:
- Honor the
attach_stacktraceoption correctly when capturing errors. - Added the missing
addr_modeproperty toFrame. - Fixed extracting the error type from a
anyhow::msg.
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- The minimum supported Rust version was bumped to 1.45.0.
- The deprecated
error-chainandfailureintegrations, features and crates were removed.
Features:
- The
slogintegration now supports capturingslog::KVpairs for both breadcrumbs and events. - Preliminary support for attachments was added to
sentry-typesand theEnvelope. However, deeper integration into the SDK is not yet complete.
Fixes:
- Fix regression defaulting
ClientOptions::environmentfromSENTRY_ENVIRONMENT. - The
debug-imagesintegration now captures the correctimage_addr. - Do not send invalid exception events in the
logandslogintegrations. Both integrations no longer attach the location. To receive location information, setoptions.attach_stacktracetotrue. - Process all event backtraces the same way.
- Fix a panic in the session flusher.
Updates:
- Updated
reqwestto version0.11, which is based ontokio 1. - Removed usage of the abandoned
imcrate, thus solving a transitive RUSTSEC advisory.
Thank you:
Features, fixes and improvements in this release have been contributed by:
Breaking Changes:
- Bump the minimum required Rust version to 1.42.0.
- The
actixintegration / middleware is now compatible withactix-web 3. - Removed all deprecated exports and deprecated feature flags.
- The
failureintegration / feature is now off-by-default along with its deprecation. - The
logandslogintegrations were re-designed, they now offer types that wrap alog::Logorslog::Drainand forward log events to the currently active sentryHubbased on an optional filter and an optional mapper. - The new
logintegration will not implicitly calllog::set_max_level_filteranymore, and users need to do so manually.
Features:
- The SDK will now set a default
environmentbased ondebug_assertions. - Session updates are now sent lazily.
- Add the new
end_session_with_statusglobal and Hub functions which allow ending a Release Health Session with an explicitSessionStatus.
Deprecations:
- The
error-chainandfailureintegration was officially deprecated and will be removed soon.
Fixes:
- Fixed a deadlock when nesting
configure_scopecalls. - Improved transport shutdown logic and fixed a potential deadlock on shutdown.
Highlights:
- The Rust SDK now has experimental support for Release Health Sessions using the
start_sessionandend_sessionAPI (global and on theHub).
Breaking Changes:
- The
Transportwas changed to work onEnvelopes instead ofEvents. Thesend_eventtrait function was removed in favor ofsend_envelope.
Features:
- The
Envelope,SessionUpdate, and other related types have been added to thesentry_types::protocol::v7module. - A
clear_breadcrumbsmethod was added toScope. sentry_contexts::utilsis now public.
Fixes:
- Panic events now have a proper
mechanism.
Deprecations:
- The
FutureandFutureExtexports have been renamed toSentryFutureandSentryFutureExtrespectively.
Thank you:
Features, fixes and improvements in this release have been contributed by:
Fixes:
- Better deal with concurrent Hub access.
Highlights:
The sentry crate has been split up into a sentry-core, and many smaller per-integration crates. Application users should continue using the sentry crate, but library users and integration/transport authors are encouraged to use the sentry-core crate instead.
Additionally, sentry can now be extended via Integrations.
Breaking Changes:
- The
utilsmodule has been removed, and most utils have been moved into integrations. - The
integrationsmodule was completely rewritten. - When constructing a
Clientusing aClientOptionsstruct manually, it does not have any default integrations, and it does not resolve default options from environment variables any more. Please use the explicitapply_defaultsfunction instead. Theinitfunction will automatically callapply_defaults. - The
initfunction can’t be called with aClientanymore.
Features:
- Sentry can now capture
std::error::Errortypes, using thecapture_errorandHub::capture_errorfunctions, and an additionalevent_from_errorutility function. - Sentry now has built-in support to bind a
Hubto aFuture. - Sentry can now be extended with
Integrations. - The
ClientInitGuard,FutureandScopeGuardstructs andapply_defaults,capture_error,event_from_error,with_integrationandparse_type_from_debugfunctions have been added to the root exports. - The
FutureExt,Integration,IntoBreadcrumbs,IntoDsn,TransportandTransportFactorytraits are now exported. - The
typesmodule now re-exportssentry-types.
Deprecations:
- The
internalsmodule is deprecated. Pleaseuseitems from the crate root or thetypesmodule instead. - All the feature flags have been renamed, the old names are still available but will be removed in the future.
- Fix potential segfault with
with_debug_meta(#211). - Fix panic when running inside of tokio (#186).
-
Bump the minimum required Rust version to 1.40.0.
-
Upgrade most dependencies to their current versions (#183):
env_logger 0.7reqwest 0.10error-chain 0.12url 2.1sentry-types 0.14
-
Remove the
logandenv_loggerintegration from default features (#183). -
Fix backtraces for newer
failureandbacktraceversions (#183). -
Fix compilation of the
with_rust_infofeature (#183). -
Add "panics" sections to functions that may panic (#174).
-
Document all feature flags consistently.
- Upgrade findshlibs (#153)
- Bump the minimum required Rust version to 1.34.0.
- Fix potentially broken payloads when using the
curltransport (#152). - Report the SDK as
sentry.rustfor analytics (#142).
- Fix backtraces with inline frames in newer Rust versions (#141).
- Added a feature flag to disable the default sentry features in sentry-actix. (#139)
- Added
with_rustlsandwith_native_tlsfeatures to control SSL in the default reqwest transport. (#137)
- Added support for passing custom reqwest clients/curl handles to the transport (#130)
- Correct dependency bump for sentry types.
- Upgraded to newer version of the internal sentry types crate.
- Fixed a potential issue where an event might have been dropped if it was sent right after the curl transport was created.
- Fixed an issue where turning off the http transports would cause a compile error.
- Added support for reading
SENTRY_ENVIRONMENTandSENTRY_RELEASEenvironment variables. - Added support for panicking with failure errors.
- Added
attach_stacktracesconfiguration option to logging integration - Fixed a bug where
emit_breadcrumbswas incorrectly handled. - Restructured the transport system. You can now disable the builtin HTTP reqwest based transport or opt for the curl transport.
- Fixed a potential issue where an event might have been dropped if it was sent right after the reqwest transport was created.
- Added support for server side symbolication for linux platforms.
Breaking Change: This release requires Rust 1.31 or newer.
- Upgrade the logger integration to
env_logger:0.6 - Support debug identifiers of loaded images on Linux (#114)
- Update
sentry-typesto the latest version - Fix
log::log_enabled!when log integration is active
- Resolve a memory leak in the actix integration.
- Fix an issue where dropping a scope guard for a non active hub resulted in a panic.
- Added support for the new failure
Fail::name - Improved support for actix failure based error
- Added
RefUnwindSafeforClientOptions - Remove the never supported
reposoption.
- Upgrade reqwest to 0.9
- Add support for debug logging through the log crate (
with_debug_to_logfeature) - Added debug log for when events are dropped in the transport.
- Fix compilation error in
sentry-actix(#87)
- Added
sentry::with_scope - Updated the sentry types to 0.8.x
- Streamline types with other SDKs. Most notabe changes:
Event::idhas been renamed toEvent::event_idEvent::exceptionshas been renamed toEvent::exception- Some collections are now wrapped in
Values
- Added more debug logs.
- Removed
drain_events. Events are now drained by callingClient::closeor on the transport onTransport::shutdown. - Removed
Hub::add_event_processor. This was replaced byScope::add_event_processorwhich is easier to use (only returns factory function)/ - Added various new client configuration values.
- Unified option handling
This is likely to be the final API before 1.0
- Remove null byte terminator from device model context (#33)
- Fix
unamebreaking builds on Windows (#32) - Fix the crate documentation link (#31)