0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

cargo careful:为你的代码提供更多安全保证

jf_wN0SrCdH 来源:Rust语言中文社区 作者:hsqStephenZhang 2022-10-27 09:52 次阅读

cargo careful:为你的代码提供更多安全保证

您是否知道标准库充满了用户永远看不到的有用检查?标准库中有很多断言,它们会做一些事情,比如检查char::from_u32_unchecked必须针对一个有效的 char、CStr::from_bytes_with_nul_unchecked只能在没有内部 null 字节的情况下调用,copy或者copy_nonoverlapping必须针对内存布局对齐的非 null 指针(非重叠)。但是,由 rustup 分发的常规标准库是在没有调试断言的情况下编译的,因此用户很难从这些额外检查中受益。

cargo careful 就是为了弥补这个差距,它在第一次调用时,会从源代码构建一个带有调试断言的标准库,然后使用该标准库运行您的程序或测试套件。

您可以通过cargo install cargo-careful快速安装,然后执行cargo +nightly careful run/test用于执行二进制 crate 或测试,并进行额外的调试检查。

需要注意的是,这自然会比常规调试或发布版本慢,但它比在 Miri 中执行程序要快得多,并且仍然有助于找到一些未定义的行为。当然,如果您想要更加彻底的检查,Miri 会是一个更好的选择,两者结合使用,体验更佳。

Axum 风格的函数参数示例

作者使用 Axum 时候,思考了这样一件事:Rust 是一个静态编译的语言,并且没有函数重载和可选参数这类特性,但是 Axum 中,get函数却可以接收不同类型的函数指针,这是为什么呢?

pYYBAGNZ5MCAYh6nAAD3HjtnuF0048.jpg

作者创建了一个仓库,动手实践,详细解释了其中的奥秘。

值得一提的是,Axum 当时也参考了 bevy 的 query system 设计。

编译器优化的思考

Rust 编译器背后为我们做了很多优化,但是,如果让你来实现,你会如何下手呢?典型的思路可能是:

找到可以应用特定优化方法的场景

通过分析,找到这种场景

应用你的优化方法

如果将很多编译优化方法结合起来,编译器的性能就能提升一大截。但是,这也绝非易事,在一个场景下实现编译优化,所要考虑的因素和需要的信息,远比你想象的要多。

本文的作者就通过几个例子,解释了他对于编译优化背后的思考,相信你耐心看完,肯定有不少收获。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1591

    浏览量

    48819
  • rust语言
    +关注

    关注

    0

    文章

    57

    浏览量

    2977

原文标题:【Rust日报】2022-09-27 cargo careful:为你的代码提供更多安全保证

