#Rust
早年学C++的时候,觉得如果只推荐一本C++的书,那一定是《Effective C++》,这本书总结了C++里最重要、常见的一些知识点,事实上我甚至认为任何领域都需要这样一本总结出最常见知识点的书。
如今网上有人写了一个《Effective Rust》出来,也是类似的思路。
早年学C++的时候,觉得如果只推荐一本C++的书,那一定是《Effective C++》,这本书总结了C++里最重要、常见的一些知识点,事实上我甚至认为任何领域都需要这样一本总结出最常见知识点的书。
如今网上有人写了一个《Effective Rust》出来,也是类似的思路。
豆瓣
Effective C++
在国际上,本书所引起的反响,波及整个计算机技术的出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,这本书都会位于前三名。
作者高超的技术把握力、独特的视角、诙谐轻松的写作风格、独具匠心的内容组...
作者高超的技术把握力、独特的视角、诙谐轻松的写作风格、独具匠心的内容组...
👍2
#Rust
JetBrains发布独立的Rust IDE RustOver:《Introducing RustRover – A Standalone Rust IDE by JetBrains》,之前要在JetBrains系的IDE写Rust都是走插件的路线,现在终于出了一个独立的产品。
像JetBrains这样专业做开发者工具(IDE)的公司,必然掌握了很多开发者的统计数据,衡量一个语言的流行度,有不同的数据维度,比如社区的活跃度、开源项目的数量、搜索的数量等等。商业开发工具的数量、质量也应该是一个维度,因为商业公司要为之开发新产品,这背后肯定需要数据的支撑才行。
JetBrains发布独立的Rust IDE RustOver:《Introducing RustRover – A Standalone Rust IDE by JetBrains》,之前要在JetBrains系的IDE写Rust都是走插件的路线,现在终于出了一个独立的产品。
像JetBrains这样专业做开发者工具(IDE)的公司,必然掌握了很多开发者的统计数据,衡量一个语言的流行度,有不同的数据维度,比如社区的活跃度、开源项目的数量、搜索的数量等等。商业开发工具的数量、质量也应该是一个维度,因为商业公司要为之开发新产品,这背后肯定需要数据的支撑才行。
The JetBrains Blog
Introducing RustRover – A Standalone Rust IDE by JetBrains | The RustRover Blog
“When will there be a Rust IDE?” We get this question from our users quite frequently, and today we’re happy to announce that the day has arrived. Please welcome RustRover, our standalone IDE for R
👍18🥰2
#Rust
我司xuanwo的一篇文章《Rust std fs slower than Python!? No, it's hardware!》,还登上了hacker news的热门榜。
中文版本:《Rust std fs 比 Python 慢!真的吗!?》
PS:鄙视某些把本文题目篡改称”Rust比Python慢“的自媒体,真是为了点击率什么题目都能想出来。
我司xuanwo的一篇文章《Rust std fs slower than Python!? No, it's hardware!》,还登上了hacker news的热门榜。
中文版本:《Rust std fs 比 Python 慢!真的吗!?》
PS:鄙视某些把本文题目篡改称”Rust比Python慢“的自媒体,真是为了点击率什么题目都能想出来。
xuanwo.io
Rust std fs slower than Python!? No, it's hardware!
Achieving Data Freedom Through Open Source and Rust
👍2
#编程语言
#Rust
以前会争论类型标识符,应该放在变量前面还是后面好。
除了美感这种偏主观的判断以外,我在学了一点PLT皮毛之后,有一个新的视角:
类型标识符在变量前面的语言,大多是没有类型推断的,因为放在前面,所以无法省略,就是说:必须在声明这个变量的时候就(由程序员)确定变量的类型。这也有例外,比如C++后面引入的auto关键字,相当于给原先的语法打了一个“补丁”,通过这个关键字声明的变量就能支持类型推断。
反之,放在变量后面的类型标识符,因为是可以做到省略的,省略的时候就是类型推断发挥的空间了:推断出最适合的类型出来;同样也有例外,比如Go就不支持类型推断。
比如附图中的这段Rust代码:
同样的let a = 1,在两个上下文(context)里推断出来的是不同的类型:上面的代码由于没有别的信息,所以就选了i32类型;下面的代码由于要和已经声明为u64类型的b相加,所以推断出来a的类型为u64。
支持类型推断(type inference)的语言,(应该都)要做到类型安全(type safety)。比如:不能允许两个变量的数据,操作之后出现溢出等情况。
综上,我更喜欢支持类型推断、类型安全的语言。
Roman Elizarov(Project Lead for the Kotlin Programming Language)的一篇文章《Types are moving to the right》中也提到,21世纪之后才出现的编程语言,很多都是把类型标识符放在变量后面了,Go、Rust、Scala等。
#Rust
以前会争论类型标识符,应该放在变量前面还是后面好。
除了美感这种偏主观的判断以外,我在学了一点PLT皮毛之后,有一个新的视角:
类型标识符在变量前面的语言,大多是没有类型推断的,因为放在前面,所以无法省略,就是说:必须在声明这个变量的时候就(由程序员)确定变量的类型。这也有例外,比如C++后面引入的auto关键字,相当于给原先的语法打了一个“补丁”,通过这个关键字声明的变量就能支持类型推断。
反之,放在变量后面的类型标识符,因为是可以做到省略的,省略的时候就是类型推断发挥的空间了:推断出最适合的类型出来;同样也有例外,
比如附图中的这段Rust代码:
同样的let a = 1,在两个上下文(context)里推断出来的是不同的类型:上面的代码由于没有别的信息,所以就选了i32类型;下面的代码由于要和已经声明为u64类型的b相加,所以推断出来a的类型为u64。
支持类型推断(type inference)的语言,(应该都)要做到类型安全(type safety)。比如:不能允许两个变量的数据,操作之后出现溢出等情况。
综上,我更喜欢支持类型推断、类型安全的语言。
Roman Elizarov(Project Lead for the Kotlin Programming Language)的一篇文章《Types are moving to the right》中也提到,21世纪之后才出现的编程语言,很多都是把类型标识符放在变量后面了,Go、Rust、Scala等。
👍13🥱6👎1😁1
#Rust
#播客
《Ep 47. 和 Yuchen 聊聊 Cloudflare 的新框架 Pingora》
我写Rust两年多,之前十几年积累的调试、定位C、C++内存错误的技能,完全没有用武之地了。
我丝毫不怀疑,未来会有越来越多基础软件的新项目,会使用满足“强类型+内存安全”特性的语言来编写,即便这门语言不是Rust,也会是其它满足这两个特性的语言来承担这些工作。
#播客
《Ep 47. 和 Yuchen 聊聊 Cloudflare 的新框架 Pingora》
我写Rust两年多,之前十几年积累的调试、定位C、C++内存错误的技能,完全没有用武之地了。
我丝毫不怀疑,未来会有越来越多基础软件的新项目,会使用满足“强类型+内存安全”特性的语言来编写,即便这门语言不是Rust,也会是其它满足这两个特性的语言来承担这些工作。
捕蛇者说
Ep 47. 和 Yuchen 聊聊 Cloudflare 的新框架 Pingora
本期节目我们请到了继续和 Yuchen 聊聊 Cloudflare,以及他主导并开源网络框架 Pingora Pingora 是一个使用 Rust 开发的框架,可以让开发人员在上面实现自定义服务器。Pingora 的开发是基于 Cloudf...
❤🔥8👍5
#Rust
国内知名Rust社区贡献者Folyd,之前曾经给Rust贡献了一个优化的二分查找实现:《优化 Rust 标准库的 binary_search》。
但是这个实现,会导致在有多个重复元素的情况下,返回是不确定的,最终导致了币圈某产品的翻车,这里可以看到作者的后续推文。
我们回到这个问题本身:除了撤销这个修改,下一步应该在Rust标准库里增加多个重复元素的测试用例了吧?
国内知名Rust社区贡献者Folyd,之前曾经给Rust贡献了一个优化的二分查找实现:《优化 Rust 标准库的 binary_search》。
但是这个实现,会导致在有多个重复元素的情况下,返回是不确定的,最终导致了币圈某产品的翻车,这里可以看到作者的后续推文。
我们回到这个问题本身:除了撤销这个修改,下一步应该在Rust标准库里增加多个重复元素的测试用例了吧?
GitHub
Folyd - Overview
Rust, Music enthusiast. Founder of @geddle. . Folyd has 63 repositories available. Follow their code on GitHub.
🤡7👍2🤷♀1👎1
#Rust
距离Rust 1.0发布,刚好过去了十年:《10 Years of Stable Rust: An Infrastructure Story》
距离Rust 1.0发布,刚好过去了十年:《10 Years of Stable Rust: An Infrastructure Story》
2006 年,软件开发者 Graydon Hoare 在 Mozilla 工作期间开始了 Rust 这个个人项目。根据《麻省理工科技评论》的一次采访,Rust 的灵感来自 Hoare 公寓楼里一部坏了的电梯。电梯操作系统的软件崩溃了,Hoare 意识到这类问题通常是由程序如何使用内存引起的。
通常情况下,这类设备的软件是用 C 或 C++编写的,但这些语言需要进行大量的内存管理,这可能会导致错误,从而导致系统崩溃。因此,霍尔开始着手研究如何创建一种既紧凑又无内存错误的编程语言。
他后来向一位经理展示了这个项目,这导致 Mozilla 在 2009 年赞助它,作为将该语言纳入实验性浏览器引擎开发的长期努力的一部分。2010 年,Mozilla 研究部正式宣布了 Rust 项目,并将源代码作为开源项目向公众发布。经过几年的开发,Rust 达到了稳定和成熟的状态,并于 2015 年 5 月发布了 Rust 1.0 版本。这个里程碑标志着 Rust 已经准备好用于生产,并为开发人员提供了一个基础。
blog.rust-lang.org
Announcing Rust 1.0 | Rust Blog
Empowering everyone to build reliable and efficient software.
❤9👍1🔥1
#Rust
之前一直以为,在Rust代码中只有返回Result类型的函数可以用?提前返回,没想到可不止这个类型,参见:https://doc.rust-lang.org/std/ops/trait.Try.html
之前一直以为,在Rust代码中只有返回Result类型的函数可以用?提前返回,没想到可不止这个类型,参见:https://doc.rust-lang.org/std/ops/trait.Try.html
👍3
#Rust
Rust编译器贡献者 Nicholas Nethercote 在线找工作《I am a Rust compiler engineer looking for a new job》,连他也在抱怨“AI is sucking up a lot of money and attention in the tech world, leaving less for everything else.”。
Rust编译器贡献者 Nicholas Nethercote 在线找工作《I am a Rust compiler engineer looking for a new job》,连他也在抱怨“AI is sucking up a lot of money and attention in the tech world, leaving less for everything else.”。
Nicholas Nethercote
I am a Rust compiler engineer looking for a new job
For the past 3.75 years I have been fortunate to work on Futurewei’s Rust team, where I had enormous freedom to “make Rust better” however I see fit. It has been the highlight of my career and I am grateful to Sid Askary and other Futurewei folks that helped…
❤11
#C++
#Rust
#类型推断
C++后来引入了auto关键字用于类型推断,但是这个类型系统在Rust面前就是个弟弟,因为经常会给推出来可能编译报警的类型。
例如代码:
这在某些编译器上会报警:comparison of integer expressions of different signedness
这是因为这里的auto i进行类型推断时使用了int,而vector的size类型是size_t,一个是有符号整型,一个是无符号整型,在数据溢出的时候这个对比会判断出错,所以才有的这个告警。
我的问题是:既然如此,这里的auto i就应该推断成size_t才对。不然要你这个类型推断有何用啊?
#Rust
#类型推断
C++后来引入了auto关键字用于类型推断,但是这个类型系统在Rust面前就是个弟弟,因为经常会给推出来可能编译报警的类型。
例如代码:
for (auto i = 0; i < expected_actions.size(); ++i)
这在某些编译器上会报警:comparison of integer expressions of different signedness
这是因为这里的auto i进行类型推断时使用了int,而vector的size类型是size_t,一个是有符号整型,一个是无符号整型,在数据溢出的时候这个对比会判断出错,所以才有的这个告警。
我的问题是:既然如此,这里的auto i就应该推断成size_t才对。不然要你这个类型推断有何用啊?