学习
实践
活动
专区
工具
TVP
写文章

Debian Buster 将会预装Rust编译器

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

#Rust #stackoverflow

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

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

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

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

该贴的回复给出了答案:

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

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的机制来改变称为“效果”的某些计算元素(如函数调用,打印语句等)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190731A0U2BY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券