datadog 2.35.0 → 2.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +85 -1
  3. data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +5 -12
  4. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +71 -31
  5. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  6. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +18 -4
  7. data/ext/datadog_profiling_native_extension/collectors_stack.c +37 -18
  8. data/ext/datadog_profiling_native_extension/collectors_stack.h +8 -2
  9. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +596 -341
  10. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +11 -7
  11. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +7 -8
  12. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +0 -12
  13. data/ext/datadog_profiling_native_extension/extconf.rb +13 -2
  14. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +4 -43
  15. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +15 -47
  16. data/ext/datadog_profiling_native_extension/heap_recorder.c +44 -26
  17. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +14 -35
  18. data/ext/datadog_profiling_native_extension/profiling.c +41 -4
  19. data/ext/datadog_profiling_native_extension/ruby_helpers.c +40 -34
  20. data/ext/datadog_profiling_native_extension/stack_recorder.c +24 -3
  21. data/ext/datadog_profiling_native_extension/stack_recorder.h +1 -0
  22. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +4 -2
  23. data/ext/libdatadog_api/datadog_ruby_common.c +7 -8
  24. data/ext/libdatadog_api/datadog_ruby_common.h +0 -12
  25. data/ext/libdatadog_api/di.c +76 -0
  26. data/ext/libdatadog_api/extconf.rb +6 -0
  27. data/ext/libdatadog_extconf_helpers.rb +1 -1
  28. data/lib/datadog/ai_guard/api_client.rb +6 -4
  29. data/lib/datadog/appsec/api_security/route_extractor.rb +13 -4
  30. data/lib/datadog/appsec/component.rb +1 -1
  31. data/lib/datadog/appsec/configuration.rb +13 -0
  32. data/lib/datadog/appsec/context.rb +4 -2
  33. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +37 -4
  34. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +59 -4
  35. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +59 -5
  36. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +64 -19
  37. data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -0
  38. data/lib/datadog/appsec/contrib/rack/buffered_input.rb +83 -0
  39. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +41 -3
  40. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +24 -7
  41. data/lib/datadog/appsec/contrib/rack/input_peeker.rb +79 -0
  42. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +21 -0
  43. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +35 -1
  44. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +17 -1
  45. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +60 -7
  46. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +24 -3
  47. data/lib/datadog/appsec/default_header_tags.rb +10 -6
  48. data/lib/datadog/appsec/ext.rb +1 -0
  49. data/lib/datadog/appsec/metrics/collector.rb +18 -1
  50. data/lib/datadog/appsec/metrics/exporter.rb +9 -3
  51. data/lib/datadog/appsec/remote.rb +9 -3
  52. data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +176 -0
  53. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +378 -0
  54. data/lib/datadog/appsec/route_normalizer/route_text.rb +57 -0
  55. data/lib/datadog/appsec/route_normalizer.rb +80 -0
  56. data/lib/datadog/appsec/utils/http/body_reader.rb +61 -0
  57. data/lib/datadog/core/configuration/components.rb +83 -2
  58. data/lib/datadog/core/configuration/components_state.rb +6 -1
  59. data/lib/datadog/core/configuration/settings.rb +1 -5
  60. data/lib/datadog/core/configuration/supported_configurations.rb +4 -0
  61. data/lib/datadog/core/evp.rb +11 -0
  62. data/lib/datadog/core/remote/client/capabilities.rb +34 -7
  63. data/lib/datadog/core/remote/component.rb +1 -1
  64. data/lib/datadog/core/telemetry/event/app_started.rb +8 -22
  65. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +1 -1
  66. data/lib/datadog/core/utils/forking.rb +3 -1
  67. data/lib/datadog/core/utils/spawn_monkey_patch.rb +3 -1
  68. data/lib/datadog/core.rb +3 -0
  69. data/lib/datadog/di/base.rb +7 -2
  70. data/lib/datadog/di/code_tracker.rb +5 -2
  71. data/lib/datadog/di/component.rb +110 -36
  72. data/lib/datadog/di/error.rb +10 -0
  73. data/lib/datadog/di/fatal_exceptions.rb +26 -0
  74. data/lib/datadog/di/instrumenter.rb +381 -165
  75. data/lib/datadog/di/probe.rb +14 -0
  76. data/lib/datadog/di/probe_file_loader.rb +8 -3
  77. data/lib/datadog/di/probe_manager.rb +67 -9
  78. data/lib/datadog/di/probe_notification_builder.rb +4 -1
  79. data/lib/datadog/di/probe_notifier_worker.rb +52 -32
  80. data/lib/datadog/di/redactor.rb +16 -1
  81. data/lib/datadog/di/remote.rb +175 -14
  82. data/lib/datadog/di/serializer.rb +12 -5
  83. data/lib/datadog/di/transport/input.rb +8 -4
  84. data/lib/datadog/di.rb +63 -0
  85. data/lib/datadog/error_tracking/collector.rb +2 -1
  86. data/lib/datadog/error_tracking/component.rb +2 -2
  87. data/lib/datadog/kit/appsec/events/v2.rb +60 -2
  88. data/lib/datadog/kit/tracing/method_tracer.rb +4 -1
  89. data/lib/datadog/open_feature/component.rb +29 -6
  90. data/lib/datadog/open_feature/configuration.rb +8 -0
  91. data/lib/datadog/open_feature/ext.rb +2 -0
  92. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +286 -0
  93. data/lib/datadog/open_feature/flag_evaluation/writer.rb +433 -0
  94. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +101 -0
  95. data/lib/datadog/open_feature/hooks/{flag_eval_hook.rb → flag_eval_metrics_hook.rb} +1 -1
  96. data/lib/datadog/open_feature/native_evaluator.rb +22 -0
  97. data/lib/datadog/open_feature/provider.rb +59 -27
  98. data/lib/datadog/open_feature/transport.rb +55 -1
  99. data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +5 -12
  100. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +4 -11
  101. data/lib/datadog/opentelemetry/sdk/propagator.rb +9 -3
  102. data/lib/datadog/opentelemetry/sdk/span_processor.rb +4 -1
  103. data/lib/datadog/opentelemetry/sdk.rb +19 -0
  104. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +1 -1
  105. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -3
  106. data/lib/datadog/profiling/collectors/thread_context.rb +1 -0
  107. data/lib/datadog/profiling/component.rb +13 -15
  108. data/lib/datadog/profiling/ext/dir_monkey_patches.rb +3 -3
  109. data/lib/datadog/ruby_version.rb +25 -0
  110. data/lib/datadog/symbol_database/component.rb +453 -128
  111. data/lib/datadog/symbol_database/configuration.rb +12 -4
  112. data/lib/datadog/symbol_database/extensions.rb +19 -0
  113. data/lib/datadog/symbol_database/extractor.rb +326 -150
  114. data/lib/datadog/symbol_database/file_hash.rb +3 -1
  115. data/lib/datadog/symbol_database/remote.rb +8 -3
  116. data/lib/datadog/symbol_database/scope_batcher.rb +7 -3
  117. data/lib/datadog/symbol_database/uploader.rb +9 -2
  118. data/lib/datadog/symbol_database.rb +22 -0
  119. data/lib/datadog/tracing/configuration/ext.rb +13 -0
  120. data/lib/datadog/tracing/configuration/settings.rb +17 -0
  121. data/lib/datadog/tracing/contrib/configuration/resolver.rb +7 -0
  122. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +2 -0
  123. data/lib/datadog/tracing/contrib/grpc.rb +1 -0
  124. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +2 -0
  125. data/lib/datadog/tracing/contrib/http.rb +1 -0
  126. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +2 -0
  127. data/lib/datadog/tracing/contrib/karafka.rb +1 -0
  128. data/lib/datadog/tracing/contrib/rack/middlewares.rb +3 -1
  129. data/lib/datadog/tracing/contrib/rack/route_inference.rb +3 -1
  130. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +2 -0
  131. data/lib/datadog/tracing/contrib/sidekiq.rb +1 -0
  132. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +2 -0
  133. data/lib/datadog/tracing/contrib/waterdrop.rb +1 -0
  134. data/lib/datadog/tracing/distributed/baggage.rb +2 -1
  135. data/lib/datadog/tracing/distributed/propagation.rb +33 -1
  136. data/lib/datadog/tracing/distributed/trace_context.rb +11 -2
  137. data/lib/datadog/tracing/ext.rb +9 -0
  138. data/lib/datadog/tracing/remote.rb +34 -3
  139. data/lib/datadog/tracing/trace_digest.rb +7 -0
  140. data/lib/datadog/tracing/trace_operation.rb +4 -1
  141. data/lib/datadog/tracing/tracer.rb +1 -0
  142. data/lib/datadog/version.rb +1 -1
  143. data/lib/datadog.rb +5 -1
  144. metadata +22 -6
