← 输入框|github.com|刷新
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
8c0c242
Align profiler bindings and capability checks with Python 3.15 (#9340)
youknowdot Oct 25, 2026
db48780
Collect cycles through sets, frozensets and set iterators (#9343)
1ndahous3 Oct 25, 2026
65ee7ba
Align Python 3.15 bytecode tooling (#9344)
youknowdot Oct 25, 2026
a8ad41e
Specify exactly where package.json files are located (#9345)
fanninpm Oct 25, 2026
2efa217
Restore canonical traceback Levenshtein coverage (#9346)
youknowdot Oct 25, 2026
9bd84b2
Handle full-width operands in the None-return scanner (#9347)
youknowdot Oct 25, 2026
46c0663
build(deps): bump reviewdog/action-actionlint from 1.80.2 to 1.80.4 (…
dependabot[bot] Oct 25, 2026
ef6e2db
build(deps): bump mach2 from 0.4.3 to 0.7.0 (#9349)
dependabot[bot] Oct 25, 2026
0cb9f13
build(deps): bump memmap2 from 0.9.11 to 0.9.12 (#9350)
dependabot[bot] Oct 25, 2026
cb92931
build(deps): bump @xterm/addon-fit from 0.10.0 to 0.11.0 in /wasm/dem…
dependabot[bot] Oct 25, 2026
b7bebe6
build(deps): bump object from 0.37.3 to 0.40.0 (#9351)
dependabot[bot] Oct 25, 2026
bb08d9a
build(deps): bump xterm-readline from 1.1.2 to 1.3.1 in /wasm/demo (#…
dependabot[bot] Oct 25, 2026
636a967
build(deps-dev): bump mini-css-extract-plugin in /wasm/demo (#9353)
dependabot[bot] Oct 25, 2026
901c014
build(deps-dev): bump css-loader from 7.1.2 to 7.1.5 in /wasm/demo (#…
dependabot[bot] Oct 25, 2026
901eb88
Add canonical sampling profiler CLI for offline replay (#9358)
youknowdot Oct 25, 2026
0f74d1c
ci: remove OSCCA pull request triage workflow (#9361)
moreal Oct 25, 2026
16413a9
bench: cover type cache invalidation
moreal Aug 30, 2026
293a7e8
perf: invalidate type cache by version tag
moreal Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,8 @@ updates:
cooldown:
default-days: 7
- package-ecosystem: npm
directory: /
directories:
- "wasm/*"
schedule:
interval: weekly
cooldown:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@ jobs:
components: rustfmt

- name: actionlint
uses: reviewdog/action-actionlint@3cbf14efd750961dba35fccbf00f9e14028cb1f5 # v1.80.2
uses: reviewdog/action-actionlint@419a49378266e892f40c773b4f2fc6de9aa87499 # v1.80.4

- name: zizmor
uses: zizmorcore/zizmor-action@85b2b9fb8e3325e7a23d7d0a9d7ba5ae0f999e3e # v0.7.1
Expand Down
70 changes: 0 additions & 70 deletions .github/workflows/oscca-pr.yml

This file was deleted.

3 changes: 0 additions & 3 deletions .github/zizmor.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
rules:
dangerous-triggers:
ignore:
# pull_request_target is needed to label and assign PRs from forks with issues: write.
# The workflow does not check out or execute pull request code.
- oscca-pr.yml:3
# workflow_run is needed to post a PR comment from a fork's run, which is
# handed a read-only token however the triggering workflow is configured.
# The workflow does not check out or execute pull request code: it reads
Expand Down
25 changes: 21 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ log = "0.4.30"
lz4_flex = "0.14"
nix = { version = "0.31", features = ["fs", "user", "process", "term", "time", "signal", "ioctl", "socket", "sched", "zerocopy", "dir", "hostname", "net", "poll"] }
mac_address = "1.1.3"
mach2 = "0.7.0"
malachite-bigint = "0.14.0"
malachite-q = "0.14.0"
malachite-base = "0.14.0"
Expand All @@ -271,6 +272,7 @@ num-integer = "0.1.46"
num-traits = "0.2"
num_cpus = "1.17.0"
num_enum = { version = "0.7", default-features = false }
object = { version = "0.40.0", default-features = false, features = ["read_core", "elf", "macho", "pe", "std", "unaligned"] }
openssl = "0.10.80"
openssl-sys = "0.9.110"
optional = "0.5"
Expand Down
73 changes: 73 additions & 0 deletions Lib/profiling/sampling/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
"""Run the sampling profiler from the command line."""

import sys

MACOS_PERMISSION_ERROR = """\
🔒 Permission Error: Unable to access process memory on macOS

Tachyon needs elevated permissions to profile processes. Try one of these solutions:

1. Try running again with elevated permissions by running 'sudo -E !!'.

2. If targeting system Python processes:
Note: Apple's System Integrity Protection (SIP) may block access to system
Python binaries. Consider using a user-installed Python instead.
"""

LINUX_PERMISSION_ERROR = """
🔒 Tachyon was unable to access process memory. This could be because tachyon
has insufficient privileges (the required capability is CAP_SYS_PTRACE).
Unprivileged processes cannot trace processes that they cannot send signals
to or those running set-user-ID/set-group-ID programs, for security reasons.

If your uid matches the uid of the target process you want to analyze, you
can do one of the following to get 'ptrace' scope permissions:

* If you are running inside a Docker container, you need to make sure you
start the container using the '--cap-add=SYS_PTRACE' or '--privileged'
command line arguments. Notice that this may not be enough if you are not
running as 'root' inside the Docker container as you may need to disable
hardening (see next points).

* Try running again with elevated permissions by running 'sudo -E !!'.

* You can disable kernel hardening for the current session temporarily (until
a reboot happens) by running 'echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope'.
"""

WINDOWS_PERMISSION_ERROR = """
🔒 Tachyon requires administrator rights to access process memory on Windows.
Please run your command prompt as Administrator and try again.
"""

GENERIC_PERMISSION_ERROR = """
🔒 Tachyon was unable to access the target process due to operating
system restrictions or missing privileges.
"""

from .cli import main
from .errors import SamplingUnknownProcessError, SamplingModuleNotFoundError, SamplingScriptNotFoundError

def handle_permission_error():
"""Handle PermissionError by displaying appropriate error message."""
if sys.platform == "darwin":
print(MACOS_PERMISSION_ERROR, file=sys.stderr)
elif sys.platform.startswith("linux"):
print(LINUX_PERMISSION_ERROR, file=sys.stderr)
elif sys.platform.startswith("win"):
print(WINDOWS_PERMISSION_ERROR, file=sys.stderr)
else:
print(GENERIC_PERMISSION_ERROR, file=sys.stderr)
sys.exit(1)

if __name__ == '__main__':
try:
main()
except PermissionError:
handle_permission_error()
except SamplingUnknownProcessError as err:
print(f"Tachyon cannot find the process: {err}", file=sys.stderr)
sys.exit(1)
except (SamplingModuleNotFoundError, SamplingScriptNotFoundError) as err:
print(f"Tachyon cannot find the target: {err}", file=sys.stderr)
sys.exit(1)
Loading
Loading