【Rust日报】 2019-04-05

2024-06-23 01:38
文章标签 rust 2019 04 05 日报

本文主要是介绍【Rust日报】 2019-04-05,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

「系列文章」审阅Sled源码 Part I

#CodeReview #sled

Sled项目是一个用Rust编写的嵌入式数据库。该文作者在日程工作中用到了它,为了掌握它的工作原理,准备开始写这个系列的博客。也可以通过学习此文,掌握一些阅读开源项目源码的技巧或其他启示,比如:

  • 先找你擅长领域的项目去阅读,事半功倍。
  • 从整体上先把握代码组织结构、依赖库,从所获得的信息中去推测更多信息。
  • 携带某个主要的问题去看源码是如何实现的。

该文作者还有一个完整的review LevelDB的系列文章:reviewing-leveldb

  • Read More
  • reviewing-leveldb

Smithy: 一个Rust实现的WebAssembly框架

#wasm #smithy

状态:0.0.2 Alpha版本。

  • Read More
  • smithy
  • 在线Demo
  • demo源码:smithy_todolist

案例:使用Rust和Lucet

#wasm #lucet

Lucet是一个本地WASM编译器和运行时。基于Lucet运行时,Rust编译为wasm32-unknown-wasi target就可以创建一个运行于服务端的wasm程序。目前wasm32-unknown-wasi只支持Rust Nightly(2019-04-01版本确定可用)

  • Rust官方PR: Add a new wasm32-unknown-wasi target
  • Read More

Gloo更新:Onion层、计时器和事件

#Gloo

Gloo是一个用Rust和Wasm构建快速可靠的Web应用程序和库的模块化工具包,于两周前开始构建。最新的进展如下:

  • 增加了「“洋葱”分层API」。

也就是说,API的构建就像是洋葱一样,分好几个抽象层。他们希望在raw-sys库之上构建一层中级的API,然后在中级API层再构建一层高级的面向用户的API。并且每一层都是公开暴露接口并可复用。这样设计是为了最高限度地提高大型生态系统的可重用性、通用性等。

其中核心层API是构建在wasm-bindgen,js-sys和web-sys之上的原始绑定。中间层是回调(callback)层,比如gloo_timers就包含在这一层。高级层是Futures和Steams层,当然现在是futures 0.1,等异步稳定以后再切换到最新的。未来也有可能增加更高的抽象层。比如某些Web API或是为了生态系统而集成的层。

  • 另一个正在进行的设计是如何制作事件目标和监听器层。

Read More


深入字体回退(Font Fallback)机制

#font #xi_editor

XiEditor作者新博文,深入介绍了字体回退机制。

在操作系统介面和网页等现代排版环境下,如果指定用字体 A 来显示某字符 x 但该字体并不支持这个字符(甚至该字体当前不可用),排版引擎通常不会直接放弃,它会根据一个预先记好的列表来尝试寻找能显示字符 x 的字体,如果找到字体 B 能行,那就用字体 B 来显示字符 x。字体 B 就是当前这个情况的 fallback。

  • 字体回退机制参考
  • Read More

json_in_type: 快速JSON编码库

#json

特点:

  • 编译时执行更多编码操作,运行时更少。
  • 在类型中编码JSON对象的结构。
  • 性能据说比serde的json!高出一个数量级。

比如:


// JSON Stringr#"{"void":null,"list":[42,true],"hello":"world"}"#,//  Type
InlinedJSONObjectEntry<(),InlinedJSONObjectEntry<JSONListElem< u8, JSONListElem<JSONtrue, JSONListEnd> >>,JSONObjectEntry< &str, &str, JSONObjectEnd>
>

json_in_type


「视频」纯Rust实现SCTP以便支持WebRTC数据通道

#webrtc #sctp

SCTP: Stream Control Transport Protocol

  • Read More
  • Slides
  • demo演示视频

编译器性能和LLVM

#llvm #compiler

本文作者以他自己实现的Cone编译器为案例深度探索了编译器架构和LLVM的性能,并比较全面地阐述了LLVM的性能概况。

  • 编译器架构。Cone选择了C,而非Rust,是因为作者对性能更关心一些,他认为C更好。还介绍了一些前端架构的优化原则。
  • LLVM后端性能。作者测量了LLVM后端各个编译阶段的性能,顺带阐述了LLVM的构建流程。

LLVM构建流程:

  • Setup。初始化有关目标计算机,数据布局和全局上下文的信息。这个阶段的执行时间是固定的,不会随着源程序的增大而变长。
  • Gen LLVM IR。Cone和LLVM的混合阶段,作者的Cone编译器会生成LLVM IR,就像Rust一样。同时作者也实现了一个Cone IR,类似于Rust的MIR。但Cone可能比Rust更快一些,因为没有Rust这么多分析。
  • 验证LLVM IR。这个过程是对LLVM IR的有效语义进行分析。确保IR的格式正确、通过类型检查,其算法复杂度为O(n),与LLVM IR节点的数量成正比。
  • 优化LLVM IR。将执行6次LLVM优化:将栈变量转换为寄存器、函数内联、窥孔优化(peephole optimization)、位操作优化(bit twiddling)、公共子表达式消除和控制流程简化。一些优化过程可能是O(n),但某些复杂的可能是指数级的。
  • 生成目标,并将其存储于磁盘。此阶段占整个LLVM运行时间的73%。

小百科

窥孔优化可以在四个方面寻找优化机会:冗余指令删除,包括冗余的load和store指令以及死代码(不会执行的代码);控制流优化;强度削弱;利用特有指令。

