1、rust 从哪里来

Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。

Graydon Hoare 是一个职业编程语言工程师,其日常工作就是给其他语言开发编译器和工具集,但是不会参与语言本身的设计,由于这种工作性质,他接触过很多编程语言,了解各种语言的优缺点。比如 c 和 c++,性能比较好,但是类型系统和内存都不太安全;一些拥有 GC 的语言,比如Java、golang、kotlin等,内存是安全的,但是性能却比较低。

于是 Graydon Hoare 萌生了自己开发一门语言的想法,这门语言就是 rust。

2、rust logo

Rust 的 logo 承载了创造者对该语言的期望:

①、Rust 这个单词是由 Trust 和 Robust 组合而成,暗示了信任(Trust)和鲁棒性(或健壮性、Robust)。

②、Rust Logo 的形状与一种叫做锈菌的真菌相似,这种真菌生命力非常顽强,在其生命周期内可产生多达 5 种孢子类型,这 5 种生命形态还可以相互转化。也就是鲁棒性(健壮性)非常强。其 Logo 上面的 5 个小圆孔,与锈菌的 5 种生命形态相对应,也在暗示 Rust 语言超强的健壮性。

3、rust 是什么

在 rust 官网:https://www.rust-lang.org/ ,有这样一句醒目的话:

Rust 是一门赋予每个人构建可靠且高效软件能力的语言。

Rust 是一门系统级编程语言,有三大特点:

①、运行快

②、防止段错误

③、保证线程安全

4、rust 语言版本说明

rust 语言版本从三个不同的维度来讲,包括三个概念。

4.1 语义化版本

其格式为:主版本号.次版本号.修订号,依次用 句点 隔开。

简单说下语义版本号递增规则:

①、主版本号:当做了不兼容的 API 修改。

②、次版本号:当做了向下兼容的功能性新增。

③、修订号:当做了向下兼容的问题修正。

4.2 发行版本

https://github.com/rust-lang/rust/branches/all

①、master 分支:对于一个发行版本

②、beta 分支:对应 Beta 版本,也叫测试版本。

③、stable 分支:对应 Stable 发行版,也叫稳定版。

通常稳定版和测试版每 6 周 发布一次,一般来说,会先发布测试版,经过一段时间测试,在进行发行稳定版。

4.3 Edition 版次

可以看到每个通过 cargo工具(Cargo 是 Rust 的构建系统和包管理器,后面会详细介绍) 创建的 rust项目的 Cargo.toml文件。

版次的意义和语义化是正交的概念,方便rust自身的进化。目前rust有两个版次,分别是 rust2015 和 rust2018。

因为rust每6周发布一次新的语义化版本,版本更新迭代速度快,但是版次通常每 3 年发布一次,之所以存在版次和语义化两种概念,我们可以看这样一个例子:

例如添加可能与代码中的标识符冲突的新关键字,比如 ”async"和“await”,刚开始rust是没有异步的概念,后面我们要添加这两个关键词,但是旧代码可能会把这两个关键词当做变量名来使用,这时候如果只有语义化的概念,我们升级rust版本号,就会造成旧代码编译报错。但是增加了版次的概念就不同了,我们对于之前的代码编译方式选择之前的版次,新的代码编译方式选择新的版次,那么问题就解决了。

因此,如果你正在使用 Rust 2015,并且您的某个依赖项使用 Rust 2018,那么一切正常

开发者可以在 Rust 包管理配置文件 Cargo.toml 来配置 edition = "2018",表示依赖 2018 版次。

编译的时候可以通过:

Rustc --edition 2015|2018|2021

5、rust 能干什么

截止 2021 年,主流的互联网公司都把 Rust 纳入主力语言,比如开发操作系统 Redox/Fuchsia、高性能网络 Tokio、应用的高并发后端 TiKV,甚至客户端软件本身(飞书)。

Rust 除了在其传统的系统开发领域,如操作系统、设备驱动、嵌入式等方向高歌猛进之外,还在服务端高性能、高并发场景遍地开花。

图片截取《极客时间-陈天-rust编程第一课》

