4 个版本 (2 个破坏性更新)
0.3.0 | 2021 年 12 月 7 日 |
---|---|
0.2.1 | 2021 年 11 月 29 日 |
0.2.0 | 2021 年 11 月 27 日 |
0.1.0 | 2021 年 11 月 7 日 |
#10 在 #abi-stable
每月 48 次下载
在 swc_ecma_plugin_ast 中使用
365KB
8K SLoC
rplugin
构建 AST 处理插件系统的通用工具。有关详细信息,请参阅 rustdoc。
lib.rs
:
AST 处理插件系统。
设计为通用软件包,支持从其他库中使用。此软件包依赖于 [abi_stable] 软件包。
为什么需要新的软件包?
我 (kdy1) 想要在不改变 AST 节点类型的情况下将 AST 数据传递给插件。
例如,使用 RBox 而不是 Box 不是一个可接受的选项,因为许多用户已经将 swc 作为软件包使用。
因此,我们仅使用 proc-macro 将 ast 转换为可以直接传递给插件的内容,使用 StableAbi。在插件中,我们在处理之前将其转换回正常 AST,因此插件作者可以使用与核心转换完全相同的代码。当然,这很慢,但与类型更改相比,这要快得多。它比序列化和反序列化要快得多。
简而言之,我们做
正常AST ->插件 AST->正常 AST->插件->正常 AST->插件 AST->正常 AST
注意潜在用户
目前此软件包依赖于 swc_common
,但如果有人提出请求,我可以将其修改为不依赖于 swc_common
。
依赖关系
~7–14MB
~189K SLoC