@@ -387,6 +387,7 @@ module Datadog
387
387
  origin: digest.trace_origin,
388
388
  parent_span_id: digest.span_id,
389
389
  sampling_priority: sampling_priority,
390
+ span_links: digest.span_links,
390
391
  # Distributed tags are just regular trace tags with special meaning to Datadog
391
392
  tags: digest.trace_distributed_tags,
392
393
  trace_state: digest.trace_state,
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 35
6
+ MINOR = 37
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
data/lib/datadog.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Load core first so shared helpers (e.g. Datadog::RubyVersion) are available at require-time
4
+ require_relative 'datadog/core'
5
+
3
6
  # Load tracing
4
7
  require_relative 'datadog/tracing'
5
8
  require_relative 'datadog/tracing/contrib'
@@ -9,6 +12,7 @@ require_relative 'datadog/profiling'
9
12
  require_relative 'datadog/ai_guard'
10
13
  require_relative 'datadog/appsec'
11
14
  require_relative 'datadog/di'
15
+ require_relative 'datadog/symbol_database/extensions'
12
16
  require_relative 'datadog/data_streams'
13
17
  require_relative 'datadog/open_feature'
14
18
 
@@ -16,7 +20,7 @@ require_relative 'datadog/open_feature'
16
20
  # trace point. Activate DI automatically on supported Ruby versions but
