# 2020-1-31 每日新闻
# rust 1.41了!
除了一些功能更新
重要的是不再支援32-bit Apple产品了
http://bit.ly/2S1iam9
# open-source security key
google 使用rust实作了 OpenSK
支援 FIDO U2F, FIDO2 两种标准
http://bit.ly/2vBMiwS
# Rust编译模型灾难
文章作者Brian Anderson是Rust编程语言
及其姊妹项目Servo Web浏览器的共同创始人之一。
他现在在PingCAP担任高级数据库工程师。
他希望解决TiKV编译缓慢的问题
在开发模式下进行完全重建可能需要15分钟,在发布模式下可能需要30分钟。
对于大型系统项目的开发人员来说,这听起来可能并不那么糟糕,
但是它比许多开发人员对现代编程环境所期望的要慢得多。
TiKV是一个相对较大的Rust代码库,
有200万行程式码。相比之下,Rust本身包含300万行,而Servo则包含270万行。
编程语言设计充满了权衡利弊。这些基本选择之一是runtime性能与编译性能,
Rust团队几乎总是选择runtime性能而不是编译更快速。
如果快速编译时间不是Rust设计的核心原则,那么Rust的核心设计原则是什么?这里有一
些:
实用性-它应该是一种可以在现实世界中使用的语言。
实用主义-它应该要让人觉得可用,并且将其整合到之前的系统中。
内存安全性-它必须强制执行内存安全性,并且不能接受内存存取错误。
性能-它必须与C++在一样快。
并发-它必须提供现代的解决方案来编写并发代码。
但这并不是说Rust设计师没有在快速编译时间中考虑任何因素。
但因为利弊的权衡,编译器的性能还是愈来愈慢。
当作者每天使用Rust编译器工作时,
电脑上至少拥有三份程式码是很常见的,在其他所有版本都在构建和测试的同时。
我将开始在工作区1编写程式,开始编译,然后跳到工作区2,
开始在工作区2工作,编译后再切换回工作区1。不断进行在不同的工作区中切换。
虽然在2019年Rust的编译速度有了提升,但目前Rust还是编译的不够快。
下一集会是作者如何优化Rust的编译速度以达到产品经理的期待
http://bit.ly/2vD5I4v
# Bastion 0.34
什么是Bastion?
Bastion是一个高度可用的容错runtime系统,具有面向动态调度的轻量级流程模型。
它为轻量级过程实现提供了诸如并发之类的参与者模型,
并有效地利用了所有系统资源,并保证了每次传送最多的消息。
基于消息的通信与actor model的Mesh网络。
runtime容错能力使其成为分布式系统的理想选择。
具有NUMA感知和仿射缓存SMP执行程序的完全异步runtime。
监督系统使管理生命周期变得容易。
目前哪边有用到Bastion?
SkyNet (Discord 机器人,用来重新发送已删除的讯息)
在AWS Lambda中,我们使用Bastion启用重试机制,并尝试不同的解析策略来处理数据。
http://bit.ly/2Ua9mgr
# Tide 0.6 了
Tide是一个还不成熟的 web framework
这一版增加了对CORS的支持与新的cookies API
也增加了一些新语法让人用起来更简单
http://bit.ly/3aTpglc
# oreboot
oreboot是coreboot的分支
https://zh.wikipedia.org/wiki/Coreboot
来自维基百科的说明
coreboot,原名LinuxBIOS,是一个旨在取代大多数电脑中专有韧体(BIOS或UEFI)的软
体专案,它采用轻量级韧体设计,只执行加载和执行现代32位元或64位元作业系统所需的
最少量任务。
Oreboot当前仅支援LinuxBoot。
Oreboot想利用Rust的安全性制作一个安全稳定快速的BIOS程式。
http://bit.ly/2S4RuAP
# 改善MSBuild中的并行编译性能
从Visual Studio 2019 16.3开始,有了Multi-ToolTask(MTT)
通过将MSBuild属性或环境变量UseMultiToolTask设置为true,使用 MTT。
可以使用平行编译。
http://bit.ly/2tiAU8o
# Bitsery C++序列化库 5.03版了
速度很快
序列化的数据很小
可以向前向后相容
http://bit.ly/36HHinl
# 什么是Spring Framework? 从依赖注入到Web MVC
花费约15分钟阅读本指南,该指南涵盖了Spring框架中最重要的80%,
如果您的工作有用到Spring 您将在未来获得超过一百万次回报。
http://bit.ly/2GA42uO
# Project Loom 的出现会让 Future 消失吗?
Project Loom 的出现会让 Future 跟 CompletableFuture 过气吗?
Project Loom具有三个主要目标:
introducing continuations, fibers, and tail-call elimination.
Loom能让你更简单的写出异步程式码并使用 fibers。
Kotlin已经有fibers,编译器支持。 Scala库具有coroutines。它们与即将推出的JVM
fibers相同吗?
并没有因为JVM fibers是底层实现的,并且具有运行时支持。
另一方面,Kotlin中的fibers是一种编译时机制。在Scala中,coroutines是一种程式库
实作机制。
http://bit.ly/38U3ITC