Levix 空间站
920 subscribers
219 photos
11 videos
20 files
1.38K links
主要分享前端、AI 以及前沿科技资讯。

🚫 禁止人身攻击:请在评论区保持尊重和友好,避免不当言论和负面互动。

🚫 禁止违规内容:请勿发布任何黄赌毒、宗教极端、政治敏感或其他违反社区规定的内容。
主要分享前端以及业界科技资讯。

🚫 禁止广告与刷屏:为了维护良好的交流环境,请不要进行任何形式的广告推广、黑产活动、刷屏行为及发布不适内容。

🔒 保护个人信息:请注意个人隐私和网络安全,不要在评论区泄露个人信息或点击不明链接。
Download Telegram
Axum —— 一种用于构建 Rust REST API 的 Web 框架。文章讲述了 Axum 的路由、数据库集成、应用状态、数据提取器、中间件和静态文件服务等方面的使用方法。它还探讨了 Axum 0.7 版本的更新,例如对 axum::body::Body 的修改和其他特性。文章的重点是 Axum 的简单性和与 Tower 库的高度兼容性,这使得它在 Rust Web 生态系统中成为一个受欢迎的选择。

#Rust

https://www.shuttle.rs/blog/2023/12/06/using-axum-rust
Rust 语言连续八年被评为 Stack Overflow 年度开发者调查中“最受欢迎的编程语言”。这种系统编程语言最初旨在成为 C 和 C++ 的更安全替代品,强调安全性、性能和生产力。Rust 的主要特性包括:

1. 并发性支持:Rust 的所有权系统和借用模型支持并发编程,防止数据竞争,确保多线程可以安全地处理共享数据。
2. 无垃圾收集:Rust 通过所有权和借用规则管理内存,使开发者能精确控制内存分配和释放。
3. Cargo 包管理器:内置的 Cargo 包管理器简化了项目管理、依赖追踪和构建。
4. 零成本抽象:允许开发者编写高级代码抽象而不引入运行时性能开销。
5. 模式匹配:使开发者能够简洁有效地匹配复杂数据结构。
6. 类型推断:Rust 编译器可以在编码时根据上下文自动检测表达式的类型。

Rust 常用于嵌入式系统和裸机开发,以及多种应用程序,例如性能关键的后端系统、操作系统、Web 开发、加密货币和区块链技术、命令行工具和物联网设备开发。Rust 受开发者青睐的原因归结于其速度、安全性和性能,且持续通过新框架、工具和资源的发展而进化。

#Rust

https://github.blog/2023-08-30-why-rust-is-the-most-admired-language-among-developers/
《编程语言学习剖析》

论文记录了一项为期一年的实验,旨在“描述”学习编程语言的过程:收集数据以了解使一种语言难以学习的因素,并利用这些数据来改善学习过程。我们在《Rust 编程语言》中加入了互动式测验,这是学习 Rust 的官方教科书。在 13 个月的时间里,有 62,526 名读者共回答了 1,140,202 次问题。首先,我们分析了读者的学习轨迹。我们发现,当面对 Rust 中一些难懂的语言概念(如所有权类型)时,许多读者很早就放弃了阅读。其次,我们使用传统测试理论和项目反应理论来分析测验题目的特点。我们发现,更好的问题通常是更加概念性的,例如询问为什么程序无法编译,而不是程序是否可以编译。第三,我们对教材进行了 12 次干预,以帮助读者应对难题。我们发现,这些干预平均使针对特定问题的测验分数提高了 20%。第四,我们展示了我们的技术很可能也适用于用户基数较小的语言,通过在小样本量上模拟统计推断。这些结果表明,测验是一种简单而有效的技术,可以在各种规模上帮助理解语言学习。

#论文 #Rust

https://arxiv.org/abs/2401.01257
Rust 编写的 JavaScript Linter:快速但目前不支持类型检查

1. 2023年的趋势:使用 Rust 重写工具: Rust 作为一种编程语言,由于其生成的二进制文件速度惊人且与其他 Web 工具(例如 WebAssembly)兼容性良好,因此成为重写现有工具的热门选择。

2. Rust Linter 的优势: 使用 Rust 编写的 Linter(如 swc 和 Turbopack)在开发体验上提供了很大的速度提升,这对开发者来说非常吸引人。

