Rust的安全性和稳健型

Rust是围绕安全性和稳健性而设计的。也就是,安全代码是不使用unsafe关键字的代码,

声音代码是不会导致内存损坏或其他未定义行为的代码。“未定义行为”(UB) 在 C、C++ 和 Rust 等语言中具有特定含义,不同于“未指定”或“实现定义”行为。

Rust 最重要的特性之一是承诺所有安全代码都是可靠的。但是当 unsafe涉及到代码时,这个承诺可能会被打破,而且unsafe代码几乎总是在某个地方涉及到。

数据结构喜欢Vec并且在其实现中HashMap有unsafe代码,就像任何与File::open操作系统对话的函数一样。这就引出了一个常见的问题:“如果 Rust 不能保证所有安全代码都是可靠的,它怎么能成为内存安全的语言呢?”

Rust有一个被认为是未定义的行为列表。声音函数是保持以下不变性的函数:任何只调用声音函数且不包含任何其他unsafe代码的程序都不能提交UB。

不直接或间接使用代码的函数unsafe保证是可靠的,一个不unsafe直接使用任何代码而至调用其他声音函数的函数没根据定义也是声音,但是unsafe直接使用代码的函数和模块可能不健全,不健全函数的调用者也可能是不健全。模块的安全、公共API中的任何不健全都是错误的。

参考来源:https://jacko.io/safety_and_soundness.html

点赞
收藏

评论区

加载中...

相关推荐

飞速低代码 | 低代码开发会带来更多安全问题吗?一文了解

​低代码不会带来额外的安全风险,也不会带来更多的运营风险或无法管理的成本,关键是要妥善处理。低代码开发目前已被大量应用,其本身并没有什么安全或不安全一说,所有应用程序开发框架、系统、流程和策略(手动或自动)的安全性取决于企业自身。企业不应该阻止使用低代码工具,而是应引入企业级低代码开发工具,让用户能够了解其工作原理,并鼓励使用这类工具。同时,确保这些工具的安

Rust开发环境搭建

1.Rust概述按照百度百科的说法,Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C类似,但是设计者想要在保证性能的同时提供更好的内存安全。Rust最初是由Mozilla研究院的GraydonHoare设计创造,然后在DaveHerman,Brend

Rust语言开发基础(六)基础语法

一、变量的定义和使用其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust使用关键字let。1\.变量绑定通过let实现fnmain(){letx5;}2\.变量可以是一种模式,自动匹配。let(x,y)(1,2);3\.

Rust 等内存安全语言的安全性并不优于C++?

美国国家安全局(NSA)最近发布了一份关于内存安全重要性的网络安全信息表,建议从内存不安全的编程语言(如C/C)转移到内存安全的编程语言(如Rust)。C之父BjarneStroustrup博士表示,“Rust等内存安全语言的安全性并不优于C”

Rust、Go 和 Swift 在性能和并发性方面有何差异?

Rust是一种系统编程语言,旨在快速、安全和并发。其性能令人印象深刻,可以生成快速高效的机器代码。

文盘Rust -- FFI 浅尝 | 京东云技术团队

rustFFI是rust与其他语言互调的桥梁,通过FFIrust可以有效继承C语言的历史资产。本期通过几个例子来聊聊rust与C语言交互的具体步骤。