17
21
  # always load its settings so that, for example, turning DI off when
18
22
  # we are on Ruby 2.5 does not produce exceptions.
19
- require_relative 'datadog/di/boot' if RUBY_VERSION >= '2.6' && RUBY_ENGINE != 'jruby'
23
+ require_relative 'datadog/di/boot' if Datadog::RubyVersion.is?('>= 2.6') && RUBY_ENGINE != 'jruby'
20
24
 
21
25
  require_relative 'datadog/error_tracking'
22
26
  require_relative 'datadog/kit'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.35.0
4
+ version: 2.37.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
@@ -63,14 +63,14 @@ dependencies:
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: 33.0.0.1.0
66
+ version: 36.0.0.1.0
67
67
  type: :runtime
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: 33.0.0.1.0
73
+ version: 36.0.0.1.0
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: logger
76
76
  requirement: !ruby/object:Gem::Requirement
@@ -265,10 +265,12 @@ files:
265
265
  - lib/datadog/appsec/contrib/graphql/integration.rb
266
266
  - lib/datadog/appsec/contrib/graphql/patcher.rb
267
267
  - lib/datadog/appsec/contrib/integration.rb
268
+ - lib/datadog/appsec/contrib/rack/buffered_input.rb
268
269
  - lib/datadog/appsec/contrib/rack/ext.rb
269
270
  - lib/datadog/appsec/contrib/rack/gateway/request.rb
270
271
  - lib/datadog/appsec/contrib/rack/gateway/response.rb
271
272
  - lib/datadog/appsec/contrib/rack/gateway/watcher.rb
273
+ - lib/datadog/appsec/contrib/rack/input_peeker.rb
272
274
  - lib/datadog/appsec/contrib/rack/integration.rb
273
275
  - lib/datadog/appsec/contrib/rack/patcher.rb
274
276
  - lib/datadog/appsec/contrib/rack/request_body_middleware.rb
@@ -314,6 +316,10 @@ files:
314
316
  - lib/datadog/appsec/rate_limiter.rb
315
317
  - lib/datadog/appsec/remote.rb
316
318
  - lib/datadog/appsec/response.rb
319
+ - lib/datadog/appsec/route_normalizer.rb
320
+ - lib/datadog/appsec/route_normalizer/rails_route_pattern.rb
321
+ - lib/datadog/appsec/route_normalizer/route_pattern.rb
322
+ - lib/datadog/appsec/route_normalizer/route_text.rb
317
323
  - lib/datadog/appsec/sample_rate.rb
318
324
  - lib/datadog/appsec/security_engine.rb
319
325
  - lib/datadog/appsec/security_engine/engine.rb
@@ -326,6 +332,7 @@ files:
326
332
  - lib/datadog/appsec/utils/hash_coercion.rb
327
333
  - lib/datadog/appsec/utils/http.rb
328
334
  - lib/datadog/appsec/utils/http/body.rb
