文章目录

  • RUST
    • 背景
    • 什么是rust
      • 什么是系统级编程语言
  • Rust的版本号
  • 为什么选择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.csdn.net/zhizhengguan/article/details/85251282

了解Rust语言(rust是什么)相关推荐

  1. Rust 语言中文网络内容建设

    本文时间:2018-11-21,作者: krircc, 简介:天青色 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 Rust中文社区首页 Rust中文社区Rust文章栏目 知乎专栏R ...

  2. 【rust语言】(1):开始学习rust语言,使用vscode进行开发,rust不要做为自己的第一门开发语言,c++和rust都要学习好,成年人两个都要。

    目录 前言 1,关于Rust学习,对比了一段时间还是决定学习了 2,官方网站 3,使用Cargo创建项目和进行包管理, 4,增加项目依赖包,和nodejs比较像 5,另外一个tauri app 框架, ...

  3. rust语言的配置与编译 Day01

    文章目录 rust的安装 使用cargo来调试rust文件 为什么要学习rust: 为什么要学习rust语言 rust语言的优点和缺点? rust语言的优点与缺点 PS:这是我的学习笔记,根据B站某u ...

  4. Rust 语言风靡学术界

    AWS 将 Rust 编译器团队负责人收入麾下的新闻让开发者们再次聚焦于这门兼具安全性与高性能的编程语言.近日,著名科学期刊 Nature 刊登了一篇文章,表明 Rust 语言也正在成为学术界最受欢迎 ...

  5. Bitcoin.com开发人员正创建一个用Rust语言编写的BCH全节点

    近日,Bitcoin.com开发人员Gabriel Cardona在推特表示,自己正创建一个用Rust语言编写的BCH全节点,目的是为了改变完整节点的范式,让BCH代码库更加安全.编程人员技术贡献更加 ...

  6. Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争...

    2006年,编程语言工程师Graydon Hoare利用业余时间启动了Rust语言项目.该项目充分借鉴了C/C++/Java/Python等语言的经验,试图在保持良好性能的同时,克服以往编程语言所存在 ...

  7. Rust语言之HelloWorld Web版

    Rust语言之HelloWorld Web版 Rust语言之HelloWorld Web版 下面这篇文章值得仔细研读: http://arthurtw.github.io/2014/12/21/rus ...

  8. Redox随笔(1)-用Rust语言编写的类UNIX操作系统

    Redox是一个用Rust语言编写的类UNIX操作系统 , 它的目标是把Rust语言的创新带入到一个现代的微内核和全系列的应用程序. https://www.redox-os.org/zh/docs/ ...

  9. golang byte转string_Golang和Rust语言常见功能/库

    时下最流行.最具发展前途的的两门语言是Golang和Rust.Golang语言简洁.高效.并发.并且有个强大的囊括了常见功能标准库.与之相对比,Rust语言则主要是安全.高性能.虽然Rust没有gol ...

  10. Mozilla 将 Firefox 的命运与 Rust 语言捆绑在一起

    图自:Pixabay Mozilla 将 Firefox 的命运与 Rust 语言捆绑起来.Rust 是 Mozilla 主导开发的注重安全.速度和并发的系统级编程语言,最新版本为 1.15. 随着 ...

最新文章

  1. java webstock 在线直播_在线教育直播开发的这些知识你知道吗?
  2. 利用Python延迟初始化提升性能
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1088:分离整数的各个数
  4. Loj#2035-[SDOI2016]征途【斜率优化】
  5. Java 处理空指针异常(java.lang.NullPointerException)空比较
  6. VB小技巧 文本框中屏蔽系统右键菜单用自定义菜单代替自带右键菜单
  7. PL/SQL Developer工具的使用简介
  8. 【linux】-bash: vim: 未找到命令
  9. python爬取斗鱼弹幕_【Python3爬虫】斗鱼弹幕爬虫
  10. php登陆注册加密函数,php加密函数_php用户自定义加密函数
  11. sql在select中添加内容为空的字段
  12. linux启动lighttpd服务,Linux下Lighttpd的安装配置
  13. android 流星动画,超简单的android 流星雨动画 流星动画
  14. 智能云电视机顶盒怎么连接(设备连接方法和注意项)
  15. Ubuntu更新卡在 flashplugin-installer
  16. 武汉星起航跨境电商到底靠不靠谱?亚马逊跨境收款方式有哪些?
  17. MDX的实例讲解(排名前15的小例子)
  18. 计算机辅助训练对吞咽障碍,吞咽障碍的六大家庭训练方法
  19. 程序员的办公桌上,都出现过哪些神奇的玩意儿 ~
  20. catia 斑马线分析,汽车A级曲面定义标准及检查分析

热门文章

  1. 关于公寓房教职工购买限价商品房的相关说明
  2. 初中生函授大专计算机能生本科吗,函授大专能升本科吗 有几种方式
  3. 免费视频直播、点播H5播放器SkeyeWebPlayer 结合百度地图sdk实现电子地图播放功能
  4. Python数据分析工具
  5. android手机联调,安卓手机联调Chrome调试H5页面
  6. 爬虫实战之爬取古诗文网站 (详细)
  7. Linux7启动服务ntpd,CentOS7安装与配置ntpd服务
  8. lombok 多个构造器
  9. java新手的通病_编程随想:Java新手的通病 PDF 下载
  10. 华中农大计算机排名,南京农业大学和华中农业大学哪个好啊,作为一个抱着在农业大学学计算机的想法的毕业党..有不有可爱的学长学姐给点意见...