当前位置:网站首页>Rhai - Rust 的嵌入式脚本引擎
Rhai - Rust 的嵌入式脚本引擎
2022-06-30 16:59:00 【ruonou.com】
基于 Rust 语言丰富和创新的特性,以及超高性能的执行效率,目前在开源界,产生了众多 Rust 语言的嵌入式脚本引擎。Rhai 是新兴的,但创新性较高的一个。Rhai 提供了一种安全、简单的方式向任何应用程序添加以 Rust 语法编写的脚本,但保持了 Rust 语言“零开销”的执行效率。
Rhai 是在 Rust 语言特性之上实现,具有 no-std 特性,以及动态类型。编译时开销非常低,但执行效率很可观:在单核 2.3 GHz 的 Linux 虚拟机上,0.3 秒内,达到了超百万次迭代。
详细来说,Rhai 具有如下特性(下文仅列出了小部分):
- 容易 类似于 Rust + JavaScript,且具有动态类型。 与 Rust 函数和类型紧密集成。 通过外部作用域,将 Rust 变量/常量无损传递到脚本中,无需实现任何特殊特性。 从 Rust 代码内,轻松调用脚本定义的函数。 很少的依赖项,实际必须具有的仅 2 个第三方 Rust crate。
- 极快
非常低的编译时开销。
经评估,在单核 2.3 GHz 的 Linux虚拟机上,0.3秒内,迭代 100 万次。
脚本优化。
- 动态 函数重载。 运算符过载。 用可动态加载的模块,以组织代码库。 函数指针可动态调度。 可以捕获共享变量的闭包。 支持面向对象编程(OOP)。
- 灵活 脚本引擎可以设置为发送+同步(通过同步功能)。 通过 serde crate 提供序列化、反序列化支持。 通过排除不需要的语言特性,以支持最小的构建。 支持大多数构建目标,包括 no-std、WASM。 可自行精确禁用关键字、运算符,以限制语言。 可用作 DSL。
Rhai 在 github 开源,经笔者一段时间的试用,体验效果非常不错。目前,在具体项目中,笔者正进行深入应用:主要聚焦于模板渲染辅助方面。
经笔者深入体验后,故此推荐,感兴趣的朋友可以访问网站:https://rhai.budshome.com,以作详细了解。
边栏推荐
- The company was jailed for nonstandard bug during the test ~ [cartoon version]
- [binary tree] preorder traversal to construct binary search tree
- MySQL reports that the column timestamp field cannot be null
- C language structure
- 助力极致体验,火山引擎边缘计算最佳实践
- Daily interview 1 question - how to prevent CDN protection from being bypassed
- 云安全日报220630:IBM数据保护平台发现执行任意代码漏洞,需要尽快升级
- 这里数据过滤支持啥样的sql语句
- Add code block in word (Reprint)
- One script of unity actual combat realizes radar chart
猜你喜欢

MIT科技评论2022年35岁以下创新者名单发布,含AlphaFold作者等

Solve the problem of unable to connect to command metric stream and related problems in the hystrix dashboard

每日面试1题-如何防止CDN防护被绕过

Redis (VII) - sentry

C# Winform程序界面优化实例

后渗透之文件系统+上传下载文件

Communication network electronic billing system based on SSH

Vue3 reactive database

ASP. Net authentication code login

Design of online shopping mall based on SSH
随机推荐
基於SSH的網上商城設計
程序员女友给我做了一个疲劳驾驶检测
联想“双平台”运维解决方案 助力智慧医疗行业智慧管理能力全面提升
Redis (IX) - enterprise level solution (II)
Unity开发bug记录100例子(第1例)——打包后shader失效或者bug
Helping the ultimate experience, best practice of volcano engine edge computing
每日面试1题-如何防止CDN防护被绕过
Deep understanding of JVM (III) - memory structure (III)
Small Tools(3) 集成Knife4j3.0.3接口文档
News management system based on SSM
Several points in MySQL that are easy to ignore and forget
MIT科技评论2022年35岁以下创新者名单发布,含AlphaFold作者等
Optimize with netcorebeauty Net core independent deployment directory structure
抖音最新Xbogus,signature生成js逆向分析
[software testing] basic knowledge of software testing you need to know
Daily interview 1 question - how to prevent CDN protection from being bypassed
漏洞复现----38、ThinkPHP5 5.0.23 远程代码执行漏洞
Tencent cloud installs MySQL database
Post MSF infiltration summary
麻烦问下 Flink支持同步数据到 sqlserver么