Rust v1.39发布 - 这个编程语言真不一般! (2)

关于referent和borrow的详细规则可见下图(原图地址)。

Rust v1.39发布 - 这个编程语言真不一般!

所有的这些规则都由编译器实现。简而言之,Rust通过编译期的规则实现了没有GC下的内存安全。

1.2 线程安全性

在内存安全的基础上,Rust更进一步地保证了线程安全性。

默认情况下一个对象只能被拥有所有权的线程访问。

实现了Send trait的数据类型所有权能够在多个线程间转移,但线程间不存在共享数据。

实现了Sync trait的数据类型能够被多个线程同时访问,代表着该数据类型实现了线程间的同步操作。

需要说明的是,Send和Sync都属于编译器自动添加的标记(marker trait),并不需要开发人员实现。如果某个数据类型所有成员都是Send或Sync的,那么该数据类型也会被自动标记为Send或Sync。这样如果代码能够编译通过就自然而然地说明线程安全。

1.3 性能

benchmark显示Rust有着媲美C/C++的效率,就执行速度而言狂虐Golang/Java。

在TechEmpower进行的主流Web框架性能测试中,由微软员工Kim使用Rust构建的actix开源框架在多项测试场景中拔得头筹。

Rust v1.39发布 - 这个编程语言真不一般!

依据历年的数据,70%的安全漏洞都和内存安全有关。Rust完美解决了安全性和性能的两难问题,也让它成为了开发底层应用的更优选择。目前,Intel、微软和Linux都在积极准备使用Rust开发驱动程序甚至操作系统内核以改善日益严峻的安全问题。

Rust v1.39发布 - 这个编程语言真不一般!

近年来CVE中内存安全类漏洞比例图 2.兼容并包 —— 支持多种编程范式

Rust在设计之初被定位为多范式语言(multi-paradigm language),在汲取了其它语言大量成功经验基础上,并不限定用户采用某种特定的范式。

2.1 命令式风格与函数式风格

Rust支持传统的命令式风格(imperative style)代码无须赘述。Rust同时也吸取了大量ML阵营函数式风格(functional style)编程语言的诸多特性,比如模式匹配、不可变量与无副作用方法、Haskell类型系统、反向类型推导和trait特性系统等。这使Rust拥有极致的性能和对底层细腻的掌控能力的同时,具备高度抽象的表达能力。

Rust v1.39发布 - 这个编程语言真不一般!

2.2 多线程模型

使用Rust进行多线程应用开发,同样拥有极高的自由度。

可以选择线程间共享数据,通过传统的操作系统原语同步或者lockless数据结构;

也可以选择CSP(Communicating sequential processes)模型,就如Golang开发手册中总结的那样“Do not communicate by sharing memory; instead, share memory by communicating.”。

还可以选择如Erlang那样的异步Actor模型

3 v1.39添加了async/await 异步编程支持

对于高并发I/O应用的开发,异步编程是首选项。传统的异步依赖于回调或者闭包,实现起来麻烦不说,代码可读性也差强人意。而Rust这次新添加的两个关键字类似于C#和Python中的async / await ,用户无需再依赖于回调或者闭包,用最自然的方式编写可读性佳的I/O操作代码,代码看上去和同步代码无异,而编译器将异步调用部分编译为状态机从而实现异步执行。这点感觉非常好。

Rust v1.39发布 - 这个编程语言真不一般!

4.个人使用体会

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzygzs.html