了解Rust语言(rust是什么)

RUST

官网:https://www.rust-lang.org/zh-CN/
Rust编译器的源码:https://github.com/rust-lang/rust
语言设计和相关讨论:https://github.com/rust-lang/rfcs
Rust标准库文档:https://doc.rust-lang.org/std/
Rust官方管理仓库:https://crates.io/ 浏览Rust社区热门开源库
Rust中文社区:https://rustlang-cn.org/
https://tokio-zh.github.io/
Rust语言中文社区:https://rust.cc/
Rust编程语言入门
参考URL: https://www.bilibili.com/video/BV1hp4y1k7SV?p=1

背景

Rust 最早是 Mozilla 雇员 Graydon Hoare 的一个个人项目,从 2009 年开始,得到了 Mozilla 研究院的支助,2010 年项目对外公布。2010 ~2011 年间实现的自举。在 2015 年 5 月 15日发布了 1.0 版。在研发过程中,Rust 建立了一个强大活跃的社区,形成了一整套完善稳定的项目贡献机制,任何开发者都可以直接给这个项目提bug或者直接贡献源码

从 2019 年下半年至今,不到一年的时间内,Rust 语言确实接二连三地掀起过一些波澜。从微软探索将 Rust 作为 C 和 C++ 的安全替代方案开始,Rust 吸引了越来越多的目光:内核维护者表示愿意接受用 Rust 开发 Linux 驱动;AWS 也伸出橄榄枝,宣布赞助 Rust;微软更进一步,在今年年初开发并开源了受 Rust 启发的新编程语言 Verona;最近,苹果也站出来拥抱它,将 C 代码移植到 Rust。

什么是rust

Rust语言是一门开源的系统编程语言,有3大特点:运行快,防止段错误,保证线程安全。

Rust作为系统级编程语言,它的基本理念是 “零开销抽象”

  • 运行快
    Rust是一种静态类型的编译性语言,类似C++。编译型语言,无须大规模的运行时(runtime)支持,也没有自动内存回收(GC)机制

  • 防止段错误
    1、什么叫做段错误?
    一个进程在执行的时候,它所占用的内存的虚拟地址空间一般被分割成好几个区域,我们称为“段”,进程中的每个段通过硬件MMU映射到真正的物理空间;在这个映射过程中,我们还可以给不同的段设置不同的访问权限,比如代码段只读不写; 进程在执行过程中,如果违反了这些权限,CPU就会直接尝试一个硬件异常;硬件异常会被操作系统内核处理,一般内存会向对应的进程发送一条信号;如果没有实现自己特殊的信号处理函数,默认这个进程会直接退出;如果操作系统打开了core dump功能,在进程退出时操作系统会把它当时的内存状态,寄存器状态以及各种相关信息保存到一个文件中,供用户以后调试使用

    2、什么会引起内存不安全?
    访问未定义内存会引起不可知错误

    • 空指针:解引用空指针是不安全的,会引起段错误。这块地址空间一般是受保护的。
    • 野指针: 野指针就是未初始化的指针,指针可能会指向受保护的区域
    • 悬浮指针:悬浮指针是指内存空间在被释放了之后继续使用,和野指针一样,会读写不属于这个指针的内存
    • 非法释放: 同一个指针释放两次
    • 缓冲区溢出: 指针访问越界,会读取或者修改临近内存空间的值
    • 执行非法指针: 如果一个函数指针不是准确的指向一个函数地址,那么调用这个函数指针会导致一段随机数据被当中指令来执行,非常危险
    • 使用未初始化内存
    • 数据竞争: 并发时针对同一块内存同时读写,没有同步

    类似空指针、野指针等绝不会在Rust中产生,因为Rust禁用所有裸指针,而且取消了空值,通过引用和借用这一方式替代。

    3、Rust不需要手动管理内存:
    在Rust之前其他编程语言管理内存的方式有两种

    • 比如Jave和Python的方式无非是使用垃圾回收算法(GC),垃圾回收算法一定会有运行时和垃圾回收时的停顿,不适合系统编程。
    • C++手工管理内存,手工管理内存可能会出现内存泄漏和悬停指针之类的问题。
      Rust通过生命周期和所有权特性,就可以实现内存的自动回收,
什么是系统级编程语言

系统级编程是相对于应用级编程而言的。一般来说,系统级编程语言意味着更底层的位置,更接近硬件层次,并为上层的应用软件提供支持。系统级语言一般具有以下特点:

  • 可以在资源相对有限的环境下执行
  • 运行时开销很小,非常高效
  • 很小的运行库,甚至没有
  • 可以允许直接的内存操作

目前应用最广泛的系统编程语言是C/C++。

Rust的版本号

Rust编译器的版本号采用了“语义化版本号”(Semantic Versioning)规划。在这个规则之下,版本格式为:主版本号.次版本号.修订号。版本号递增规则如下。

  • 主版本号:不兼容的API
  • 次版本号:向下兼容的功能性
  • 修订号:向下兼容的问题

Rust的第一个正式版本号是1.0,是2015年5月发布的。从那以后,只要版本没有出现大规模的不兼容的升级,大版本号就一直维持在“1”,而次版本号会逐步升级。Rust一般以6个星期更新一个正式版本的速度进行迭代。

Rust的发布策略
为了兼顾更新速度以及稳定性,Rust使用了多渠道发布的策略:

  • nightly版本
  • beta版本
  • stable版本

nightly版本是每天在主版本上自动创建出来的版本,功能最多,更新最快,但是某些功能存在问题的可能性也更大。因为新功能会首先在这个版本上开启,供用户试用。
beta版本是每隔一段时间,将一些在nightly版本中验证过的功能开放给用户使用。是stable版本的“预发布”版本

stable版本则是正式版,它每隔6个星期发布一个新版本,也是最稳定、最可靠的版本,保证向前兼容。

为什么选择Rust

  • 高性能
    Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

  • 可靠性
    Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

  • 生产力
    Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。

Rust应用场景

在这里插入图片描述

参考

Rust学习(3):Rust语言介绍
参考URL: https://blog.youkuaiyun.com/zhizhengguan/article/details/85251282

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值