3. Rust Linter 的局限性: 尽管 Rust 编写的 Linter 如 Biome、deno lint、Oxc 和 RSLint 在性能上有显著提升,但它们并不能完全替代如 ESLint 这样的现有工具。特别是在类型检查方面,Rust Linter 目前还无法提供完整的功能。

4. 类型检查 Linting 的重要性: typescript-eslint 引入了带有类型信息的 linting 概念。它通过调用 TypeScript 的类型检查 API,可以根据项目中任何其他文件的类型信息做出更加明智的代码决策。

5. 性能与功能之间的权衡: 使用类型信息进行 linting 会导致性能下降,因为它需要读取所有文件来确定它们对其他文件类型的影响。尽管如此,类型检查 Lint 规则在某些方面比传统 Lint 规则更为强大和有效。

6. Rust Linter 与 TypeScript 的集成问题: 目前还没有任何基于 Rust 的 Linter 集成了 TypeScript 的类型检查 API,这意味着它们还不能完全取代 ESLint + typescript-eslint。

7. 未来的可能性: 尽管目前 Rust 编写的 Linter 在类型检查方面还有局限性,但它们可能最终能够以原生速度实现类型检查的 linting,虽然这可能需要很长时间才能实现。

#前端 #Rust

https://www.joshuakgoldberg.com/blog/rust-based-javascript-linters-fast-but-no-typed-linting-right-now/
💥Rust 编写的基于异步 I/O 的超快终端文件管理器。

1. 完全的异步程序设计:Yazi 以非阻塞、事件驱动的方式处理所有耗时的 I/O 和 CPU 任务。

2. 使用 Tokio 作为其异步运行时。

3. 针对大型目录(如 100,000 个文件),Yazi 使用了分块加载,这是 ls 和 exa 所无法比拟的。

4. Yazi 还在后台预加载目录文件列表,这是 ls 和 exa 所不具备的优化。

5. 预缓存机制:Yazi 为 mime类型、图片、视频、PDF、目录大小等数据提供了预缓存机制。

6. 可丢弃的任务:当你在文件间快速导航,而前一个文件触发的预览任务还未完成时,它会被直接丢弃,启动一个新任务。

7. 内置代码高亮功能:只读取和高亮文件的前 10 行,提高了效率。

8. 内置图像预览功能:包含了图像编码和缩放功能,通过多线程进行,是可以被丢弃的任务。

9. 异步任务调度:Yazi 将任务分为宏任务和微任务,根据任务的重要程度自动优先处理。

#Rust #Tools

https://github.com/sxyazi/yazi
🔥1
文章介绍了使用 Rust 开发前端工具链的方法,包括两种方式:使用 WASM 和 Node addons。作者提出了一种名为 napi-rs 的 Node 扩展实现方式,并详细讲解了如何用它在 JavaScript 和 Rust 之间实现互相调用。
Rust 的受欢迎程度近年来不断上升,其在操作系统领域已经成为 Linux 和 Windows 内核的官方认可开发语言,甚至 Vivo 手机厂商也公布使用 Rust 开发了新的操作系统 "蓝河"。此外,Rust 在图形渲染、游戏开发、中间件开发、计算安全等领域也获得了广泛应用。
回到前端领域,新兴的构建工具如 Turbopack、Parcel,甚至是 Webpack 的替代品 Rspack,都在使用 Rust 进行开发。因此,作者建议前端开发者可以学习和掌握 Rust,尽管 Rust 学习曲线陡峭,但它可能是打开新世界大门的一把钥匙。
最后,作者讲述如何开始在 Node 环境下用 Rust 进行开发,而这也是本文的主要内容。作者提出,开发者可以选择 WASM 方式,也可以选择 Node addons 方式,选择哪种方式主要取决于你是否需要完整地访问 Node API。对于需要访问 Node API 的情况,建议选择 Node addons 的方式,并推荐使用 napi-rs 工具库来进行开发。

#Rust

https://mp.weixin.qq.com/s/Zlc-G6oD63mpSUVBiOs6FA
美国白宫国家网络主管办公室(ONCD)发表了一份全面报告,强烈敦促开发者尽快转向使用内存安全的编程语言,例如 Rust。虽然这不是一个行政命令或法律,但报告强调采用内存安全语言以减少漏洞是非常重要的。

技术安全助理国家网络主管 Anjana Rajan 指出,许多严重的网络安全事件,包括远古时期的 Morris 蠕虫病毒以及近期的心脏出血(Heartbleed)漏洞,都源自内存安全漏洞。她强调,在软件和硬件开发中做出明智的决策来解决这些问题是重要的。

