Repository navigation
Make sess pure R while retaining arf Interactive sessions - #1830
Conversation
4f9bdec to
d9c12c5
Compare
|
Completed comprehensive Interactive verification on macOS arm64 with R 4.6.1 and arf 0.5.3, including both managed headless and adopted terminal sessions.
Testing found and fixed an additional real-terminal adoption regression in 42b4697: parameter-free R task notifications encode their empty list as All checks passed at final commit 42b4697: CI run (Linux, macOS, Windows, build and lint). Linux/macOS CI exercises the real arf runtime; Windows skips that suite and verifies sess and ordinary extension behavior. Remaining limits are documented in the PR: notebook stdin/debugger prompts are unavailable, arbitrary terminal output cannot be subscribed to, and Remote SSH lifecycle has not been manually verified. Existing dependencies may still contain native code; sess itself is compiler-free. |
vscode-R's installer could replace a failed bundled sess installation with a separately published R-universe package, whose source snapshot may differ from the extension's bundle. Following #1819 and #1830, installation now uses the bundled pure-R package exclusively. Missing Imports still use `install.packages()` with the existing repository and library selection. Dependency errors propagate, a failed bundled `R CMD INSTALL` stops directly, and the shared fresh-R verifier checks the exact bundled source revision alongside the existing API/load checks for ordinary terminals and private Interactive runtimes. Removes fallback-only repository discovery, binary compatibility logic, archive fixtures, and tests; updates current documentation and messages. Standalone R-universe installation instructions, badge, `bootstrap.R`, source stamping, and DESCRIPTION normalization identity tests remain intact. Repository propagation, library placement, and runtime caching are unchanged.
Installing bundled sess currently requires a C compiler because the experimental Interactive console bridge lives in the package. This removes that bridge and makes sess a pure R package, implementing approach 2 from #1829 while retaining Interactive through arf.
Managed headless arf sessions retain streaming console output, interruption, queues, history/reconnection, workspace inspection, editor requests, rich tables, HTML, and JGD or standard plots. Execution uses arf
user_inputto avoid its unbounded evaluation-output capture. Rich events use authenticated sess RPC with small stdout references to preserve their order relative to console output; a stderr fence drains both pipes before completion. Buffer limits and fork guards protect the transport.Attached arf sessions retain existing objects, return notebook console output on completion, and deliver rich events through sess RPC. Disposal leaves the adopted R process alive and restores its runtime hooks. Empty R notification parameters are accepted so real terminal task callbacks keep the transport connected. Bootstrap and notebook execution respect arf's visible IPC approval policy.
The installer checks the pure R Interactive API contract. CI installs arf 0.5.3 for Linux/macOS runtime tests. CI fixture fixes retain R discovery when tmux/standalone Node are excluded from PATH, and Windows process ancestry lookup allows cold PowerShell/CIM startup to complete.
Compatibility and limits:
Validation on macOS arm64 with R 4.6.1 and arf 0.5.3:
Remote SSH lifecycle behavior has not been manually verified. Latest cross-platform CI results are linked in the validation comment.
Closes #1829.