作者也从LLVM架构上探讨了LLVM缓慢的原因。并且作者还打算继续研究优化LLVM的方案以及替代LLVM的方案。更多详细请阅读原文。

  • Read More
  • Reddit 讨论

Wafer: 并行三维FDTD 薛定谔(Schrödinger)方程求解器

#scientifc_computing #quantum_mechines

科学计算库

  • Wafer
  • 科普伟大的物理方程(3)薛定谔方程

像素级Ferris动态表情

#gif

Read More


mdbook-bookimport:支持从其他文件将代码或文本导入到mdbook中

#mdbook

  • mdbook-bookimport
  • Guide

rust-slothgl: 命令行3D软件光栅化工具

#tui #termion

由termion,tobj和nalgebra制作的独一无二的命令行3D软件光栅化工具。目前支持没有纹理或材质的OBJ文件格式。

img

  • rust-slothgl

UFO: 用于无人机/无人机/四轴飞行器/RC航模的Rust库

#Drone #UAV #Quadcopter #RCPlane

状态:WIP

ufo


orderly: 可提供有序、受控的一组进程

#erlang #supervisor #process

该库从erlang supervisor树汲取灵感,它提供了构建监督进程树的机制,当进程重启率超过指定限制时,失败可以传播。旨在为服务/容器等提供稳定支持。

  • orderly
  • Docs

Witnet Foundation: Rust区块链工程师招聘

#job

新加坡公司,非远程。Witnet-将智能合约连接到任何外部数据源。

  • Read More

minitt-rs: Mini-TT的Rust实现

#lang #learning

Mini-TT是一个简单的依赖类型语言。minitt-rs是它的Rust实现,并且还提供了一个REPL。 作者是@ice1000

  • minitt-rs
  • Mini-TT论文

「官方」当前Async已经修复的问题

#async

在最近的一条已merge的PR中,顺便列出了所有已被修复的async中已知的生命周期问题。

rust/pull/59286


日报订阅地址:

  • Telgram Channel
  • 阿里云语雀订阅
  • Stemmit
  • Rust.cc论坛
  • GitHub

这篇关于【Rust日报】 2019-04-05的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085972

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

Rust:Future、async 异步代码机制示例与分析

0. 异步、并发、并行、进程、协程概念梳理 Rust 的异步机制不是多线程或多进程,而是基于协程(或称为轻量级线程、微线程)的模型,这些协程可以在单个线程内并发执行。这种模型允许在单个线程中通过非阻塞的方式处理多个任务,从而实现高效的并发。 关于“并发”和“并行”的区别,这是两个经常被提及但含义不同的概念: 并发(Concurrency):指的是同时处理多个任务的能力,这些任务可能在同一时

【设计模式-04】原型模式

【设计模式-04】原型模式 1. 概述2. 结构3. 实现4. 案例5. 使用场景6. 优缺点6.1 原型模式的优点6.2 原型模式的缺点 7. 实现深克隆(深拷贝) 1. 概述 原型模式: 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 2. 结构 原型模式包含如下角色: 抽象原型类:规定了具体原型对象必须实现的 clone() 方法。

C++ 教程 - 04 类的使用

文章目录 类的定义类定义案例构造函数 类的定义 C++ 在 C 语言的基础上增加面向对象编程,类是用于指定对象的形式,是一种用户自定义的数据类型,封装了数据和函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。 class 关键字定义类,相当于在结构体中加入方法; 花括号内定义成员变量、成员方法,并且分块表示,每块使用public/private/prote

05 TensorFlow 2.0:CNN总结及实战

浮云爱蹉跎 流光怕寂寞 填残篇脉络 续断章因果 问今生旅途几时交错 前尘灯火 隔世传说                                                                                                                                 《流光卷》 卷积层 发现特征轮廓,实现特征提

04 TensorFlow 2.0:高阶OP之meshgrid

谁诀别相思成疾莫问天涯 也莫问归期 怎奈何无人了解 情断之时 冷暖自知                                                                                                                                 《莫问归期》 内容覆盖: stackmeshgrid im

05-5.5.3 并查集的进一步优化

👋 Hi, I’m @Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771@qq.com 喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会

我的2019年工作总结及对未来1年的计划和期许

最近一直在忙,不过今天手上的2个项目目前都在修改bug中了。等修改好了,估计明天又同时进行复测了。 刚刚公司群里发布了2019年度工作总结和考核评优工作的通知,和去年一样,每个人需要提交一份个人总结PPT。然后我看了我去年的写的总结和期望,不足和成就。有了些感触,也忙里偷闲整理了半天今年的工作内容。这里具体的项目名称就不透露了。 整体来说: 1、独立测试3个项目/产品的测试工作。 2、客户

Github 2024-06-23开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-23统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3C++项目2JavaScript项目2非开发语言项目2Jupyter Notebook项目1Python项目1Vue项目1Java项目1HTML项目1 从零开始构建你喜爱的技术 创建周期:2156 天Star数量

Telegram 桌面端 Visual Studio 2019 编译 tdesktop 指南

编译该项目起初耗时 1 天半(1 个通宵 + 2 个白天),结果还失败了。 然后时隔 3 个月,又尝试重新编译,耗时 1 个白天,编译成功。 坑还是有(fei)点(chang)多的。 不多说了,进入正题。   1、准备环境 由于此开源项目较大,编译容易出错,一些第三方软件可能与您已安装的版本相冲突。 所以强烈建议在虚拟机中编译该项目,并保存多个时间点快照。 环境要求:16G 或以上