GitHub 上有哪些值得关注的 Rust 项目?

#zhihu #github

可以关注下这个知乎问题,下面链接是对区块链框架CITA的介绍。

Read More


nom 5.0 发布预告

#nom

nom是Rust社区的一个重要的解析工具,作者在reddit发帖表示将要发布5.0版本。(这是一个你没有看过的船新版本,挤需体验三分钟,里造会干我一样,爱象这个版本。)

你可以在nomfun项目里体验到nom的新设计。在这个库里完全看不到宏的影子了,取而代之的是Functor,用法和另一个解析库combine趋于一致。新版本据说性能会有5%-20%的提升,并且有更好的错误处理系统,同时保持大部分向后兼容。因为作者家里有事,可能5.0版本需要几个月才能发布,不过近期他会先发一个alpha版本,作者也列出了一个5.0的路线图。

  • Read More
  • nomfun
  • combine

用于Azure Pipelines项目的Rust模板

#azure

可以很轻松地集成CI。

rust-azure-pipelines


ArcSwap的袖里乾坤

#ArcSwap

ArcSwap可以自动存储和加载Arc,类似于RwLock<Arc <T >>但没有锁。适合于频繁读取但不经常修改的数据,如配置或内存数据库每秒请求数百万次查询等。这篇文章中,作者揭示了ArcSwap的工作机制。

  • Read More
  • arc-swap

failchain: 一个新的错误处理库

#error_handle

failure + error-chain = <3

这个库旨在提升failure的用户体验(error_chain向)。

failchain


「讨论」旁观Rust目前的状态

#reddit

有人在reddit发帖,探讨了他目前观察到Rust的一些状态,他关注的点是:

  • 异步语法。正在积极地走向稳定。
  • 消息队列(Graphql订阅、mqtt等)。被异步耽误了,目前Graphql订阅支持最有希望的是Actix。
  • 嵌入式Rust。看起来得2019年年底成熟。
  • WASM(Graphql UI Client)。Yew好像最受欢迎,但是不支持wasm-bindgen,只能用stdweb,所以导致很难用webpack来处理css模块。当然也有人在解决这些问题。
  • 云支持。看上去支持的不错。

结论: 目前Rust生态已经处在一种「马上能成事」的边缘。作者表示,如果现在用Rust构建他想要实现的产品,可能需要自己构建或者等待一些工具(大约一年)。他也知道现在开始学习Rust正好,也可以提交一些PR来改进生态,但是他不想这样(233,估计是时间关系),然而他说,他可以出钱赞助这些加速生态发展的项目维护者。

Reddit 讨论


不要序列化默认值

#serde

默认情况下,serde在序列化结构时包括所有字段,即使它们的值是默认值。 这可能导致一些包含空值的「污染」。本篇文章教你如何跳过这些默认值。

Read More


「嵌入式Rust」树莓派MPU6050 IMU驱动程序寻找review

#RaspberryPi #MPU6050

read more


「讨论」Rust项目配置的最佳实践是什么?

#best_practices

有人在reddit上面开贴询问这个问题,评论里也有很多人讨论。大家还有什么推荐?

(我个人用的是dotenv了)

Reddit讨论


Linkerd v2: 从产品中吸取了什么了教训导致重写了服务网格?

#linked2 #ServiceMesh

Linkerd的服务之前是Scala写的,并且受到了Twitter在Finagle RFC系统上工作的启发。但是Linkerd 2却用Go(Control Plane)和Rust(Data Plane)进行了重写。

(这让我想到Twitter曾经宣布用Scala/Java替换Ruby的新闻,感受到了时代的车轮在转动。本文作者是Buoyant的CEO和联合创始人。在加入Buoyant之前,他是Twitter的基础架构工程师,就是他帮助将Twitter从一个失败的单片Ruby on Rails应用程序迁移到基于Scala的高度分布式,容错的微服务架构)

Buoyant团队对底层的Rust网络堆栈进行了深入的技术投资,并将UX重新定位于简单性,易用性和低认知开销上。结果显着更快,更轻,更简单。 自Linkerd 2.0发布至今已有六个多月,该团队认为重写已经带来了好处,许多以前无法采用1.x分支的用户现在乐于采用2.x。