335
+ - lib/datadog/appsec/utils/http/body_reader.rb
329
336
  - lib/datadog/appsec/utils/http/media_range.rb
330
337
  - lib/datadog/appsec/utils/http/media_type.rb
331
338
  - lib/datadog/appsec/utils/http/url_encoded.rb
@@ -378,6 +385,7 @@ files:
378
385
  - lib/datadog/core/environment/vm_cache.rb
379
386
  - lib/datadog/core/environment/yjit.rb
380
387
  - lib/datadog/core/error.rb
388
+ - lib/datadog/core/evp.rb
381
389
  - lib/datadog/core/extensions.rb
382
390
  - lib/datadog/core/feature_flags.rb
383
391
  - lib/datadog/core/git/ext.rb
@@ -525,6 +533,7 @@ files:
525
533
  - lib/datadog/di/el/expression.rb
526
534
  - lib/datadog/di/error.rb
527
535
  - lib/datadog/di/extensions.rb
536
+ - lib/datadog/di/fatal_exceptions.rb
528
537
  - lib/datadog/di/instrumenter.rb
529
538
  - lib/datadog/di/logger.rb
530
539
  - lib/datadog/di/preload.rb
@@ -570,7 +579,10 @@ files:
570
579
  - lib/datadog/open_feature/exposures/reporter.rb
571
580
  - lib/datadog/open_feature/exposures/worker.rb
572
581
  - lib/datadog/open_feature/ext.rb
573
- - lib/datadog/open_feature/hooks/flag_eval_hook.rb
582
+ - lib/datadog/open_feature/flag_evaluation/aggregator.rb
583
+ - lib/datadog/open_feature/flag_evaluation/writer.rb
584
+ - lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb
585
+ - lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb
574
586
  - lib/datadog/open_feature/metrics/flag_eval_metrics.rb
575
587
  - lib/datadog/open_feature/native_evaluator.rb
576
588
  - lib/datadog/open_feature/noop_evaluator.rb
@@ -586,6 +598,7 @@ files:
586
598
  - lib/datadog/opentelemetry/ext.rb
587
599
  - lib/datadog/opentelemetry/logs.rb
588
600
  - lib/datadog/opentelemetry/metrics.rb
601
+ - lib/datadog/opentelemetry/sdk.rb
589
602
  - lib/datadog/opentelemetry/sdk/configurator.rb
590
603
  - lib/datadog/opentelemetry/sdk/id_generator.rb
591
604
  - lib/datadog/opentelemetry/sdk/logs_exporter.rb
@@ -622,10 +635,12 @@ files:
622
635
  - lib/datadog/profiling/tasks/exec.rb
623
636
  - lib/datadog/profiling/tasks/help.rb
624
637
  - lib/datadog/profiling/tasks/setup.rb
638
+ - lib/datadog/ruby_version.rb
625
639
  - lib/datadog/single_step_instrument.rb
626
640
  - lib/datadog/symbol_database.rb
627
641
  - lib/datadog/symbol_database/component.rb
628
642
  - lib/datadog/symbol_database/configuration.rb
643
+ - lib/datadog/symbol_database/extensions.rb
629
644
  - lib/datadog/symbol_database/extractor.rb
630
645
  - lib/datadog/symbol_database/file_hash.rb
631
646
  - lib/datadog/symbol_database/logger.rb
@@ -1078,6 +1093,7 @@ files:
1078
1093
  - lib/datadog/tracing/distributed/propagation_policy.rb
1079
1094
  - lib/datadog/tracing/distributed/trace_context.rb
1080
1095
  - lib/datadog/tracing/event.rb
1096
+ - lib/datadog/tracing/ext.rb
1081
1097
  - lib/datadog/tracing/flush.rb
1082
1098
  - lib/datadog/tracing/metadata.rb
1083
1099
  - lib/datadog/tracing/metadata/analytics.rb
@@ -1137,8 +1153,8 @@ licenses:
1137
1153
  - Apache-2.0
1138
1154
  metadata:
1139
1155
  allowed_push_host: https://rubygems.org
1140
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.35.0/CHANGELOG.md
1141
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.35.0
1156
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.37.0/CHANGELOG.md
1157
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.37.0
1142
1158
  post_install_message: 'JRuby support in the datadog gem is deprecated. Details: https://dtdg.co/jruby-deprecation'
1143
1159
  rdoc_options: []
1144
1160
  require_paths: