Slint 团队发布了其跨平台 GUI 工具包的 1.0 版,该工具包在 Rust 中实现,并附加了 C++ 和 JavaScript 的绑定。
Slint 曾经被称为 SixtyFPS,它既快又小。“使用 Slint 构建的图形应用程序可以在 RAM 小于 300 kB 的系统上运行,例如 Raspberry Pi Pico” 介绍该库的第一个生产版本的帖子有提到这个。
记者采访了 Slint 联合创始人 Olivier Goffart 和 Simon Hausmann。这两位开发人员在当时的挪威公司 Trolltech 工作时相识,该公司在被诺基亚收购之前创建了 Qt C++ 工具包。Goffart 搬到柏林并创建了自己的公司,但两人都继续在 Qt 生态系统中工作。“我们非常清楚人们在为嵌入式设备或桌面构建复杂的用户界面时会遇到什么样的问题” Hausmann 说 “我们还知道 Qt 积累了很多遗留问题,这些遗留问题使产品变得笨重、至少部分笨重,并且在某些方面不灵活。我们觉得是时候重新开始了”
尽管 C++ 开发人员目前是 Slint 的主要市场,但也有意识地决定放弃 C++。“在 15 到 20 年内,将很难找到 C++ 开发人员” Hausmann 说 “我们想看看是否有可能为未来构建一些不受 C++ 束缚的东西”
Qt 有其他语言的绑定,但根据 Goffart 的说法,“所有的文档,一切都在 C++ 上。开发人员可以使用多种语言工作,像 C++ 这样的系统语言并不是 UI 的最佳语言。它们是实现库本身的好语言,因为它需要非常快,但应用程序的逻辑可以使用更高级别的语言。我们希望支持多种编程语言”
使用 C++ 这么长时间后,在 Rust 工作是什么感觉?“Rust 对你能做的事情有很大的限制,” Goffart 说 “在 C++ 中,我们在模板和元编程方面有很多自由,这使得在 Rust 中做不到的事情成为可能。Rust 迫使你采用 Rust 方式,回想起来这是一件好事,因为它迫使你在某些方面保持简单。”
Hausmann 补充说,“它可以帮助我们避免 C++ 编码所遇到的那些问题,构建系统时你也不必像 C++ 开发人员那样担心很多事情。比如悬挂指针之类的东西,你再也没有了。这样你就可以把时间花在其他事情上了。”
尽管使用 Rust,Hausmann 告诉我们 C++ 开发人员会有宾至如归的感觉。“我们知道如何制作一流的 C++ API” 他说 “这是一个适合 C++ 开发人员使用的 C++ API”
使用 Rust 带来了另一个好处:能够编译为 WebAssembly (Wasm)。豪斯曼表示,这主要对演示和原型制作具有价值。“编译我们的示例并在 Web 浏览器中运行它们的能力是传达您可以进行的设计类型的好方法”
这提出了一个关键点:Slint 有自己的声明性语言来描述用户界面,在概念上类似于 QML(Qt 建模语言)或 Microsoft 的 XAML。这使得像SlintPad这样的演示成为可能,开发人员可以在其中编写 Slint 设计标记语言并通过 Wasm 立即查看它。同样,Visual Studio Code 有一个扩展,可提供 Slint 标记的即时预览。
Hausmann 将 Slint 语言视为基础语言。“这种用于描述 UI 的特定领域语言确实是它的核心。一切都是完全键入的,作为开发人员,您会立即获得视觉反馈。”
它与 QML 相比如何?“我们喜欢 QML,但我们认为我们可以让它变得更好。我们希望在逻辑和 UI 之间有一个很好的分离……另一件事是我们看到很多人都知道 CSS,所以我们认为我们也应该尝试尽可能接近 CSS”
Slint 绘制自己的小部件而不是依赖本机控件,这在本机控件可能不存在的嵌入式世界中是完全必要的,但这可能使其看起来不同于 Windows 和 macOS 等桌面操作系统上的本机应用程序。
我们向 Slint 团队询问了为这个开源项目寻找合适的商业模式所面临的挑战。“我们喜欢开源,我们来自开源背景。我因为开源而开始编程” Goffart 说 “我们也喜欢 Qt 仍然拥有的模型,你有开源,但如果你想做专有软件,那么你需要付费”
“另一方面,我们知道有些目标平台是我们无法竞争的。例如,所有网络或移动设备,替代方案都是免费的,没有人会为我们的工作付费,因为选择太多了。在桌面上,也有许多以 Electron、Qt、Flutter 和其他许多工具包” 正因为如此,Slint 有一个免费的“大使”许可证,“相当宽松,应该适合大多数用例” Goffart 说,尽管它确实要求用户同意他们的产品可以用于营销 Slint。
这意味着 Slint 的主要商业市场是嵌入式设备,“为了保密,有些客户不想获得大使许可” Goffart 说。
与桌面使用相比,Slint 也更适合嵌入式使用。对于嵌入式,“与替代品相比,我们是轻量级的,”Goffart 说,而“要完全集成到桌面,我们还有很长的路要走”
更多阅读:
https://devclass.com/2023/04/06/interview-the-story-behind-slint-1-0-a-new-cross-platform-gui-toolkit-coded-in-rust/
python分布式系统的设计和应用 pyspider分布式
一. 分布式概念 : 需要搭建一个分布式的机群, 然后在机群的每一台电脑中执行同一组程序, 让其对某一个网站的数据进行联合分布爬取scrapy + scrapy_redis实现分布式scrapy_redis组件的功能 :提供可被共享的调度器和管道数据只能存储到redis数据库中实现流程修改源文件#以创建CrawlSpider为例
from scrapy_redis.spiders impo