这个是上周三即12月15日发布的消息了,目前官方透露的信息很少,给了一个简陋的官网:https://zed.dev/
同时官方在该帖下透露了一些有趣的信息。
在正式介绍相关信息之前,我想多说几句,为什么都过了一周了,又把这个信息扒出来,之前的时候我以为这个信息热度挺高的,一定会发日报吧,没仔细看,知道后面想看看大家对这件事的评论的时候,才发现居然没发日报。索性今天我值班,就由我来给大家说说这个旧闻。
Atom大家应该有听说过,是GitHub开发的一个代码编辑器,早年我还在大学的时候折腾过各种编辑器,对这个的印象实在是不怎么好,现在回想起来,第一个感觉就是卡,真卡。同时,由于该团队开发Atom的时候,需要一个前端框架,于是有了大名鼎鼎的Electron,早先的名字叫做Atom Shell,名气上应该是要大于Atom本身的。对于这个框架,我的感受,还是卡,因为有用过Linux各种桌面发行版的经历,很多软件为了跨平台支持,都是Electron开发的,很卡。
现在这个团队,要用Rust开发一个代码编辑器,和前段时间的Fleet不一样的地方在于,前端的部分,也是Rust写的,同时因为Rust的GUI生态很薄软,他们直接开发了一个Rust前端框架,叫做GPUI,直接放原文:
我们最初计划使用Electron作为为Zed提供跨平台GUI的便捷手段,同时用Rust构建应用程序的核心。但每当这时,我们发现网络技术是实现惊人性能的瓶颈。最后,我们决定建立一个由GPU驱动的可完全控制的并简单的UI框架,以满足我们的需求。
我们称它为GPUI。
我们从Mozilla的Webrender项目中得到了很多灵感。关键的见解是,现代图形硬件可以以高帧率渲染复杂的3D图形,那么为什么不利用它来渲染相对简单的2D用户界面,并采用即时模式架构呢?
Rust的所有权模型要求我们重新思考我们在其他UI编程范式中所学到的很多东西,但其结果是一个框架,使用起来很有成效,而且非常容易推理。
控制每一个像素是一种解放,而以闪电般的速度推动这些像素则是一种冲动。(It’s liberating to control every pixel, and it’s a rush to push those pixels at lightning speed.)
单单是上述官方的博文,仍然无法确定这个GUI框架是用Rust写的,但是该帖子下有这样的回复:
Rust迫切需要一个好的UI框架,让每个人都觉得用起来很舒服......现在有一些很棒的独立解决方案,但没有一个听起来适合每个人的。
这样大概率是Rust的UI框架解决方案了。
相对于这个编辑器本身,我对该UI框架的兴趣更为浓厚,也正是有了很大的期望,所以如果最后一些偏差,比如该框架不是给Rust做的、比如该框架不是像宣传所说的很简单易用,那会让我很失望,索性把这个旧闻翻出来,让对Rust进行GUI开发感兴趣的同志们一齐期待,比我最后一个人可能失望要好的多。
Read More: https://libreddit.spike.codes/r/rust/comments/rgyss8/an_code_editor_written_in_rust_by_the_atom_devs/
Reddit 上有个讨论很有意思,同属于更好的C的类型的语言,Zig提供了很多有趣的设计思路,甚至于Rust语言团队也需要从中吸取经验,用以改进Rust,这部分讨论收录在这里:
我还没有深入研究过Zig,但与Rust相比,它似乎是一种非常简单的语言,就系统编程语言而言,它是相当有能力的。Rust有什么是Zig所没有的?
高赞回复:
Rust有什么是Zig所没有的?
编写代码时不需要经常考虑内存管理问题的能力。
Zig让内存管理变得非常明确,比如强迫你处理分配失败的情况,这很好......但是,这并不是我在PC平台上做游戏时真正要处理的问题。
一旦Rust的基本借用规则成为第二天性,代码就几乎不存在内存管理部分了......一切都会自动地做 "正确的事情"。
在使用Rust这么长时间后,我觉得要传递内存分配器,要存储指向内存分配器的指针都是很麻烦的。
不要误会我的意思,它是一个非常棒的项目(就像Jai、Odin和所有其他即将推出的"更好的C"一样),但是不断有走错路的危险,我觉得很难再回去了。
而且这还没有触及多线程的问题
Read More: https://libreddit.spike.codes/r/rust/comments/rlj9zl/what_do_you_think_about_zig/
今天早些时候,我阅读了Tyler Mandry的《Rust中的上下文和能力》,我非常喜欢我看到的内容。但是我和很多人一样,有很多问题。这将如何影响语言?这是否会损害定位性/可读性?需要什么来使之适应?
所以这里是我到目前为止的想法的探索。
Read More: https://jam1.re/blog/thoughts-on-contexts-and-capabilities-in-rust
与螃蟹有关的重要诊断改进在nightly版本启用@rustlang
error: Ferris cannot be used as an identifier --> src/main.rs:2:9 | 2 | let = 123; | ^^ help: try using their name instead: `ferris` 3 | 4 | for i in 0.. { |
-- Mara Bos 发表的推特
Read More: https://this-week-in-rust.org/blog/2021/12/22/this-week-in-rust-422/
From 日报小组 Cupnfish
社区学习交流平台订阅:
Rust.cc 论坛: 支持 rss
微信公众号:Rust 语言中文社区