rg ( ripgrep )是一个很强大的工具,但并不是每个平台都有。
有时候我想在 Python 或其他语言里使用它,但平台、CPU 架构和编程语言的组合实在太多了,处理起来比较麻烦。
所以我把它做成了 APE ( Actually Portable Executable ),这样只需要一个可执行文件,就能在 Windows 、Linux 和 macOS 上运行,同时支持 x86_64 和 ARM64 架构。
然后利用 APEBind ,为不同编程语言生成统一的调用接口。这样无论使用哪种语言,想调用 rg 都会方便很多。
其实同样的思路,我还做了另外两个项目:
sympy-ape:可以直接在 Java / Node.js 里调用 Python 的 SymPy 。(当然是不必有 python)
tika-ape:可以在 Python 里直接使用 Apache Tika ,不需要额外安装 JVM 等依赖。
这些项目的核心思路都差不多:把工具打包成跨平台的 APE ,再通过 APEBind 提供不同语言的调用接口,尽量减少环境和依赖方面的麻烦。
rg-ape 项目地址: https://github.com/bear0330/rg-ape
欢迎大家试试看!如果觉得不错,我再考虑扩展到更多编程语言。
有时候我想在 Python 或其他语言里使用它,但平台、CPU 架构和编程语言的组合实在太多了,处理起来比较麻烦。
所以我把它做成了 APE ( Actually Portable Executable ),这样只需要一个可执行文件,就能在 Windows 、Linux 和 macOS 上运行,同时支持 x86_64 和 ARM64 架构。
然后利用 APEBind ,为不同编程语言生成统一的调用接口。这样无论使用哪种语言,想调用 rg 都会方便很多。
其实同样的思路,我还做了另外两个项目:
sympy-ape:可以直接在 Java / Node.js 里调用 Python 的 SymPy 。(当然是不必有 python)
tika-ape:可以在 Python 里直接使用 Apache Tika ,不需要额外安装 JVM 等依赖。
这些项目的核心思路都差不多:把工具打包成跨平台的 APE ,再通过 APEBind 提供不同语言的调用接口,尽量减少环境和依赖方面的麻烦。
rg-ape 项目地址: https://github.com/bear0330/rg-ape
欢迎大家试试看!如果觉得不错,我再考虑扩展到更多编程语言。