Go 2 草案发布
看了下,主要是增强了三方面:
- 错误处理
- 错误值
- 泛型
大致翻看了一下,看来Go 2的设计也是深受Rust的影响。
一、错误处理方面,
引入了 handle err {}来简化之前的 if err !=nil {}之类的写法。这个受到Rust Result错误处理的启发,这样的好处就是可以把错误处理和业务逻辑区分开来
二、错误值, 主要是增强错误检查和错误格式化。
草案中加入了下面两个接口
package errors
type Wrapper interface {
Unwrap() error
}
package errors
type Formatter interface {
Format(p Printer) (next error)
}
通过实现此接口,可以自定义错误类型和错误格式。不由得想到了Rust里的Error trait。
三、泛型
Go2泛型也是深受Rust影响,比如草案中的代码
contract Equal(t T) {
t == t
}
type Set(type T Equal) []T
contract声明了一种泛型约束,上面Equal表示,必须输入相等的类型。在Set 里使用 T Equal,表示对Set这个泛型进行Equal约束。
这让我想起了Rust的trait bound。
「国产软件之光」TiKV 进入了CNCF
今天,云原生计算基金会(CNCF)接受了TiKV进入CNCF Sandbox, 用于早期和持续发展的云原生项目。TiKV是一个由国内PingCAP公司开源的分布式事务键值数据库,基于Rust实现,由Raft(通过etcd)提供支持,并受到Google Spanner设计的启发,提供简化的调度和自动平衡,而不依赖于任何分布式文件系统。
Android sparse文件格式的Rust实现
From Rust to beyond系列:asm.js
Gitpod - GitHub的在线IDE支持Rust
Gitpod是一个在线IDE,可以从任何GitHub页面启动。 只需在任何GitHub-URL前加上“https://gitpod.io#”,或使用我们的浏览器扩展名为GitHub页面添加一个按钮。
intellij-rust更新日志
新的改进有:
- 将Rust的设置该成了独立的面板
- 不突出显示保留字
- 如果trait没有在当前范围内,则相应的方法调用会被高亮显示
评论区
写评论你说的全对。而且团队也开始国际化了。 但我的意思是,他们是从国内作为起点的,值得骄傲。
tikv并不能称为国产软件。就像那些重量级开源项目,并不会说成是美国软件一样。一个开源项目,可能,也希望全世界的人都能参与。属于全人类的。
Gitpod是一个在线IDE,可以从任何GitHub页面启动。 只需在任何GitHub-URL前加上“https://gitpod.io#”,或使用我们的浏览器扩展名为GitHub页面添加一个按钮。
这里多了一个“名”字吧?