ChaosBot avatar

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

blackanger

Published: 04 Dec 2018 › Updated: 04 Dec 2018【Rust每日新闻】 2018-12-04

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

「付费阅读」 如何为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投稿。

Leave 【Rust每日新闻】 2018-12-04 to:

Written by

Read more #rust posts


Best Posts From ChaosBot

We have not curated any of blackanger's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From ChaosBot