Linkerd团队从1.0产品中吸取了什么教训?

尽管Linkerd取得了成功,但许多组织不愿意将Linkerd部署到生产中,或者愿意为了这样做而不得不进行重大投资。这种摩擦是由下面几个因素引起的。

  • 有些组织不愿意将JVM引入其运营环境。 JVM具有特别复杂的操作表面,一些操作团队无论是对还是错,都避免将任何基于JVM的软件引入其技术栈 - 特别是像Linkerd这样扮演关键任务的角色。
  • 其他组织不愿意分配Linkerd所需的系统资源。一般来说,Linkerd 1.x非常擅长扩展 - 如果有足够的内存和CPU,单个实例每秒可以处理数万个请求 - 但它不擅长缩减:很难获得内存单个实例的占用空间低于150 MB的RSS。 Scala,Netty和Finagle使问题变得更糟,因为它们都旨在最大限度地提高资源丰富环境中的吞吐量,即以牺牲内存为代价。
  • 由于组织可能部署数百或数千个链接器代理,因此这种占用空间非常重要。作为替代方案,我们建议用户为每个主机而不是每个进程部署Data Plane,从而允许用户更好地分摊资源消耗。但是,这增加了操作的复杂性,并限制了Linkerd提供某些功能(如每服务TLS证书)的能力。
  • 存在复杂性问题。 Finagle是一个具有大型功能集的丰富库,我们通过配置文件或多或少直接向用户公开了许多这些功能。因此,Linkerd 1.x可定制且灵活,但学习曲线陡峭。特别是一个设计错误是使用委托表(dtabs),一种由Finagle使用的回溯,分层,后缀保留的路由语言,作为基本配置原语。任何试图自定义Linkerd行为的用户都会很快遇到dtabs,并且必须投入很大精力。

(更新的JVM显着改善了这些数字。在IBM的OpenJ9下,Linkerd 1.x的资源占用和尾部延迟大大减少,而Oracle的GraalVM承诺会进一步降低它。小声嘀咕:但这也改变不了第一条)

船新的开始

痛定思痛之后,Linkerd开始改变。定了几个目标:

  • 目标1: 最低资源配置。Linkerd 1.x中,控制层和数据层都是基于JVM实现的,但实际上这两件产品是完全不同的。控制层对性能和资源的要求比较宽松,而数据层对性能和资源的要求非常严格,而且必须安全。所以2.x就采用Go语言来写控制层,Rust来写数据层。但是为什么控制层也不用JVM呢?Go比JVM更轻量,而且在K8S生态中有很多现成的库。数据层最初他们也考虑过Cpp,但从一开始他们就知道Rust是最符合他们要求的语言,并且团队的Scala工程师也非常喜欢Rust语言。但在2017年,Rust生态有一个非常大的缺点,就是确实网络库的支持,他们对Rust的网络库也投资了大量精力。(我想这就是他们赞组tokio作者的原因,后来出了tower库)
  • 目标2: 正常工作。
  • 目标3: 简单。

最后在2018年9月他们推出了Linkerd2.0,六个月后,也就是2019年3月了,这种改变已经产生了回报,之前很多不愿意使用1.x的用户都接受了2.x。他们对Rust的选择引起了人们的极大兴趣。他们也承认,这是一种赌博,之前发布的早期产品叫「Conduit」,原因是害怕“玷污”了Linkerd的品牌(233),现在证明赌博是赌对了。从2017年开始,Linkerd团队对Rust网络库(Tokio、Tower和Hyper)进行了大量的投入(对Rust生态贡献很大)。

Read More


wepoll-binding: Wepoll的Rust绑定

#windows #epoll

Wepoll是一个Windows平台的epoll API实现。

wepoll-binding


From 日报小组 @Chaos

日报订阅地址:

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