文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    安全芯片能否保证芯片安全?

    ,由于软件加密只是增加破解难度,不能防止复制,越来越多的设计采用硬件加密方式来保护IPCORE。以常见的MCu+存储器系统例,通常的保护模式是在系统文件中设置一段用于验证的加密安全代码,通过存储器
    发表于 10-10 14:42

    使用PMIC来保证的系统安全

    当你在设计安全控制面板或是自动门锁等电池供电运行的便携式系统时,电路板上的每一英寸都很宝贵,每一秒钟的操作与运行也十分重要,并且(最后一点,不过也很重要)系统所花费的每一分钱都应该发挥其应有
    发表于 09-06 15:31

    工业用物联网多种行业提供更多服务

    (比如说能源、制造、养护维修等),并且为多种行业提供更高的安全和安防性能、更好的使用体验、全新的业务服务,以及其它更多功能,这些行业包括:智能制造业:为了改进制造工艺,制造商正在将有线和无线连通性添加到
    发表于 09-10 11:57

    未来汽车的安全怎么保证

    ,同时让我们可以更有效地利用现有的道路设施,在减少安全事故的同时实现更大的交通流量。 回到之前的话题,在改善驾驶员辅助、自动驾驶员服务和实现更多自主功能的同时,开发人员如何保证这些自主驾驶系统不会
    发表于 03-27 06:45

    能否提供示例的源代码或为wifi连接模块添加更多入门指南呢?

    预算项目使用繁重的操作系统)。我喜欢“STM32H7B3I-DK 编译的演示二进制文件”中的示例,但找不到源代码。您能否提供示例的源代码或为 wifi 连接模块添加更多入门指南?谢谢。
    发表于 12-06 06:15

    如何在构建yocto时将rust和cargo包安装为图像?

    我正在使用 5.15.72。 当我制作 imx 完整图像时,我尝试包括 rust 和 cargo知不知道怎么?
    发表于 05-09 07:10

    如何保证安全用电

    如何保证安全用电是电工实用技术丛书,本书结构合理、选材适当、文字精练、深入浅出,对如何保证安全用电作了系统全面的分析介绍。《如何保证
    发表于 11-09 14:27 0次下载
    如何<b class='flag-5'>保证</b><b class='flag-5'>安全</b>用电

    KIOCWORK:通过源代码分析保证软件安全

    KIOCWORK公司给软件开发人员、构架师和安全专家提供检查、评估、处理、度量软件安全漏洞的工具,这些活动是软件开发过程中不可或缺的重要组成部分。 通过使用KIOCWORK源代码分析工
    发表于 04-03 22:21 12次下载

    华为云顺利通过TISAX认证,汽车行业上云提供更多安全保障

    极高保护要求和数据保护标签,是目前唯一国内数据中心完成TISAX认证的云服务商。这表明华为云获得了汽车行业提供云服务的重要资质,可以为汽车行业客户安全上云提供
    的头像 发表于 12-29 14:16 2530次阅读
    华为云顺利通过TISAX认证,<b class='flag-5'>为</b>汽车行业上云<b class='flag-5'>提供</b><b class='flag-5'>更多</b><b class='flag-5'>安全</b>保障

    保证锂离子电池安全的设计资料下载

    电子发烧友网提供保证锂离子电池安全的设计资料下载的电子资料下载,更有其他相关的电路图、源代码
    发表于 04-05 08:40 8次下载
    <b class='flag-5'>保证</b>锂离子电池<b class='flag-5'>安全</b>的设计资料下载

    cargo-offline命令解读

    修改过,来给被包装的 cargo 命令条件地增补 --offline 命令行参数(即,离线编译)。形象地讲,就是将 cargo check 条件地变形 cargo check --o
    的头像 发表于 12-01 15:41 896次阅读

    CodeArts如何保证客户代码和应用安全

    华为云有IAM统一认证。CodeArts原名“DevCloud”上每个项目均设有权限管理机制。 CodeArts让企业级用户使用安全、可靠的环境,提供企业级病毒防护。存储和运行环境均有冗余节点,并提供跨区域容灾备份解决方案。
    的头像 发表于 12-09 15:39 483次阅读

    CARGO:改变您使用3D资产的方式

    今天我们发布了Cargo,这款软件将彻底改变您使用3D资产的方式。Cargo适用于Windows,开箱即用,可与Blender、Unreal、3dsMax 和Maya等3D软件一起使用。让我们解开
    的头像 发表于 06-26 10:08 801次阅读

    如何安装和使用cargo

    Cargo是Rust语言的包管理器和构建工具。它能够帮助我们管理依赖、构建项目、运行测试和发布程序等。在Rust社区中,Cargo已经成为了标准的构建工具,它为Rust的开发者提供了极大的便利
    的头像 发表于 09-20 11:28 1220次阅读

    如何知道代码是否线程安全

    的?如何知道代码是否线程安全?要如何访问数据才能保证数据的安全? 本篇文章会一一回答的问题
    的头像 发表于 11-01 11:42 471次阅读
    如何知道<b class='flag-5'>你</b>的<b class='flag-5'>代码</b>是否线程<b class='flag-5'>安全</b>