一项由开源安全公司 WhiteSource 进行的研究发现,在过去十年中七种最广泛使用的语言中,C 语言是最多安全漏洞的语言,几乎一半的漏洞都出现在 C 语言中。尽管 C 语言已经被使用了很长时间,且撰写代码量最高,但它也存在一些固有的弱点导致安全漏洞。

尽管可以用 C 和 C++ 写出安全的代码,但这非常非常困难。因为这些安全漏洞不断出现的原因,Rust 现在正在被用于 Linux 内核,而微软 Azure 的 CTO Mark Russinovich 建议开发者应避免使用 C 或 C++,转而使用 Rust

报告指出,软件行业应该开发用来更好地评估软件安全的指标,以预见和减轻网络空间的系统性风险。国家网络主管 Harry Coker 强调,我们有能力——也有责任——在网络空间减少攻击面。

报告承认,并非在所有情况下都可以切换到内存安全语言,但在大多数情况下这是可行的。Open Source Security Foundation (OpenSSF) 同意这一众多建议,并指出,在开发全新项目或新组件时,使用内存安全语言可以大幅降低内存安全相关漏洞的风险。

OpenSSF 也认为,大规模采用内存安全语言并不简单。例如,重写所有现有的 C 和 C++ 代码既不经济也不切实际。而且,从一个语言迁移到另一个语言经常会引入新的漏洞,而且重新部署更新的软件特别是在嵌入式系统(如关键基础设施)中还要复杂得多。

因此,OpenSSF 建议开发者采取基于风险的方法,对最关键的组件进行重构,并且已经开发了 C 和 C++ 的编译器选项加固指南,以帮助那些不能轻易迁移到内存安全语言的开发者。

文章总结认为,尽管我们可能正在迅速采用内存安全语言,但这不是一个快速的旅程。在未来的多年甚至几十年里,我们仍将依赖传统的 C 和 C++ 代码。我们能做的最好事情是改善现有代码,并更换一些关键元素,比如使用内存安全的 Rust 来替代 TLS 库。

#Rust

https://thenewstack.io/white-house-warns-against-using-memory-unsafe-languages/
1
100 个 Rust 学习练习

#Rust

https://rust-exercises.com/
Blitz 是一个高性能的 HTML 和 CSS 渲染器,由 WGPU 驱动,专为 "Dioxus Native" 项目设计。它是一个轻量级的 webview,但 JavaScript 引擎被替换成了原生的 Rust API,这使得 Rust 的响应性/状态管理库如 Dioxus 能直接与之交互。

#渲染器 #Rust

https://github.com/DioxusLabs/blitz
在非 Rust 语言编写的服务器中逐步引入 Rust 以提升性能的不同策略。作者以 Node.js 服务器为例,通过基准测试比较了不同策略的性能,并提供了详细的代码示例和性能数据。

核心策略包括:

1. Tier 0: No Rust

不使用 Rust,作为性能比较的基线。

2. Tier 1: Rust CLI Tool

将性能瓶颈函数用 Rust 重写,并编译为 CLI 工具,由 Node.js 服务器调用。

3. Tier 2: Rust Wasm Module

Rust 函数编译为 Wasm 模块,并在 Node.js 中运行。

4. Tier 3: Rust Native Function

使用 Rust 编写函数,编译成本地代码,并在 Node.js 中加载执行。

5. Tier 4: Rust Rewrite

将整个服务器用 Rust 重写。


性能结果:

1. Tier 1 相较于基线提升了 76% 的吞吐量,响应大小减半。
2. Tier 2 吞吐量提升至基线的 2.03 倍,平均延迟降低至 0.50x。
3. Tier 3 吞吐量提升至基线的 3.75 倍,平均延迟降低至 0.26x。
4. Tier 4 吞吐量提升至基线的 4.93 倍,平均延迟降低至 0.21x,内存使用降至 0.01x。

Tier 3 策略提供了最佳的性能提升与开发成本比。

#Rust #性能

https://github.com/pretzelhammer/rust-blog/blob/master/posts/rust-in-non-rust-servers.md
2
Boa JS 是一个用 Rust 语言编写的 ECMAScript 引擎,它将 Rust 的内存安全特性带入了 JavaScript 引擎的世界。Boa 已通过了超 80% 的 ECMAScript 测试。

#Rust #JavaScript

https://github.com/boa-dev/boa