【Rust日报】2022-02-22 Slint - 为桌面和嵌入式设备创建一个新的GUI框架

SixtyFPS现已更名为Slint

SixtyFPS becomes Slint — Slint Blog

我们将SixtyFPS改名为Slint

为什么要改变?

在2020年春天,我们启动了SixtyFPS,旨在为桌面和嵌入式设备创建一个新的GUI框架。

在将近两年的时间里,我们已经发布了13个版本,赢得了许多用户,创建了一个贡献者社区,签署了一些客户,并获得了3k个GitHub star。

我们选择SixtyFPS这个名字是因为我们想传达我们的目标:即始终实现流畅的动画,这通常与每秒60帧的刷新率有关。

许多旁观者从字面上理解这个名字。每当我们的项目出现在社交媒体上,我们就会收到关于我们名字的评论:考虑到现在的屏幕经常以更高的刷新率运行,这个名字显得过时了。

我们考虑改变这个名字,并决定在开放源码社区讨论这个问题,以收集意见。我们在GitHub上展开了讨论,并收到了许多好的建议。

@karoofish提出了slant,这成为投票率最高的建议,我们非常喜欢它。我们和一些朋友讨论了这个问题,包括一些讲母语的人,有些人建议,在某些情况下,它可以有一点负面的意思。我们所需要的只是一个小小的迭代。

我们的新名字来自于Straightforward, Lightweight, Native Toolkit,这也是我们的设计目标:Slint

衷心感谢每一个参与其中的人,尤其是@karoofish!

【Rust日报】2022-02-22 Slint - 为桌面和嵌入式设备创建一个新的GUI框架_第1张图片

什么是Slint?

对于那些从未听说过SixtyFPS Slint的人来说,它是一个用Rust编程语言实现的GUI工具箱。

其核心是声明性的Slint标记语言,它代表了整个用户界面。Slint语言从Qt的QML获得了一些灵感。这很自然,因为我们来自那个生态系统。我们决定从头开始建立一个强大的类型系统,一个设计师友好的单元系统和完整的工具支持。用Slint标记语言编写用户界面,用 "真正的" 编程语言编写业务逻辑。

你可以用不同的编程语言使用Slint,比如Rust、C++和JavaScript。我们为这些语言设计的API是直观和习惯性的,而不仅仅是一些自动生成的绑定(binding)。我们设计了这个工具包,以便我们可以将Python、Go或其他语言加入到这个组合中。

我们自己的编译器可以解析Slint语言,并直接编译成本地的Rust或C++代码,具有本地性能和高效的内存布局。你也可以用我们的运行时解释器在运行时动态地加载.slint文件。

我们的工具包括一个实现了语言服务器协议的语言服务器,可以方便的集成到各种IDE和编辑器中。它提供了自动完成、语义语法高亮和一个很酷的实时预览,正如下面的视频片段所演示的那样。

Slint 0.2.0版本

0.2.0版本的目的是为了反映这一名称的变化。

我们也借此机会对我们的API进行了一些重要的修改,这些修改是我们从去年0.1.0版本开始收集的,在此感谢你们的反馈。

下面是你如何升级你的应用程序:

  • 确保你的编程环境符合我们更新的工具要求:Rust 1.56或更高版本。如果你使用的是C++,请使用支持C++ 20的编译器。

  • 如果你使用的是Rust,把你的Cargo.toml改成依赖slint而不是 sixtyfps。如果你使用的是C++,修改你的CMakeLists.txt以找到Slint包,并针对Slint::Slint目标进行链接。

  • 在你的应用程序代码中,用slint重命名所有出现的 sixtyfps 模块/命名空间。关于API的变化,请参阅我们的Rust(+解释器)和C++迁移指南。

在这个版本中,我们还释放了一个新的功能:你现在可以在Slint场景的渲染之前或之后集成自定义的OpenGL代码。新的OpenGL Underlay Example展示了如何在Rust和C++中做到这一点。

【Rust日报】2022-02-22 Slint - 为桌面和嵌入式设备创建一个新的GUI框架_第2张图片

新的网站和设计

你可能已经注意到,我们网站的位置、设计和标志都发生了变化。在Benedikt Wisbauer的帮助下,我们利用这个机会更新了我们的品牌形象;我们还移动了GitHub上的组织。

你可以在这里找到我们新的GitHub仓库:github.com/slint-ui/slint。

我们希望你能与我们的新名称、品牌和我们的最新版本联系起来。❤️

如果你对我们的旧网站感到好奇,它仍然可以在互联网档案中找到。

Alacritty六周年生日快乐!

Happy birthday Alacritty!

六年前的2月21号(2016年2月21号),Joe Wilm提交了第一个commit到Alacritty的Git仓库:

commit 621776cd94890936b24f3abb8b7ec1f36dad9150
Author: Joe Wilm 
Date:   Sun Feb 21 08:15:41 2016 -0800

    Initialize new cargo binary project

今天是Alacritty的6周岁生日,这篇文章使用Repography 分析和回顾了Alacritty的repo历史:

【Rust日报】2022-02-22 Slint - 为桌面和嵌入式设备创建一个新的GUI框架_第3张图片

Itertools:辅助的迭代器适配器、函数和宏。

rust-itertools/itertools: Extra iterator adaptors, iterator methods, free functions, and macros. (github.com)

Itertools是一个额外的Rust中迭代器适配器、函数和宏的集合,它提供了很多类似于Pythonitertools模块的功能。

例如生成一个指定大小的迭代器中元素排列的代码可以这样写:

use itertools::Itertools;

let perms = (5..8).permutations(2);
itertools::assert_equal(perms, vec![
    vec![5, 6],
    vec![5, 7],
    vec![6, 5],
    vec![6, 7],
    vec![7, 5],
    vec![7, 6],
]);

Rust Meetup录屏(2022年2月3日在比利时)

Belgium Rust Meetup (February 3 2022, recording): async Qt, bubbly bubblesorts and how to win hackathons.

2022年2月3日在比利时举办的Rust Meetup录屏分享,内容包含:

  • async Qt

  • 冒泡排序

  • 如何赢得黑客松

视频地址:Belgium Rust Meetup (February 3 2022)


From 日报小组 odd-cat

社区学习交流平台订阅:

Rust.cc 论坛: 支持 rss

微信公众号:Rust 语言中文社区

你可能感兴趣的:(c++,python,java,编程语言,linux)