ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Rust日报】 2019-07-31:Debian Buster 将会预装Rust编译器

2021-05-10 13:53:33  阅读:165  来源: 互联网

标签:Read 预装 别名 编译器 优化 Rust


SO问答」既然两个可变引用不能别名为啥Rust编译器没有对其进行优化

#Rust #stackoverflow

该问题的作者描述,比如C代码中:

void adds(int  *a, int *b) {
   *a += *b;
   *a += *b;
}

两个指针a和b有可能互为别名(俩指针指向同一数据),所以clang在编译该代码的时候,会在寄存器中存储两次(%rsi),%eax来防止这种情况。当然也可以使用restrict关键字来对参数进行约束,显式地告诉编译器这俩指针不可能互为别名(但在C语言中,restrict关键字仅仅是告诉编译器可以优化,它不会帮助开发者进行检查,也就是说,很可能因为开发者没有遵循此契约而引发未定义行为)。从而生成的优化代码中只存储一次寄存器。

但是作者发现在Rust中虽然有编译器检查,两个可变引用不存在互为别名的情况,但是编译器并没有因此而进行任何优化:

#![crate_type = "staticlib"]
#[no_mangle]
fn adds(a: &mut i32, b: &mut i32) {
   *a += *b;
   *a += *b;
}

所以他比较担忧,是不是在Safe Rust之下也可能存在别名?

该贴的回复给出了答案:

Rust最初启用了LLVM的noalias属性,但这导致了非预期的编译结果(算是LLVM的一个Bug,等issues 54878修复以后就正常了)。现在也可以使用-Zmutable-noalias=yes参数进行编译就能得到预期结果。

  • Read More

  • issues/54878

「学术」使用类型化指针反转进行高效析构

#TypedPointerReversal #paper

HAL INRIA貌似是法国国家信息及自动化研究院。该论文提出了ML风格编程语言的资源管理模型,旨在兼容OCmal理念和运行时模型,提议使用析构函数扩展OCmal,在系统编程所有权和借用模式之上来提升OCmal的安全性、效率。

没错,借用了Rust/C++中的一些概念。感兴趣的可以看看,对资源管理应该会有深入的了解。

该组织已经发布了多篇关于Rust研究的论文了。

Read More

Python和Rust实现神经网络

#NeuralNetworks

这篇文章是作者探索Rust是否适合数据科学的工作。他分别用python和rust实现了一个小型的神经网络,然后进行了性能测试,利用火焰图进行分析,最终得出一个结论:

  • 大部分时间都花在做线性代数上,不管Rust还是Python,所以使用Rust永远也不会有10倍的加速。

  • Python进行优化以后,性能可以提升两倍,Rust原则上可以进行相同的优化,但目前ndarray还不支持2维数据以上的矩阵乘法。

  • 作者认为,Rust目前还没有做好胜任数据科学的工作。未来还需要更完善的生态系统。

Read More

关于Rust依赖安全的最新思考

#RestSec

很高兴有人在帮我们思考这个问题:当一个crate依赖越来越多的crates时,我们有什么办法可以审计它们?

Read More

paperclip: OpenAPI的代码生成工具

#openapi #WIP

0.3发布,支持OpenAPI V2接口。

paperclip

rocket-lamb: 方便在aws lambda上面跑rocket的库

#rocket

rocket-lamb

async-injector: Rust的异步反应式依赖注入库

#async

新库,WIP状态。该库是从作者的另外一个项目OxidizeBot(高性能Twitch机器人)中提取出来的。

  • Read More

  • async-injector

  • OxidizeBot

「讨论」Rust如何实现代数效应

#AlgebraicEffects

看样子该贴作者是一个函数式粉丝。评论回复中有人用Rust实现了一个代数效应库effective-rust。

代数效应目前是一个学术/实验概念,它允许你通过使用类似于throw catch的机制来改变称为“效果”的某些计算元素(如函数调用,打印语句等)。

  • Reddit 讨论

  • effective-rust

  • Algebraic Effects相关文章

  • what-does-algebraic-effects-mean-in-fp

Debian Buster 将会预装Rust编译器

#Debian

2019年7月6日发布的Debian GNU/Linux 10 “Buster” 操作系统将预装Rust编译器。

图片


From 日报小组 Chaos


标签:Read,预装,别名,编译器,优化,Rust
来源: https://blog.51cto.com/u_15127605/2765243

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有