Skip to content

Add IRkernel (R) to CI matrix#8

Closed
rgbkrk wants to merge 8 commits into
mainfrom
paris-v8
Closed

Add IRkernel (R) to CI matrix#8
rgbkrk wants to merge 8 commits into
mainfrom
paris-v8

Conversation

@rgbkrk

@rgbkrk rgbkrk commented Feb 25, 2026

Copy link
Copy Markdown
Member

Summary

Adds the R kernel (IRkernel) to the conformance test matrix.

  • Uses r-lib/actions/setup-r@v2 for R installation
  • Installs IRkernel from CRAN
  • Kernel name: ir

Test plan

  • IRkernel tests run in CI
  • Conformance matrix includes IR results

Tests the R kernel using IRkernel package.
@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

IRkernel::installspec() requires jupyter-client for kernelspec.
@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

Use python -m pip to ensure correct pip, and install full jupyter
package which includes kernelspec command.
@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

Use Sys.setenv to add ~/.local/bin to PATH before running installspec,
so R can find the jupyter binary.
@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

@github-actions

Copy link
Copy Markdown

Kernel Conformance Matrix

Kernel Tier 1 Tier 2 Tier 3 Tier 4 Total
deno 9/10 6/7 3/3 3/5 21/25
evcxr 10/10 3/7 1/3 3/5 17/25
ipykernel 10/10 7/7 3/3 5/5 25/25

deno (Deno kernel) - 3 failures, 1 skipped

Language: typescript | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
interrupt_request interrupt_request unknown Timeout waiting for control reply
shutdown_reply shutdown_request unknown Timeout waiting for control reply

Skipped (Not Implemented)

  • stdin_input_request: Kernel can request input from frontend via stdin channel
evcxr (evcxr_jupyter) - 5 failures, 3 skipped

Language: Rust | Protocol: 5.3

Failures

Test Message Type Likely Source Reason
inspect_request inspect_request unknown Timeout waiting for shell reply
history_request history_request unknown Timeout waiting for shell reply
comm_info_request comm_info_request unknown Timeout waiting for shell reply
interrupt_request interrupt_request unknown Protocol error: Error deserializing content for msg_type interrupt_reply: missing field status

Skipped (Not Implemented)

  • display_data: Kernel can produce display_data messages for rich output
  • update_display_data: Kernel can update existing displays via update_display_data
  • stdin_input_request: Kernel can request input from frontend via stdin channel

Test Results by Message Type

Test Message Type deno evcxr ipykernel
comm_info_request comm_info_request
comms_lifecycle comm_open
complete_request complete_request
display_data display_data ⏭️
error_handling execute_request
execute_input_broadcast execute_input
execute_reply_ok execute_request
execute_result execute_result
execute_stderr stream
execute_stdout execute_request
execution_count_increments execute_request
heartbeat_responds heartbeat
history_request history_request
inspect_request inspect_request
interrupt_request interrupt_request
is_complete_complete is_complete_request
is_complete_incomplete is_complete_request ⚠️ ⚠️
kernel_info_has_language_info kernel_info_request
kernel_info_has_protocol_version kernel_info_request
kernel_info_reply_valid kernel_info_request
parent_header_correlation parent_header
shutdown_reply shutdown_request
status_busy_idle_lifecycle status
stdin_input_request input_request ⏭️ ⏭️
update_display_data update_display_data ⏭️

@rgbkrk

rgbkrk commented Feb 26, 2026

Copy link
Copy Markdown
Member Author

Closing this PR - IRkernel requires more complex environment setup to work with GitHub Actions.

The issue is that R's system2("jupyter", ...) calls can't find the Python modules installed by pip,
even though the jupyter binary is in PATH. This is because the shebang in the jupyter script
requires proper Python path resolution which doesn't work in this environment.

We can revisit this in a future PR with:

  1. Using conda for R + Python environment
  2. Creating a wrapper script
  3. Using miniconda/mamba for unified environment management

@rgbkrk rgbkrk closed this Feb 26, 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