当前位置: 首页 > 科技观察

KDAB 推出 CXX-Qt ,为 Qt 提供安全的 Rust 语言绑定

时间:2023-03-11 21:01:47 科技观察

KDAB推出CXX-Qt,为Qt提供安全的Rust语言绑定为Qt提供安全的Rust语言绑定。Rust具有C/C++所缺乏的内存安全性,并且具有用于(反)序列化、异步、解析不安全输入、线程化等的库的丰富生态系统。将这些Rust库集成到Qt应用程序中将为Qt带来很多安全优化.但目前将Rust与Qt结合的解决方案存在一些问题,例如仅提供对C++API的直接访问而不是直接绑定Rust,C++和Rust之间的调用不安全,或者没有利用Rust强大的多线程保证或特性等。据KDAB称,其新推出的CXX-Qt并不是简单地为现有的C++API提供绑定,而是利用了Qt强大的面向对象和元对象系统。类被定义为模块,甚至可以像QML甚至C++中的任何其他QObject一样被实例化。CXX-Qt定义的每个QObject都由两部分组成:一个基于C++的QObject实例,用于存储和公开属性和可调用方法,以及一个实现任何可调用对象、管理内部状态并处理来自属性或后台线程的更改请求的实例然后CXX-Qt使用一个名为CXX的库在Rust和C++之间进行通信,与普通绑定相比,CXX在Rust和C++之间架起了一座桥梁,它基于两种语言集的安全子集。CXX-Qt通过使用过程宏隐藏了CXX桥的细节,也提供了一个可以安全跨越C++<->Rust桥的常见Qt类型库,也为Rust后台线程提供了Qt的通知和安全更新线程上Qt状态的机制。这种方法的缺点是CXX-Qt不提供一对一的绑定,因此,CXX-Qt需要跨桥公开和实现每个功能。请注意,CXX-Qt目前不是稳定的、可用于生产的版本。目前,现有代码能够执行以下任务:定义属性和可调用对象,将它们暴露在QObject上使用常见的Qt类型来侦听属性更改或处理来自后台Rust线??程的更新请求未来计划添加以下任务/功能:其他Qt基类(如QAbstractItemModel)稳定宏API,改进Qt类型的API定义并发出信号扩展文档以包括教程和示例感兴趣的朋友可以在他们的GitHub存储库中查看进度。本文转自OSCHINA文章标题:KDAB推出CXX-Qt为Qt提供安全的Rust语言绑定本文地址:https://www.oschina.net/news/184966/cxx-qt-rust-bindings