< 返回版块

【Rust每日新闻】 2018-12-04

ChaosBot 发表于

「付费阅读」 如何为Rust语言做贡献

本文基于macOSX平台,通过对Rust 1.32 Nightly版本中rustdoc的一个ICE问题进行复盘,分析并记录整个Bug修复的过程。主要目的是,通过这个过程,来学习如何给Rust做贡献。

(阅读时间:17m)

  1. 缘起

  2. Rust本地调试环境准备

  3. ICE问题分析

  4. 调试代码

  5. 提交PR说明

Read More


cargo-inspect: 探索Rust内部的工具

#cargo #inspect

之前介绍过这个库,今天看到该库作者写了篇文章,更详细介绍它的用法。

Read More

cargo-inspect


cargo-call-stack: 分析程序中的静态调用栈

#cargo #call_stack

官方嵌入式组老大japaric写的库。可以对整个程序做静态调用栈的分析,可以最终生成svg图片。调用栈分析结果还包含了栈的具体使用情况(以字节为单位),以及包括Max最大值。

在写一些对栈内存要求苛刻的程序,比如嵌入式,比较有用。

cargo-call-stack

img


Rust 1.31.0 预览版 测试

#rust

Rust 1.31.0版本代表Rust 2018 edition的首个版本。

Release Log


「博文」教你如何用Rust写C++

#cpp

长文预警!

背景: Firefox有一个名为encoding_rs的新字符编码转换库。它是用Rust编写的,取代了1999年初发布的名为uconv的旧C++字符编码转换库。因为调用该字符编码转换库的都是C++代码,所以新的库,尽管用Rust编写,但是该库在C++调用者看来,应该像是一个现代的C++库。也就是说,提供给C++调用者的接口使它看起来和感觉就像一个真正的C++库。

(啊哈?假装写C++,你学到了吗?)

Read More


「CLI」indicatif: 命令行进度条工具

#cli #indicatif #color #progressbar

可生成各样且彩色的进度条,非常酷。就不上图了。

indicatif


另一个轻量级的序列化框架:sval

#sval #serialization

sval

Read More


未定义行为确实是未定义的

#ub

未定义行为是C/CPP中用来描述任何事情都有可能发生的状况。UB历史上涵盖了现有C编译器以不可调和的方式行事的案例。标准委员会以其无限的智慧决定:不做任何决定。UB也适合标准未能定义的行为假设。然而,这个概念很快又有了新的意义:UB代表了优化的机会。C/Cpp开发人员真的很喜欢优化,他们非常坚持要求编译器尽最大的努力来让代码快速执行。

文章里列出了很多C的未定义行为案例,告诫C/Cpp开发者应该尽量避免UB,或者,最好不要使用C/C++。

Read More


C数据结构转换为Rust只需要四步

#C

作者在rust-and-c,展示了如何从较大的C程序中获取数据结构并将其转换为Rust代码。该git仓库中的每次提交都对应一个转换步骤:

  • 将Cargo集成到makefile中
  • 创建C库的Rust绑定
  • 用Unsafe Rust实现替换掉C库
  • 用Rust包装C API

最后,除了struct声明之外,实现是100%Rust。

Read More


每日新闻订阅地址:

欢迎通过GitHub issues投稿。

评论区

还没有评论

共 0 评论, 共 0 页