本文主要完成下载和编译libra。
rust介绍
因为Libra是客户端开发工具开源出来的是rust版本,rust语言是一种新的语言,在国内开发使用的人很少。在语言排行榜排行不入20.
Rust是一门系统编程语言 [1] ,专注于安全 [2] ,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似 [3] ,但是设计者想要在保证性能的同时提供更好的内存安全。 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。 [4] Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。 [5]
Rust编译器是在MIT License 和 Apache License 2.0双重协议声明下的免费开源软件。 Rust已经连续三年(2016,2017,2018)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠。
设计特色
Rust致力于成为优雅解决高并发和高安全性系统问题的编程语言 [10] ,适用于大型场景,即创造维护能够保持大型系统完整的边界。这就导致了它强调安全,内存布局控制和并发的特点。
标准Rust性能
标准rust性能与标准C++性能不相上下。
语法
Rust的具体语法和C,C++类似,都是由花括号限定代码块,还有一样的控制流关键字,例如if,else,while,和for。然而也并非所有的C或者C++关键字被实现了。某些Rust函数(比如关键字match用于模式匹配)对于那些精通这些语言的人就没那么熟悉了。尽管与C/C++极其相似,Rust在深层语法上跟元语言家族的语言像是Haskell更接近。基本上一个函数体的每个部分都是表达式,甚至是控制流操作符。例如,那个普通的if表达式也取代了C的三元表达式。一个函数不需要以return表达式结束,在这种情况下函数最后的表达式就是返回值。
内存安全
Rust语言系统设计于保证内存安全,它在安全代码里不允许空指针,悬垂指针和数据竞争。数值只能用一系列固定形式来初始化,要求所有输入已经被初始化。在其它语言中复制函数指针或者有效或者为空,比如在链表和二叉树等数据结构中,Rust核心库提供Option类型,用来测试指针是否有值。Rust同时引入添加语法来管理生命周期,而且编译器通过租借检查器来说明相关理由。
内存管理
Rust不像Go,Java以及.NET Framework那样使用自动垃圾回收系统。不同的是Rust通过RAII来管理内存和资源,还可选引用计数。Rust以低开销提供资源确定性管理。Rust也支持值的栈分配并不表现暗箱。
Rust里也有引用概念(用&符号),不包含运行时引用计数。使得此类指针的安全性已获得租用检查器的编译时验证,阻止悬垂指针和其它形式的末定义行为。
所有权
Rust有一个所有权系统,所有的值都有一个唯一的属主,值的有效范围跟属主的有效范围一样。值可以通过不可变引用&T传递,可变引用&mut T传递,T值递。在任何时候,或者有多个不可变引用,或者只有一个可变引用。Rust编译器在编译时执行这些规则同时检查所有引用的有效性。
类型和多态
Rust的类型系统支持一种类似类型类的机制,叫“traits”,是被Haskell激发灵感的。这是一种用于特定同质法的设施,通过给类型变量声明添加约束来实现。其它来自Haskell的特性,如更高类型多态还没有支持。
Rust为以let关键字声明的变量而产生类型推特导特性。这样的变量不需要赋初值来判断类型。如果某个分支代码没能给变量赋初值将会产生一个编译时错误。对变量进行多次赋值要使用mut关键字标记。
函数可以接收泛型参数,但通常要求泛型实现某种特性或者几种特性。在这种函数里面,这种泛型值只能通过这些特性来使用。这就是说一个泛型函数在定义的时候就能完成类型检查。这是对标C++模板,那种本质鸭式,只能在以具体类型实例化后完成检查。C++概念解决同样的问题,并且有希望能成为C++20标准的一部分。
然而,Rust泛型的实现与C++模板的典型实现类似:每次实例化都会生成一份单独的代码这被称作单态,和经常在Java和Haskell中使用的类型擦除方案类比。单态的好处是为每一个具体用例提供优化代码,缺点是增长了运行时和很多结果文件。
Rust里面的对象系统是基于实现,特性和结构化类型的。实现扮演的角色跟其它语言中的类相似,以关键字impl来定义。继承和多态是由特性提供;它们允许方法被定义或者混合在实现里面。结构类型用于定义字段。实现和特性自己无法定义字段,而且只有特性能够提供继承。至于其它好处,这个阻止了多继承中的菱形继承问题,像C++一样。换句话说,Rust支持接口继承,但是通过复合替代实现继承;参见继承复合。
创建目的
创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现Null指针等等。 [11]
rust编辑器安装
安装rust
centos下面
mkdir libra
cd libra
mkdir rust
cd rust
$ curl -f -L https://static.rust-lang.org/rustup.sh -O
$ sh rustup.sh
安装rustc,cargo ruststd rustdoc rustfmt clippy 等相关的库
libra的安装和链接测试网路
git 下载libra
cd libra
gitclonehttps://github.com/libra/libra.git
下载后目录如下,目录说明参考下篇
cd sripts
sh dev_setup.sh #该命令会自动更新rust的编译最新版本。
cd cli
输入 sh
sh start_cli_testnet.sh
开始连接 testnet,将测试公链数据下载到本地
从上面可以看出libra区块链的使用的底层存储室rocketdb。详细分析参考下章
总结
从上面可以看出来,libra安装还是比较方便,大概熟手需要1个-到2个小时,主要耗时在下载安装包和同步测试数据上面。希望该篇文档对大家有帮助