posit-dev/ark
GitHub: posit-dev/ark
Ark 是一个用 Rust 编写的 R 语言多协议内核,同时提供 Jupyter 内核、LSP 语言服务和 DAP 调试适配器功能,为 R 语言的交互式开发与 IDE 集成提供统一的底层支持。
Stars: 327 | Forks: 30
# Ark,一个 R 内核
Ark 是一个用于 Jupyter 应用的 [R](https://www.r-project.org) 内核。创建它的初衷是作为 R 和 [Positron](https://github.com/posit-dev/positron) IDE 之间的接口,并且兼容所有实现了 Jupyter 协议的前端。
Ark 旨在提供一套完整的、可重用且可互操作的工具集,用于为 R 实现 IDE:
- 它是一个 [Jupyter 内核](https://jupyter.org),提供 R 与前端之间的结构化交互(输入和输出)。
- 它是一个 [LSP server](https://microsoft.github.io/language-server-protocol),支持智能感知功能,如自动补全、跳转到定义、查找引用、诊断等。它还具备一些格式化功能,我们计划在未来逐步完善。
- 它是一个 [DAP server](https://microsoft.github.io/debug-adapter-protocol),用于对 R 函数进行复杂的单步调试。它管理源代码引用(必要时可即时创建),并与 Jupyter 内核紧密集成,从而透明地单步执行 R 代码并检查局部变量。注意:目前尚不支持断点,但你可以使用 `debug()`、`debugonce()` 或 `browser()` 进入调试器。
目前 LSP 和 DAP 功能仅在 Positron 中可用,未来将向其他前端开放。
## 用法
### 在 Positron 中
在 Positron 中运行是体验 Ark 最简单的方式,无需任何安装或配置。这也是目前使用我们 LSP 和 DAP 提供的 Ark 高级功能的唯一实用途径;随着我们持续投入开发 Ark,这种情况在未来将会改变。
报告 bug 和提出功能请求。
## 相关项目
- [Positron](https://github.com/posit-dev/positron),一款下一代数据科学 IDE。Positron 中的 R 语言包通过连接到 Ark 内核,实现 R 代码的交互式执行以及收集输出和图表。它还连接到 Ark LSP 以获得智能感知功能(如自动补全、跳转到定义、查找引用等),并连接到 Ark DAP 进行透明调试。
- [IRKernel](https://github.com/IRkernel/IRkernel),一个主要为 R 本身编写的 Jupyter R 内核。IRkernel 是一个可从 CRAN 轻松安装的 R 包,它为 R 提供了类似于 [R Markdown](https://rmarkdown.rstudio.com) 或 [Quarto](https://quarto.org) 的集成级别。由于我们对 Ark 的主要目标是除了 Notebook 模式外还要能在 Console 模式下使用,我们将其实现为 R 的原生前端。Ark 原生绑定到 R 为 RStudio 等前端导出的 C API,从而提供非常接近在终端或 RStudio 中运行 R 的体验。
- [languageserver](https://github.com/REditorSupport/languageserver),一个为 R 实现 [LSP 协议](https://microsoft.github.io/language-server-protocol/) 的 server,主要也是由 R 本身编写。我们决定用 Rust 编写自己的 LSP,原因有两点。首先,我们需要与 Jupyter 内核紧密集成,以便基于 R 会话的当前状态提供内省功能。从长远来看,我们计划对 R 代码进行复杂的静态分析。得益于 [Tower-LSP](https://github.com/ebkalderon/tower-lsp) 这样的框架,以及 [Rust Analyzer](https://github.com/rust-lang/rust-analyzer) 作者贡献的静态分析和增量计算库,Rust 生态系统是实现强大语言服务器的绝佳选择。
- [vscDebugger](https://manuelhentschel.github.io/vscDebugger),一个为 R 实现 [DAP 协议](https://microsoft.github.io/debug-adapter-protocol) 的 server,同样是作为 R 包用 R 编写的。相比之下,我们的 DAP server 紧密集成到了我们的 Jupyter 内核中。这使得它可以平滑地与当前运行的 R 会话集成,并在任何时候无需任何前置步骤即可开始调试。
## 行为准则
请注意,本项目发布时附带了一份[贡献者行为准则
(Code of Conduct)](https://github.com/posit-dev/ark?tab=coc-ov-file)。参与本项
目即表示你同意遵守其条款。
## 许可证
Copyright (C) Posit Software, PBC. All rights reserved.
Ark 采用 [MIT 许可证](https://github.com/posit-dev/ark?tab=MIT-1-ov-file) 授权。
Ark 是一个用于 Jupyter 应用的 [R](https://www.r-project.org) 内核。创建它的初衷是作为 R 和 [Positron](https://github.com/posit-dev/positron) IDE 之间的接口,并且兼容所有实现了 Jupyter 协议的前端。
Ark 旨在提供一套完整的、可重用且可互操作的工具集,用于为 R 实现 IDE:
- 它是一个 [Jupyter 内核](https://jupyter.org),提供 R 与前端之间的结构化交互(输入和输出)。
- 它是一个 [LSP server](https://microsoft.github.io/language-server-protocol),支持智能感知功能,如自动补全、跳转到定义、查找引用、诊断等。它还具备一些格式化功能,我们计划在未来逐步完善。
- 它是一个 [DAP server](https://microsoft.github.io/debug-adapter-protocol),用于对 R 函数进行复杂的单步调试。它管理源代码引用(必要时可即时创建),并与 Jupyter 内核紧密集成,从而透明地单步执行 R 代码并检查局部变量。注意:目前尚不支持断点,但你可以使用 `debug()`、`debugonce()` 或 `browser()` 进入调试器。
目前 LSP 和 DAP 功能仅在 Positron 中可用,未来将向其他前端开放。
## 用法
### 在 Positron 中
在 Positron 中运行是体验 Ark 最简单的方式,无需任何安装或配置。这也是目前使用我们 LSP 和 DAP 提供的 Ark 高级功能的唯一实用途径;随着我们持续投入开发 Ark,这种情况在未来将会改变。
标签:DAP服务器, IDE, Jupyter内核, LSP服务器, R语言, SOC Prime, 可视化界面, 开发工具, 通知系统