Rust原生GUI工具包-Slint
2023-04-06 13:24:46 阿炯

Slint 是一个用于为桌面和嵌入式设备构建原生 GUI 的综合工具包,完全采用 Rust 实现并在GPLv3协议下授权。Slint由Rust实现,同时为不同的编程语言提供支持,目前为 C++、JavaScript 和 Rust 提供了 API。


使用 Slint,可以为各种操作系统和处理器架构开发 UI:
Linux(桌面和嵌入式)、macOS、Windows、WebAssembly、Blackberry QNX,甚至裸机(没有任何操作系统)
ARM Cortex-M 和 Cortex-A、Intel x86、RISC-V、Cadence Tensilica 等。
软件渲染或硬件加速图形 API,例如 OpenGL ES。


其定位是一个支持多语言、适配任意显示屏、且高效流畅的用户图形接口工具包。设计目标包括:
可扩展:在连接到设备的任何屏幕上运行,从台式计算机到低功耗嵌入式设备。
轻量级:能够在几百 KB 内存的场景中运行,并且需要很少的处理能力。
原生支持:Slint 支持多种目标平台,从嵌入式设备到桌面应用,包括移动设备和 Web。

开发团队表示,使用 Slint 构建的图形应用程序可以在内存小于 300 kB 的系统上运行,例如包含 264kB RAM 和 ARM Cortex-M0+ 处理器的 Raspberry Pi Pico。因此 Slint 非常适合为嵌入式设备应用程序开发 UI。在浏览器中查看 DEMO (通过 WebAssembly ):


Slint 支持多种编程语言,例如 Rust、C++ 和 JavaScript:
C++ 程序员可使用 Slint 的现代 C++ API 和 CMake 集成。
JavaScript 程序员可以试用我们的 NodeJS 包的测试版。
Rust 程序员将 Slint crate 与 Cargo 一起使用。

轻量级

使用 Slint 构建的图形应用程序可以在内存小于 300 kB 的系统上运行,例如带有 264kB 内部 RAM 和 ARM Cortex-M0+ 处理器的 Raspberry Pi Pico。这使得 Slint 非常适合为嵌入式设备开发应用程序的 UI。


声明式编程

Slint 开发团队在构建它时就考虑到了可扩展性、包容性、工具性和跨平台兼容性,因此 Slint 是完全跨平台,且使用声明式编程来简化 UI 的开发:
UI 以声明性语言描述,使用的语法提供了一种广泛的方式来描述各种图形元素,同时易于阅读、编写和学习
Slint 编译器将 UI 描述优化并翻译成本地代码
可以使用任何语言编写的业务逻辑,然后使用 Slint 提供的特定于语言的 API 与其 UI 连接

架构:


控件支持:



以下 Slint 强制性的 "Hello World":
export component HelloWorld inherits Window {
width: 400px;
height: 400px;
Text {
   y: parent.width / 2;
   x: parent.x + 200px;
   text: "Hello, world";
   color: blue;
}
}

使用

为了加快 UI 开发过程,Slint 提供了代码完成、导航、重构和语法突出显示的工具支持。在开发和完善 UI 时,Slint 的实时预览会实时显示更改以提供即时反馈。Visual Studio Code则可以直接从 VS Code 市场安装 Slint 扩展。它适用于 macOS、Linux 和 Windows 的 VS Code,以及 Web 的 VS Code。要通过语言服务器协议集成到其他 IDE,请参阅 README 中的说明。还可以使用 SlintPad 在 Web 浏览器中试用 Slint (SlintPad 是一个具有实时预览功能的在线编辑器)。

最新版本:1.0
Slint 1.0 已于2023年4月上旬发布,标志着项目已顺利从开发阶段 “毕业”,可正式用于生产环境。1.0 文档参考

官方主页:https://slint-ui.com/