Skip to content

chore(profiling): native py3.15 ABI and test install subdirs - #19269

Draft
vlad-scherbich wants to merge 2 commits into
vlad/315-peripheral-compatfrom
vlad/ddtracepy-315-profiling-native
Draft

chore(profiling): native py3.15 ABI and test install subdirs#19269
vlad-scherbich wants to merge 2 commits into
vlad/315-peripheral-compatfrom
vlad/ddtracepy-315-profiling-native

Conversation

@vlad-scherbich

@vlad-scherbich vlad-scherbich commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

prev: #19267 | next: #19270

Summary

Native profiling C++/Rust ABI for 3.15 and INSTALL_SUBDIR for native wrapper tests (formerly #19268). Enables building/stack-testing natives on 3.15; does not wire CI matrix or lift the packaging gate.

Layer This PR
Compiled native headers, echion layout, test install subdirs
Armed
Observable natives compile/link on 3.15

Test plan

Tracker

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Pipelines  Tests

⚠️ Warnings

🚦 2 Pipeline jobs failed

DataDog/apm-reliability/dd-trace-py | download win_arm64 wheels

View in Datadog · View in GitLab

DataDog/apm-reliability/dd-trace-py | prechecks

View in Datadog · View in GitLab

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 0fb56d5 | Docs | View more details | Give us feedback!

@vlad-scherbich
vlad-scherbich force-pushed the vlad/profiling-native-test-install-subdir branch from 25b13ee to 1bbb7e3 Compare August 21, 2026 04:53
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-native branch from 9a117a3 to 188e8e1 Compare August 21, 2026 04:53
@vlad-scherbich
vlad-scherbich force-pushed the vlad/profiling-native-test-install-subdir branch from 1bbb7e3 to d9bcea5 Compare August 21, 2026 08:43
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-native branch from 188e8e1 to e6e1f72 Compare August 21, 2026 08:44
@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Circular import analysis

⚠️ Existing circular imports

There are 3 circular imports that already exist on the base branch and have not been changed by this PR.

ddtrace.llmobs -> ddtrace.llmobs._evaluators -> ddtrace.llmobs._evaluators.format -> ddtrace.llmobs._experiment -> ddtrace.llmobs
ddtrace.errortracking._handled_exceptions.bytecode_injector -> ddtrace.errortracking._handled_exceptions.callbacks -> ddtrace.errortracking._handled_exceptions.collector -> ddtrace.errortracking._handled_exceptions.bytecode_reporting -> ddtrace.errortracking._handled_exceptions.bytecode_injector
ddtrace.appsec._asm_request_context -> ddtrace.appsec._iast._iast_request_context_base -> ddtrace.appsec._iast._iast_env -> ddtrace.appsec._iast.reporter -> ddtrace.appsec._exploit_prevention.stack_traces -> ddtrace.appsec._asm_request_context

@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Dependency direction analysis

⚠️ Existing dependency direction violations

There are 250 dependency direction violations that already exist on the base branch and have not been changed by this PR.

Show existing violations (showing 5 of 250 highest severity)
ddtrace.internal.tracemethods -×-> ddtrace.trace  (internal-core -> product:tracing, score=135)
ddtrace.internal.ci_visibility.git_client -×-> ddtrace.trace  (product:ci_visibility -> product:tracing, score=133)
ddtrace.internal.ci_visibility.filters -×-> ddtrace.trace  (product:ci_visibility -> product:tracing, score=133)
ddtrace.debugging._signal.tracing -×-> ddtrace.trace  (product:debugging -> product:tracing, score=133)
ddtrace.llmobs._integrations.llama_index -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=133)

To see all violations, download the layers-base.json and layers-pr.json artifacts from this CI job and run:

uv run --script scripts/import-analysis/layers.py compare layers-base.json layers-pr.json

@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Codeowners resolved as

Resolved from the full PR diff against vlad/profiling-native-test-install-subdir using the target branch CODEOWNERS file.
CODEOWNERS team requests not listed below are not required by the current file set.

ddtrace/internal/datadog/profiling/cmake/FindLibNative.cmake            @DataDog/profiling-python
ddtrace/internal/datadog/profiling/cmake/NativeHeaders.cmake            @DataDog/profiling-python
ddtrace/internal/datadog/profiling/dd_wrapper/src/sample.cpp            @DataDog/profiling-python
ddtrace/internal/datadog/profiling/ddup/CMakeLists.txt                  @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/CMakeLists.txt                 @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/echion/echion/cpython/tasks.h  @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/fuzz/CMakeLists.txt            @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/src/echion/frame.cc            @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/test/CMakeLists.txt            @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/test/test_cpython_layout_contracts.cpp  @DataDog/profiling-python
ddtrace/internal/datadog/profiling/stack/test/test_frame_state_315.cpp  @DataDog/profiling-python

vlad-scherbich and others added 2 commits August 21, 2026 21:41
Allows version-specific native test binaries to install into a subdir
of the shared test/ directory (e.g. INSTALL_SUBDIR py315 -> test/py315/).

build_base_venvs runs in parallel across all Python versions and GitLab
merges all artifacts into a single directory for downstream jobs. Without
isolation a binary compiled for pyX.Y (RPATH -> libpythonX.Y) lands in
the shared test/ directory and crashes when the pytest gtest plugin tries
to run it against a different Python runtime.

Callers that do not pass INSTALL_SUBDIR are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-native branch from e6e1f72 to 0fb56d5 Compare August 21, 2026 18:43
@vlad-scherbich
vlad-scherbich changed the base branch from vlad/profiling-native-test-install-subdir to vlad/315-peripheral-compat August 21, 2026 18:44
@vlad-scherbich vlad-scherbich changed the title chore(profiling): native C++/Rust py3.15 ABI support chore(profiling): native py3.15 ABI and test install subdirs Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant