败犬日报 2025-12-10
败犬日报 2025-12-10
1. if_eligible 已经被消灭
被 nb comment 干掉的,见 N5028。wording 更改在 P3920。
2. The (successful) end of the kernel Rust experiment(文章)
https://lwn.net/Articles/1049831/
本来没有 successful,纯标题党。移除了实验性标签,rust 正式成为 linux 内核语言。
3. “防御性编程”鉴赏:shared_ptr 类型的成员变量,在成员函数里复制一份保证存活
cpp
struct A {
std::shared_ptr<B> obj_;
void foo() {
std::shared_ptr<B> obj = obj_;
// 其他逻辑(没有析构、delete this 之类的操作)
}
};先说结论:完全没有必要。
几个 AI 一致认为有必要,说在多线程场景,this 会在别的线程析构,美名其曰“防御性编程”(被指出问题后,甚至反驳说群友没接触过工程)。
成员函数能保证 this 一直有效(除非主动析构或 delete this)。this 有效,它的成员变量自然一直有效。
如果真的有别的线程析构了 this,那这代码就是有 UB,是很危险的。这种“防御性编程”只会掩盖问题,而不是解决问题。
群友表示入职后最大的一个提升就是生产上永远不写“防御性代码”。要么有问题要么没问题,什么叫可能有问题。
如果防御性编程指断言、检查,那应该推荐(最多显得有点无聊)。而如果“防御性编程”指拿一个默认行为去掩盖问题,那就是掩耳盗铃。
“你先别管有没有问题,你就说代码能不能跑吧。”