Rust 公告:将 x86_64-apple-darwin
目标平台降级到 Tier 2
这篇文章宣布了 Rust 项目将 x86_64-apple-darwin
目标平台从 Tier 1 降级到 Tier 2 的决定。
这一变化主要是由于 Apple 停止支持 x86_64 架构以及 GitHub 不再提供免费的 macOS x86_64 测试环境。
虽然标准库和编译器的构建仍然会分发,但该目标的测试支持将减少,可能会更快地积累错误。
主要内容
- 变更内容:从 Rust 1.90.0 开始,
x86_64-apple-darwin
目标平台将被降级到 Tier 2。 - 背景:
- Rust 一直支持 macOS,甚至可以追溯到 Rust 0.1 版本。
- Apple 已经从 x86 架构迁移到 x86_64 架构,现在又转向 Apple Silicon(苹果自研芯片),并宣布停止支持 x86_64 架构。
- GitHub 宣布不再为公共仓库提供免费的 macOS x86_64 测试环境(runners)。Rust 项目依赖这些测试环境来执行
x86_64-apple-darwin
目标的自动化测试。 - 根据 Rust 的目标层级政策,Tier 1 平台必须在 CI 中运行测试,因此
x86_64-apple-darwin
需要被降级到 Tier 2。
具体变化
- 对用户的影响:从 Rust 1.90.0 开始,
x86_64-apple-darwin
将成为 Tier 2 平台,但标准库和编译器的构建仍然会通过rustup
或其他安装方法分发给用户。 - 测试支持:由于测试环境的减少,
x86_64-apple-darwin
目标上的自动化测试不再保证运行。这意味着该目标可能会更快地积累未被发现的错误。
未来展望
- 进一步降级的可能性:如果
x86_64-apple-darwin
目标在未来导致具体问题,可能会进一步降级。目前尚未有进一步降级的计划。 - 详细动机:关于降级的详细动机可以参考 RFC 3841。
阅读:https://blog.rust-lang.org/2025/08/19/demoting-x86-64-apple-darwin-to-tier-2-with-host-tools/
Reddit:https://www.reddit.com/r/rust/comments/1mulyk1/demoting_x86_64appledarwin_to_tier_2_with_host/
文章《Const Trait Counterexamples》
作者: Rust Lang Team 的 const traits 项目的负责人
主要探讨了 Rust 中 const traits 的设计细节、当前提案的总结以及对一些替代方案的分析和反驳。
这篇文章为 Rust 社区提供了关于 const traits 设计的深入见解,并为未来的语言设计和改进提供了方向。
1. Const Traits 的设计目标和现状
- 目标:希望尽快稳定 const traits 功能,但这是一个复杂的功能,涉及大量设计考量。
- 现状:团队收到了许多来自不熟悉该功能和设计的开发者的反馈,因此作者总结了一些常见的反对意见和反例。
2. 当前提案概述
- 声明 const trait:通过在 trait 前添加
const
关键字,使其可以在 trait bounds 中使用。const trait PartialEq<Rhs: ?Sized = Self> { fn eq(&self, other: &Rhs) -> bool; fn ne(&self, other: &Rhs) -> bool { !self.eq(other) } }
- 实现 const trait:通过在 impl 前添加
const
关键字,使其满足 trait bounds。impl const PartialEq for MyType<()> { fn eq(&self, other: &Self) -> bool { true } }
- 泛型 const 代码:引入
Destruct
trait,允许在编译时销毁类型。pub const fn callit<T: ~const Destruct, F: ~const FnOnce(&T)>(x: T, f: F) { f(&x) }
3. ~const
的含义
~const
是一个修饰符,用于 trait bounds,表示“可能为 const”或“如果在 const 上下文中则为 const”。- 它只在从 const 上下文中使用时才需要证明。
- 在函数调用时,
~const
约束才会被强制执行。
4. 替代方案的分析
文章详细探讨了以下替代方案,并分析了它们的优缺点:
Proposal 1: 默认为隐式 const
- 想法:让
T: Trait
在 const 上下文中隐式地表示T: ~const Trait
,并使用?const
作为退出选项。 - 问题:
- 与现有稳定版 Rust 的行为冲突。
- 需要通过多个版本逐步引入,这可能导致迁移路径复杂且容易出错。
- 对于非 const trait,会导致混淆和潜在的严格性问题。
Proposal 2: 选择性 const
- 想法:允许在 trait 中逐个方法标记为 const,而不是整个 trait。
- 问题:
- 需要区分哪些方法可以在 const 上下文中调用,哪些不能,这可能导致混乱。
- 无法区分哪些 trait 允许 const 实现,哪些不允许。
Proposal 3: 使用 T: const Trait
- 想法:使用
T: const Trait
表示“如果在 const 上下文中则为 const”的约束。 - 问题:可能会导致与现有语法的不一致性,需要进一步讨论。
Proposal 4: Destruct
vs. Drop
- 想法:引入
Destruct
trait 来区分哪些类型可以在编译时销毁。 - 问题:如果使用
T: ~const Drop
,会导致与T: Drop
的不对称性。
Proposal 5: 学术研究的适用性
- 想法:尝试将学术研究中的效果系统应用于 Rust。
- 问题:这些模型可能过于复杂,不适合 Rust 的实际需求。
Proposal 6: 一致性的困境
- 想法:在所有需要的地方使用
~const
,例如~const fn
、~const trait
等。 - 问题:这可能会导致不必要的复杂性,且对实际开发帮助不大。
Proposal 7: ?const
的适用性
- 想法:使用
?const
表示“可能为 const”。 - 问题:
?
在 Rust 中通常用于放松约束,而~const
是更严格的约束,因此使用?const
不合适。
5. 未来方向和讨论
- 待确定的内容:
- const-when-const 约束的语法(
~const
、[const]
或(const)
)。 - 关键字的顺序(
const impl Trait for Ty
或impl const Trait for Ty
)。 Destruct
的命名是否需要改进。
- const-when-const 约束的语法(
- 未来可能的扩展:
const fn
trait 方法。~const fn
指针、dyn ~const Trait
、impl ~const Trait
。- 配置 derive 宏以生成 const 实现。
6. 总结
文章最后提到,作者自 2021 年 7 月开始从事 const traits 的工作,至今已四年。尽管可能还需要更多时间来完善,但作者希望通过这篇文章帮助改进语言设计的讨论。同时,作者也鼓励社区成员参与讨论,并在 GitHub 上支持他的工作。
阅读:https://dbeef.dev/const-trait-counterexamples/
Reddit:https://www.reddit.com/r/rust/comments/1mvgukq/const_trait_counterexamples/
Mach:网络模糊测试和资产发现工具
MACH 是一款速度极快的网络模糊测试和资产发现工具,可帮助攻击性安全专业人员发现隐藏的端点、服务和漏洞。它的设计考虑了速度 、 精度和状态跟踪 。
功能:
- 🚀 快速模糊测试 ——针对速度进行优化的高性能扫描引擎。
- 🔍 智能发现 ——查找隐藏的端点、子域和资产。
- 🛠️ 状态引擎 — 有效跟踪已发现的资产。
- 📊 可视化输出 ——清晰的结果和结构化的报告。
- ⚡ 多样化且强大 ——专为进攻性安全工作流程而打造。
仓库:https://github.com/clickswave/mach
Reddit:https://www.reddit.com/r/rust/comments/1ms9u3t/media_releasing_mach_a_web_fuzzing_tool_designed/
讨论:Bevy 真的像介绍中描述的那样不稳定吗?
“一直在发生大量变化。巨大的破坏性变化。”
Reddit:https://www.reddit.com/r/rust/comments/1mvfamk/is_bevy_really_as_unstable_as_their_introduction/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论