Round 336: Perf ext, Strace ext, Ltrace ext, Sysdig ext, Bpftrace ext (20 commands)

ober

04a0e764c0d92a9a9678b564631e766f59993116

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 3a77b69..d3e022c 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 336 — Perf ext, Strace ext, Ltrace ext, Sysdig ext, Bpftrace ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| perf-annotate | :orange_circle: | Perf: annotate source with profiling data |
+| perf-diff | :orange_circle: | Perf: diff between perf.data files |
+| perf-script | :orange_circle: | Perf: script output from perf.data |
+| perf-bench | :orange_circle: | Perf: run benchmark suite |
+| strace-process | :orange_circle: | Strace: trace a process by PID |
+| strace-syscall | :orange_circle: | Strace: filter by syscall |
+| strace-summary | :orange_circle: | Strace: syscall summary |
+| strace-follow | :orange_circle: | Strace: follow child processes |
+| ltrace-process | :orange_circle: | Ltrace: trace a process |
+| ltrace-demangle | :orange_circle: | Ltrace: demangle C++ symbols |
+| ltrace-summary | :orange_circle: | Ltrace: library call summary |
+| ltrace-count | :orange_circle: | Ltrace: count library calls |
+| sysdig-capture | :orange_circle: | Sysdig: capture events to file |
+| sysdig-chisel | :orange_circle: | Sysdig: run a chisel |
+| sysdig-filter | :orange_circle: | Sysdig: apply event filter |
+| sysdig-live | :orange_circle: | Sysdig: live event stream |
+| bpftrace-probe | :orange_circle: | BPFtrace: attach a probe |
+| bpftrace-script | :orange_circle: | BPFtrace: run a script |
+| bpftrace-histogram | :orange_circle: | BPFtrace: generate histogram |
+| bpftrace-oneliners | :orange_circle: | BPFtrace: common one-liners |
+
 ### Round 335 — Hwinfo ext, Inxi ext, Lstopo ext, Likwid ext, Mcelog ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index ed77f19..0390c67 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24835,4 +24835,55 @@
 
 (def (cmd-mcelog-triggers app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Mcelog: showing trigger scripts")))
\ No newline at end of file
+    (echo-message! echo "Mcelog: showing trigger scripts")))
+;;; Round 336 — Ltrace ext, Sysdig ext, Bpftrace ext (batch 2)
+
+(def (cmd-ltrace-summary app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ltrace: showing library call summary")))
+
+(def (cmd-ltrace-count app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ltrace: counting library calls")))
+
+(def (cmd-sysdig-capture app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Sysdig capture file: "
+      (lambda (file)
+        (echo-message! echo (str "Sysdig: capturing to " file))))))
+
+(def (cmd-sysdig-chisel app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Sysdig chisel name: "
+      (lambda (chisel)
+        (echo-message! echo (str "Sysdig: running chisel " chisel))))))
+
+(def (cmd-sysdig-filter app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Sysdig filter: "
+      (lambda (filter)
+        (echo-message! echo (str "Sysdig: applying filter " filter))))))
+
+(def (cmd-sysdig-live app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Sysdig: live system event stream")))
+
+(def (cmd-bpftrace-probe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "BPFtrace probe: "
+      (lambda (probe)
+        (echo-message! echo (str "BPFtrace: attaching probe " probe))))))
+
+(def (cmd-bpftrace-script app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "BPFtrace script file: "
+      (lambda (file)
+        (echo-message! echo (str "BPFtrace: running script " file))))))
+
+(def (cmd-bpftrace-histogram app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "BPFtrace: generating histogram")))
+
+(def (cmd-bpftrace-oneliners app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "BPFtrace: showing common one-liners")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index c45a8cd..1edace5 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25534,3 +25534,51 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Lstopo: text topology output")))
 
+
+;;; Round 336 — Perf ext, Strace ext, Ltrace ext, Sysdig ext, Bpftrace ext (batch 1)
+
+(def (cmd-perf-annotate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf: annotating source with profiling data")))
+
+(def (cmd-perf-diff app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf: diff between two perf.data files")))
+
+(def (cmd-perf-script app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf: script output from perf.data")))
+
+(def (cmd-perf-bench app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf: running benchmark suite")))
+
+(def (cmd-strace-process app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Strace PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Strace: tracing process " pid))))))
+
+(def (cmd-strace-syscall app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Strace syscall filter: "
+      (lambda (filter)
+        (echo-message! echo (str "Strace: filtering syscall " filter))))))
+
+(def (cmd-strace-summary app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Strace: showing syscall summary")))
+
+(def (cmd-strace-follow app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Strace: following child processes")))
+
+(def (cmd-ltrace-process app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Ltrace PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Ltrace: tracing process " pid))))))
+
+(def (cmd-ltrace-demangle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ltrace: demangling C++ symbols")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 51a6bb4..2b43c2a 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8474,4 +8474,26 @@
   (register-command! 'mcelog-daemon cmd-mcelog-daemon)
   (register-command! 'mcelog-client cmd-mcelog-client)
   (register-command! 'mcelog-triggers cmd-mcelog-triggers)
+
+  ;; Round 336 — Perf ext, Strace ext, Ltrace ext, Sysdig ext, Bpftrace ext
+  (register-command! 'perf-annotate cmd-perf-annotate)
+  (register-command! 'perf-diff cmd-perf-diff)
+  (register-command! 'perf-script cmd-perf-script)
+  (register-command! 'perf-bench cmd-perf-bench)
+  (register-command! 'strace-process cmd-strace-process)
+  (register-command! 'strace-syscall cmd-strace-syscall)
+  (register-command! 'strace-summary cmd-strace-summary)
+  (register-command! 'strace-follow cmd-strace-follow)
+  (register-command! 'ltrace-process cmd-ltrace-process)
+  (register-command! 'ltrace-demangle cmd-ltrace-demangle)
+  (register-command! 'ltrace-summary cmd-ltrace-summary)
+  (register-command! 'ltrace-count cmd-ltrace-count)
+  (register-command! 'sysdig-capture cmd-sysdig-capture)
+  (register-command! 'sysdig-chisel cmd-sysdig-chisel)
+  (register-command! 'sysdig-filter cmd-sysdig-filter)
+  (register-command! 'sysdig-live cmd-sysdig-live)
+  (register-command! 'bpftrace-probe cmd-bpftrace-probe)
+  (register-command! 'bpftrace-script cmd-bpftrace-script)
+  (register-command! 'bpftrace-histogram cmd-bpftrace-histogram)
+  (register-command! 'bpftrace-oneliners cmd-bpftrace-oneliners)
 )