题图来自 Programming languages: How Google is using Rust to reduce memory safety vulnerabilities in Android[1]
Databend 旨在成为一个开源的弹性可靠云仓库,它提供极快的查询,并结合了云的弹性、简单性、低成本,旨在使数据云变得容易。
这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!
在 Rust 中使用 nix 这个库,在某些情况下可以简化 Unix 系统编程。本文主要包括以下内容:
在Rust源代码中,rust/library/std/src/sys/wasm/alloc.rs文件的作用是实现了用于WebAssembly平台的内存分配器。具体来说,该文件中定义了一系列的struct和trait,用于管理和操作WebAssembly的内存。
本文不是关于哪种编程语言更好,而是讨论了用于开发最快的服务器端系统软件(例如数据库引擎和HTTPS服务器)的最强大的工具集。这种类型的软件有几个特定的属性:
eBPF 中的 XDP 程序允许进行非常高效的、自定义的数据包处理。eBPF XDP 程序在数据包到达内核网络堆栈之前运行。
揭秘Crashpad系统如何帮助Dropbox这样复杂的桌面程序捕获并报告崩溃,且兼容Python的多种语言。
最近在学习虚拟化相关的内容,想着使用Rust构建一个最小的kvm用户空间实例。也就是直接调用kvm的api,然后创建虚拟机。网络上关于kvm的内容大部分是使用libvirt的,然后kvm用户空间实例也是使用C编写的。因此想着使用Rust写一个简单的。
动态模板引擎是阿里巴巴优酷技术团队研发的一套轻量级的纯Native动态化卡片跨端解决方案。动态模板引擎是阿里巴巴优酷技术团队研发的一套轻量级的纯Native动态化卡片跨端解决方案。
今天,我们继续「Rust学习笔记」的探索。我们来谈谈关于「错误处理」的相关知识点。
通过这篇文章,我想分享 websurfx 项目的第一个稳定版本,该项目于10月1日发布。
这些模块定义了Rust标准库中主要的 trait、类型定义和功能模块,为开发者提供了常用的系统级功能,比如内存管理、IO操作、线程同步等的 abstraction。
题图来自 Rust 101 — Everything you need to know about Rust[1]
原文链接:https://pkolaczk.github.io/memory-consumption-of-async/
题图来自 Decoding Rust: Everything You Need to Know About the Programming Language[1]
题图来自 An In-Depth Comparison of Rust and C++[1]
RAII - Resource Acquisition Is Initialization[1] 是个听起来高深莫测不知所云,但实际理解起来并不困难的概念。我们在理解一个新的解决方案的时候,先深入了解它面临的问题,再看之前的解决方案(prior work),然后再看它是怎么解决同样的问题,最后比较优劣。这大概是做研究的通识,也是我们从本原去真正理解事物的最佳途径。
Rust 101 是一门面向计算机科学专业学生的大学课程,介绍 Rust 编程语言,任何想教授 Rust 的人都可以使用这一材料。
ReadMore: https://geo-ant.github.io/blog/2022/common-cpp-errors-vs-rust/
本文转载自知乎:https://zhuanlan.zhihu.com/p/87922545?utm_source=wechat_session&utm_medium=social&utm_oi=870
Linux 内核模块在概念和原理层面与动态链接模块(DLL或so)类似。但对于 Linux 来说,内核模块可以在系统运行期间动态扩展系统功能,而无须重新启动系统,更无须重新编译新的系统内核镜像。所以,内核模块这个特性为内核开发者提供了极大的便利,因为对于号称世界上最大软件项目的Linux来说,重启或重新编译的时间耗费肯定是巨大的。
Rust 1.66.1 修复了 Cargo 在使用 SSH 克隆依赖项或注册表索引时不验证 SSH 主机密钥的问题。此安全漏洞被跟踪为 CVE-2022-46176[1]。所有包含 1.66.1 之前的 Cargo 的 Rust 版本都容易受到攻击。
开放策略代理(Open Policy Agent, OPA)是一种开源的通用策略引擎,它支持跨整个环境中执行统一的上下文感知策略. OPA 是 云原生计算基金会(CNCF)的一个毕业项目。
早些时候我看到这样一条新闻,在谈到Linux内核与Rust的关系时,谷歌曾表示Rust现在已经准备好加入C语言,成为实现内核的实用语言。它可以帮助减少特权代码中潜在的bug和安全漏洞,同时与内核也配合得很好,可以很大程度上保留其性能特性。
半年前,我写了一篇《三万言| 2021 年 Rust 行业调研报告》[1] ,内容主要围绕 Rust 语言介绍 和 行业领域开源应用盘点 两大部分内容。时隔半年,我觉得有必要再写一篇年终的 Rust 生态调研报告。因为我想给大家提供一个比较全面的视角,通过挖掘互联网上的各种散落且隐藏的信息,最终绘制出一张 Rust 的“生态地图”,让大家尽量客观公正地去认识 Rust 语言。
不可恢复错误通常是非常严重的,例如:程序一开始读取配置文件失败或者连接数据库失败,诸如此类导致程序运行发生致命错误的,可以使用不可恢复错误。在rust中,触发不可恢复错误使用panic即可。 触发panic可以分为被动触发和主动调用两种方式。
选自bunniestudios 机器之心编译 机器之心编辑部 存在一种完美的编程语言吗? Rust 语言因其并发安全性而深受众多开发者的喜爱,曾在多个榜单上获评最受欢迎编程语言。然而,现在有人花费大量时间编写 10 万行 Rust 代码之后,撰写博客阐明 Rust 语言的一系列缺点,以下是博客的主要内容。 我深入研究 Rust 是为了改进由 Xobs 编写的 Xous 操作系统。Xous 是一个用纯 Rust 编写的微内核消息传递操作系统,是为了轻量级 (IoT / 嵌入式规模) 的安全优先平台(例如 P
在Rust源代码的rust/library/std/src/sys/windows/c.rs文件中,主要定义了Rust对于Windows操作系统的系统调用接口。该文件定义了各种Windows特定的结构体、枚举和常量,以支持与操作系统的交互。
链接:https://www.sea-ql.org/blog/2022-11-10-whats-new-in-0.10.x/
于是,他又做了一个所有程序员都会做的事:进一步学习关于SQLite、Python以及不知道为什么还有Rust的知识。
Microsoft PowerToys 是一套用于调整和优化 Windows 体验以提高生产力的实用工具集。该项目包含多个功能模块,其中主要功能有:Always on Top、FancyZones、File Explorer Add-ons 等。其核心优势和关键特点包括:
今天我想再来讨论一下高并发的问题,我们看到最近以Rust、Go为代表的云原生、Serverless时代的语言,在设计高并发编程模式时往往都会首推管道机制,传统意义上并发控制的利器如互斥体或者信号量都不是太推荐。
Rust 作为一门备受关注的新编程语言,它在保持使用 JavaScript 等语言进行开发时所拥有的内存安全性的同时,还能够实现不亚于 C 的性能。不过大多数公司还没有大量应用它。白海科技作为国内唯数几个“All in Rust”的公司,最近正在进行由 Java 向 Rust 的全方位重构。
题图来自 Why you should use Python and Rust together[1]
由于在大流行期间我有几年无法旅行,所以我决定利用我新获得的时间并真正专注于 Rust。在编写了超过 10万行 Rust 代码之后,我想我开始对这门语言有了一种感觉,并且像每一个脾气暴躁的工程师一样,我已经形成了我自己的观点,因为这是互联网,所以我要分享。
这个机器人其实蛮久前就做好了,现在才写了点分享出来。 最近企业微信不断地开放了机器人的接口,所以我想想拿来做一些开发工具集成也是挺不错的,顺便也是为了继续熟悉一下 Rust 的编程习惯。 那么这次就大量使用 futures 来实现这个机器人的接口服务,这也是即将到来的无栈协程语法糖 await 的基石。
语句在英文中是 statement,表达式则是 expression。我们可能常常听说过“赋值语句”或者“算数表达式”这些名词,但是你有想过为什么不是“赋值表达式”吗?语句和表达式有一个重要的区别在于,表达式总是返回一个值,而语句不会。例如:
与C相比,Rust多了if let和while let这两个流程控制语句,因为之前我没有接触过这种,因此第一感觉就是有点抽象。
在很多情况下,Rust 要求你承认出错的可能性,并在编译代码之前就采取行动。这些要求使得程序更为健壮,它们确保了你会在将代码部署到生产环境之前就发现错误并正确地处理它们!Rust 将错误组合成两个主要类别:「可恢复错误」(recoverable)和「不可恢复错误」(unrecoverable)。
对于类型系统,熟悉Java的同学应该比较清楚。例如我们给一个接收参数为int的函数传入了字符串类型的变量。这是由编译器帮我们处理的。
对于许多编程语言默认提供的锁,加锁、放锁需要手动进行。手动加锁可以理解(这不废话嘛),但是,手动放锁的时机,总是难以控制。比如:在临界区内,执行过程中,如果程序出错了,在异常处理的过程中,忘记放锁,那么就会造成其他进程无法获得这个锁。传统的做法就是,人工寻找所有可能的异常处理路径,添加放锁的代码。这样做的话,能解决问题,但非常的繁琐,尤其是有多个锁的时候,更加如此。
我们在做 Rust 开发编译的时候,常常能在依赖列表中,看到 libc 这个 crate 的身影。我们一般不会直接依赖这个 crate,但是依赖的依赖(的依赖的依赖……)可能就会用到这个 crate。总的来说,它是 Rust 生态中非常基础非常底层的一个 crate 了。
最近Rust For Linux的项目,随着Rust的火爆也开始逐渐升温,但是谷歌的强烈支持以及rCore OS、Redox等各种Rust操作系统项目的经验积累,Rust想进入到Linux的真正核心,也还是有很长的路要走,之前笔者已经撰文对于Rust在汇编支持、panic和alloc等系统操作等方面的问题进行过简要说明了。这里再对于Rust进入到Linux内核的最大拦路虎-也就是内存模型方面的问题,做一下介绍。
去年我写了 2021 年 Rust 生态版图调研报告 | 星辰大海(上)[1] 和 (下)[2] ,大家能看到 Rust 在各个行业领域中开始暂露头角。2022 年,在政治动荡、经济下行和疫情肆虐的世界大环境下,Rust 却迎来了高质量的发展。2022 年,我愿称之为 Rust 发展元年。
在Rust源代码中,rust/library/std/src/sys/unsupported/time.rs文件的作用是提供对于时间的支持,特别是在不支持的操作系统上。
gfx-rs 是一个在 Rust 中实现跨平台图形处理的项目。该项目的最新进展是名为 "Arcanization" 的重大重构,目的是提高在多线程中使用 wgpu 时的性能。
领取专属 10元无门槛券
手把手带您无忧上云