【Rust日报】 2019-04-07相关推荐

  1. 2019.04.07 装饰器介绍

    文章来自网易云课堂 装饰器实际上就是一个函数,所有要先定义这个函数 然后里面还有一个函数,记得返回这个函数 当做了这个功能装饰器之后,就可以想在某个函数中添加一些想要的功能了 而并没有修改原先函数的基 ...

  2. rust主播排行_「Rust日报」2019每周精选 • 第四期

    前言: 从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛.tg channel.Steemit.GitHub.语雀订阅都开通了Rust日报,分享我每天的见闻,偶尔也夹 ...

  3. 【Rust日报】 2019-08-01:brpc-rs - X-lab 实验室新推出的一个rpc库

    paperclip - OpenAPI 规范的 Rust 实现 在完成后,它会实现: Rust 中的服务器端.客户端和命令行端的高效的.编译时检查的.类型安全的 HTTP API 的生成: 支持处理. ...

  4. 2019.04.18晚上 玄易财富 ---老承

    2019.04.18晚上    玄易财富  ---老承 今晚我们分享---中国牛市历次特征 三月份最后一个交易日,沪指强力拉升近100点至3100点关口.券商板块大涨8个多点,保险银行也在平静中轮动起 ...

  5. D2 日报 2019年6月11日

    ? 开源项目 ➡️ sfyc23/EverydayWechat watch 34 star 1690 fork 317 每日自动给女朋友发微信暖心话. github.com ➡️ YMFE/yapi ...

  6. D2 日报 2019年1月2日

    官网阅读获得更好的体验,传送门<日报 2019年1月2日> 你有一个苹果,我有一个苹果,交换之后我们还是各自有一个苹果. 你有一份知识,我有一份知识,我们互相分享一下就都有了两份知识. 开 ...

  7. 2019.01.07|区块链技术头条

    2019.01.07|区块链技术头条 1.科普 | 深处的蚁穴:与 Gas 相关的三种安全问题 2.科普 | OmiseGo 将如何把 Plasma 带入寻常百姓家 3.干货 | 详解 MimbleW ...

  8. D2 日报 2019年4月17日

    ? 新闻 ➡️ Is React Translated Yet? ¡Sí! Sim! はい! react 文档翻译了多种语言 reactjs.org ? 开源项目 ➡️ formal/packages ...

  9. Netrunner 2019.04 Rolling 版本发布

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   Netrunner 2019.04 Rolling 版本发布了,Netrunner 是基于 Ubuntu 的发行, ...

  10. 2019/04/12 华为通用软件开发工程师现场面试(offer到手)

    2019/04/12 华为通用软件开发工程师现场面试(offer到手) 时间轴 三月中旬做的笔试 3题ac两道 4/8 性格测试 4/12 现场面试 地点是 广州某家酒店,近地铁站的,中大过去也是要一 ...

最新文章

  1. c语言的256个字符,C语言版 256点FFT算法
  2. MainWindow 简介
  3. MATLAB常用命令(窗口命令、标点符号特殊功能和帮助命令)
  4. 洛谷P5300 与或和(全1子矩阵/单调栈)
  5. CherryPy上传文件
  6. java get提交中文乱码_java中form以post、get方式提交数据中文乱码问题总结
  7. 103 规约分析总结
  8. Ehcache开源解读
  9. new与delete动态分配和释放内存
  10. AI-语音处理理论与应用-语音处理简介
  11. 使用SSH密钥连接阿里云linux服务器
  12. 对接高德接口心得,本篇不涉及具体接口
  13. solidworks3D打印技术
  14. Matlab:交换矩阵的两行(列)
  15. [FFmpeg]编译av1的dav1d解码库
  16. 纸牌游戏扎金花的牌大小比较(PHP)
  17. 将你的网站从MySQL改为PostgreSQL
  18. 5分钟搞懂MySQL - 行转列
  19. python 文件操作写入追加write
  20. ZoomIt快捷键 win10

热门文章

  1. 虫虫危机(人物图鉴)
  2. 地理信息科学专业转计算机,2019地理信息科学专业就业前景和就业方向分析
  3. 使用 fmod windows 下实现音频变声 -- 萝莉 大叔 等 特效
  4. vb数据库编程(三)--SQL语言
  5. pandas 数据结构--DataFrame
  6. 《Essential Linux Device Drivers》中文版第1章
  7. 题解2020届天梯赛总决赛L2-4哲哲打游戏
  8. dedecms(织梦cms)安装99bill(快钱)支付方式接口
  9. jquery datatable sDom(自定义布局)
  10. 定制化ROM采坑之路(2):魔趣OS刷入小米5A手机过程详解