LLVM 项目博客

LLVM 项目新闻和来自战壕的第一手资料

使用 Clang-Repl 进行教程开发

简介

我是 Krishna Narayanan,来自孟买 Veermata Jijabai 科技学院的本科生,我将在本博文中介绍我的 GSoC 项目,其中包括我们在今夏任期内完成的目标和任务。我的 GSoC 项目旨在开发演示 Clang-Repl 当前功能的教程。Clang-Repl 的需求在于它为严格的开源开发提供了机会。然而,尽管它受到 cling 的启发,但 Clang-Repl 和 Cling 并非完全相同,即它们相似,但需要进行工作才能为 Clang-Repl 添加 Xeus 协议支持。在类似的惯例中,为 CppInterOp(基于 clang 的 C++)、Xeus-cpp(C++ 的交互式编程环境)和 Xeus-clang-repl 演示了教程。

贡献

以下是根据我发送的拉取请求列出的贡献

1. 更新 Clang-Repl 文档

此补丁添加了对 Clang-Repl 文档的支持,它提供了有关 Clang-Repl 用法的全部细节。它强调了 Clang-Repl 为用户提供的功能。REPL 性质使用户能够进行原型设计、实验并提供用户友好的体验。同样,第二个补丁添加了 Saqib 的 Clang-Repl 执行处理结果,我们在这个补丁中为 llvm/clang 文档启用了 graphviz 扩展,以支持用于图形表示的 graphviz 约定(正在审查中)。

2. 添加 C++ InterOp 文档设置

CppInterOp 是一个基于 clang 的 C++ 交互操作库,它允许与 C++ 代码进行交互操作,使其与 Python 等更具交互性的语言互操作。上面的补丁为 CppInterOp 添加了文档设置,包括 sphinx 和 doxygen 文档。上面的补丁涵盖了与 CppInterOp 开发和使用相关的全部主题和要点,包括从源代码构建(安装)、使用、常见问题解答、开发人员文档、教程和参考。文档中的教程详细介绍了 C++ InterOp 的用法,包括 C-C++ 互操作性和 C++-python 互操作性。

3. 添加 xeus-clang-repl 文档设置

Xeus-clang-repl 将 clang-repl 与 xeus 协议集成在一起,是一个用于在 Jupyter Notebook 中使用 C++ 的平台。上面的补丁为 xeus-clang-repl 添加了文档设置,包括 sphinx 和 doxygen 文档。该文档涵盖了与 xeus-clang-repl 的安装、使用、重要性和参考有关的全部信息。它包括展示可在 xeus-clang-repl 中使用的不同功能的教程,尤其是 C++-python 集成,它借助魔术命令 (%%python) 在 Jupyter 单元格中同时执行。

4. 添加 xeus-cpp 文档设置

Xeus-cpp 是一种交互式编程环境,允许您在 Jupyter Notebook 中执行 C++ 代码。上面的补丁为 xeus-cpp 添加了文档设置,包括 sphinx 和 doxygen 文档。该文档涵盖了与 xeus-cpp 的安装、使用、重要性和参考有关的全部信息。它包括展示可在 xeus-cpp 中使用的不同功能的教程,尤其是 C++-python 集成,它借助魔术命令 (%%python) 在 Jupyter 单元格中同时执行。

5. 其它

这些是贡献于当前文档设置和内容开发的杂项补丁。它包括将 readthedocs 设置从 v1 迁移到 v2 配置。

致谢

我已尽力完成所有最初提出的目标(xeus-cpp 设置尚未合并)。我将在未来几周内根据建议改进这些内容,使教程和文档更易于用户理解。我将在 GSoC 结束后继续与编译器研究小组合作,贡献教程并发布其他开发补丁。

我非常感谢我的导师 Vassil 和 David 在过去两个月的持续帮助和支持。非常感谢 Vassil 及时提供帮助并审查代码,并指导我实现最终目标,特别感谢 Parth 和 Baidyanath 在 GSoC 的初期阶段对我的指导。这段旅程充满了学习、体验新技术栈以及认识到文档和教程对于改善用户体验的重要性。我感谢 Vassil 和所有 LLVM 社区成员为我提供这次与如此充满活力和有趣的社区合作的机会。

最后,感谢编译器研究小组的所有成员在整个 GSoC 期间为我提供许多新概念和必要的帮助。我也感谢 Google 为我提供了在今夏参与该项目的 opportunity,它帮助我学到了很多东西,并且肯定也会对我的未来职业生涯有所帮助。