Rust 从入门到精通01-简介的更多相关文章

  1. SCRM从入门到精通01

    [SCRM从入门到精通01]如何基于微信开放接口开发企业的微信CRM? 业内一直都在传说微信是天生的CRM,可是没有人看到过微信CRM的真容.随着微信最新公众平台的改版和开放接口的微信认证开放,微信C ...

  2. Redis入门到精通01

    Redis入门到精通 目录 Redis入门到精通 一.Redis缓存框架基本介绍 1.1Redis的应用场景 二.Redis的安装方式 2.1Windows操作系统安装Redis 2.2Linux操作 ...

  3. Rust 从入门到精通03-helloworld

    安装完成 Rust 之后,我们可以编写 Rust 的 Hello Word.这里介绍两种方式,一种是rust原生方式,一种是利用 cargo 工具(重要) 1.rustc 方式 1.1 创建项目目录 ...

  4. Rust 从入门到精通05-数据类型

    Rust 是 静态类型(statically typed)语言,也就是说在编译时就必须知道所有变量的类型. 在 Rust 中,每一个值都属于某一个 数据类型(data type),分为两大类: ①.标 ...

  5. Rust 从入门到精通06-语句和表达式

    1.语句和表达式 语句和表达式是 Rust 语言实现逻辑控制的基本单元. 在 Rust 程序里面,语句(Statement)是执行一些操作但不返回的指令,表达式(Expressions)计算并产生一个 ...

  6. WPF MVVM从入门到精通1:MVVM模式简介

    原文:WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 W ...

  7. Nginx开发从入门到精通 学习目录分享学习 (阿里著作)

    Nginx开发从入门到精通   缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部 ...

  8. 【转】Zabbix 3.0 从入门到精通(zabbix使用详解)

    [转]Zabbix 3.0 从入门到精通(zabbix使用详解) 第1章 zabbix监控 1.1 为什么要监控 在需要的时刻,提前提醒我们服务器出问题了 当出问题之后,可以找到问题的根源   网站/ ...

  9. Scala入门到精通

    原文出自于: http://my.csdn.net/lovehuangjiaju 感谢! 也感谢,http://m.blog.csdn.net/article/details?id=52233484 ...

随机推荐

  1. 解构HE2E中的Kubernetes技术应用

    摘要:我们从Kubernetes技术应用的角度解构华为云DevCloud HE2E DevOps实践. 本文分享自华为云社区<解构HE2E中的Kubernetes技术应用>,作者: 敏捷小 ...

  2. k8s的api资源

    NAME SHORTNAMES APIGROUP NAMESPACED KIND 资源用途说明 bindings     TRUE Binding 已弃用.用于记录一个object和另一个object ...

  3. 在windows下使用s3cmd和s3browser来管理amazon s3的笔记

    S3是Amazon S3的简称,s3cmd是一款命令行工具用来管理s3,同时还有一款图形化的管理工具:s3 browser. 因为绝大多数用户都是在linux下管理s3,而我们的打包机是在window ...

  4. 基于数传电台的组态王控制实现远程采集控制器PLC

    「物联网应用案例」基于数传电台的组态王控制 一.案例介绍 采用亚控科技组态王结合亿佰特E90系列数传电台实现远程采集控制PLC.在这里主要介绍通信环境的搭建,故不采用过于复杂的控制程序,但为了体现控制 ...

  5. CSRF跨站请求伪造与XSS跨域脚本攻击讨论

    今天和朋友讨论网站安全问题,聊到了csrf和xss,刚开始对两者不是神明白,经过查阅与讨论,整理了如下资料,与大家分享. CSRF(Cross-site request forgery):跨站请求伪造 ...

  6. electron-vue 项目启动动态获取配置文件中的后端服务地址

    前言 最近的项目迭代中新增一个需求,需要在electron-vue 项目打包之后,启动exe 可执行程序的时候,动态获取配置文件中的 baseUrl 作为服务端的地址.electron 可以使用 no ...

  7. dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能

    我对几个应用进行严格的启动性能评估,对比了在 .NET Framework 和 dotnet 6 下的应用启动性能,非常符合预期的可以看到,在用户的设备上,经过了 NGen 之后的 .NET Fram ...

  8. 『忘了再学』Shell流程控制 — 35、多分支case条件语句

    目录 1.case条件语句介绍 2.case语句需要注意的内容 3.练习 示例1 示例2 1.case条件语句介绍 case语句和if-elif-else语句一样都是多分支条件语句,不过和if多分支条 ...

  9. 监控pos收银机

    1.打开pos收银机snmp功能 控制面板-->程序和功能-->启用或关闭windows功能→简单网络管理协议(SNMP) 2.配置snmp服务 控制面板-->管理工具-->服 ...

  10. Android 12(S) 图像显示系统 - HWC HAL 初始化与调用流程

    必读: Android 12(S) 图像显示系统 - 开篇 接口定义 源码位置:/hardware/interfaces/graphics/composer/ 在源码目录下可以看到4个版本的HIDL ...