w568w 最近的时间轴更新
w568w

w568w

V2EX 第 415660 号会员,加入于 2019-05-26 08:16:51 +08:00
今日活跃度排名 20
1 G 71 S 68 B
如何防止身边人被深度伪造等技术诈骗?
问与答  •  w568w  •  28 天前  •  最后回复来自 w568w
17
C# 有哪些显著的缺点?
  •  1   
    C#  •  w568w  •  1 天前  •  最后回复来自 niubiman
    42
    创建异步风格 API 接口的最佳实践?
  •  1   
    程序员  •  w568w  •  210 天前  •  最后回复来自 w568w
    3
    各位有没有这种感受:用英文写文本有利于促进思考
    随想  •  w568w  •  212 天前  •  最后回复来自 gpt5
    13
    运行时 GC 成为过 / 可能成为你的性能瓶颈吗?
    程序员  •  w568w  •  230 天前  •  最后回复来自 Kumo31
    15
    突然发现脸萌已经是十年前流行的应用了
    分享发现  •  w568w  •  269 天前  •  最后回复来自 ezrameow
    4
    Blessed C:现代 C 生态系统使用指南
    分享创造  •  w568w  •  340 天前  •  最后回复来自 icyalala
    14
    2023 年,有什么原生级性能的跨平台 UI 框架?
  •  4   
    程序员  •  w568w  •  351 天前  •  最后回复来自 layxy
    106
    检测 Xposed 安装、防止应用被劫持的终极解决方案
  •  2   
    Android  •  w568w  •  2022-01-03 18:09:40 PM  •  最后回复来自 knziha
    41
    w568w 最近回复了
    @catazshadow

    所以为什么这么咄咄逼人呢,为什么我提代码你就要开始扣帽子 + 需求加码呢?

    我很好奇「不能在一行内声明一个没有实现 Copy trait 的 struct 成员的静态预初始化数组」,就是你所说的「 Rust 连全局变量都不好使」?这样的需求你在 C 中甚至不可能碰到(因为 C 里所有 struct 都是 "Copy" 的)。
    @w568w #53 fix:上面那段代码的正确链接应该是 https://play.rust-lang.org/?version=beta&mode=debug&edition=2021&gist=978f5add73e7fa241821b926ec0f8efc ,都躺在剪贴板里,发错了。
    @catazshadow #50

    刚打了一大段字被 V2EX 吞了,比较坏心情。我说重点吧。

    > 怪不得要被 linux 踢出来呢,果味十足,教人编程啊

    鄙人不才,翻过两页 Rust 教程,教人写全局变量不成问题。至于第一句,我认为你完全在撒泼、无理取闹了。不知道你在对谁说话,我又不是 RIL team member 。

    > T 是个 struct 的时候,你要几行啊

    当然是一行。

    > 是不是还要来个 copy trait 啊?这要几行啊?

    咄咄逼人的语气,不明白你想说什么。首先,如果要做公平的比较,显然 C 的所有 struct 都是(在 Rust 语义上) Copy 的吧。如果禁止 Rust struct 实现 Copy ,那在 C 中根本找不到对应的语法特性了,比较没有意义。

    但尽管如此,丢代码,这段代码还实现了动态确定每个元素赋值的需求(而不像 C 只能赋常数): https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=c180d3fc345e865024298088c079ad3e

    > 原子变量不能静态分配是吧?那我这 DEFINE_SPINLOCK() 是干啥的?

    ……什么乱七八糟的。旋转锁对应的是 Mutex ,我说的是「 Arc 不能静态分配」。

    > 你写过几行内核啊?

    移植重写过 NPU 驱动: https://github.com/w568w/alarm_repo/blob/main/linux-orangepi-3b-dev/0003-rknpu-add-rknpu-driver.patch

    为 SBC 移植 u-boot: https://github.com/w568w/u-boot-orangepi-3b
    @catazshadow #44

    首先,全局变量不能使用 Arc 初始化,因为它依赖原子计数器,而原子操作是平台定义的而且需要分配内存,请你回去重新学习一下。

    强调一下,这不是语言的问题,相同的语义在 C 中也不可能实现,因为这就不是编译期静态初始化能完成的事。具体请读: https://users.rust-lang.org/t/what-prevents-arc-from-having-a-const-constructor/49532

    另外,如果你试图编译 static ... = Arc::new ,编译器输出的报错会直接告诉你使用 LazyLock 即可,这也是一个解决方案。

    然后,[T, SIZE] 这个语法我没查到,我猜你想说 [T; SIZE]?实现在这里:

    static GLOBAL: Mutex<[i32; 1024]> = Mutex::new([0; 1024]);

    还有别的问题吗?
    @hxndg #41

    > 重点是安全的开发

    所以你想表明什么,Rust 提供了一定安全,但因为没有把所有其他 Bug (包括内存泄漏,以及 C 语言的 Bug )从根本上全部解决,所以引入的意义很小?

    我明确一下我的观点:「目前,Rust 加入 Linux 是为了预防未来的新模块中引入新的内存安全问题」,至于已有的 bug ,当然要靠 C 开发者来修咯。

    > 解释一下为什么要切回 C/C++,因为需要对 Suricata 做二次开发
    > 我所谓的替换是指当我要编写代码的时候第一反应是安装 Rust 版本的基础哭而不是旧版本

    这都是你自己的情况,我没法读心提前知道。Again ,直接说「 Rust 不适合我的场景」不就好了,没看懂这和你前面的举例有什么关系。
    @w568w

    再补充一句,要是说「编译速度慢」「依赖 LLVM Backend 」「工具链复杂化」「与 C 开发者协调困难,拖慢开发进度」「严格类型系统鼓励过早抽象,造成重构优化困难」,我都算 Ta 骂到点子上了。

    但有的人偏偏既不懂 Rust ,又不懂 Linux ,没看过 RIL 的仓库,还根本不知道这次事件的来龙去脉是什么、双方分别是谁,看几个 AI 翻译的生成文章就开始张口就来,属实贻笑大方了。
    从这帖子下的暴论就能看出有的人真的是张口就来。

    @hxndg

    > 接触的几个 Rust 神教都说 Rust 安全……但是有缓慢的内存泄露

    经典「对于别人论点中不懂的名词望文生义,然后打虚空靶」,你知道 memory safety 是什么意思吗?你知道内存泄漏是 safe 的吗?维基的定义给你,这可不是你口中的「 Rust 信徒」信口开河瞎编的词语哦: https://en.wikipedia.org/wiki/Memory_safety

    > 我本身也是写过这玩意的代码,但是涉及到写高性能的一些代码的时候我还是得切回 C/C++

    所以为什么要切回呢?为了「高性能」?但你明明说 Rust 的缺点是「可能内存泄漏」啊?看不懂你的前后逻辑。

    > hyperscan 还是得底层 C 库支持,我建议先把重量级底层库替换再继续

    孤例代表整体的谬论。rustls 替换 OpenSSL 、uutitls 替换 coreutils 算「重量级」吗?另外 Rust 本身标准库的正则性能就不低,我好奇为什么需要上 hyperscan ?

    不信?数字说话,rust std 里的 regex 性能就是能和 hyperscan 打平手: https://github.com/rust-leipzig/regex-performance

    > rust 大规模进入内核是必然的吗?还是那句话,这个事情能带来什么肉眼可见的收益再说吧。

    但现在连个「用 C 子系统的 Rust 接口定义」都不让进主线了,哪来的直接收益可以看呢?经典又要马跑又不准马吃草。

    说到收益,Asahi Linux 用 Rust 编写的 Apple 设备驱动没有出现过重大内存安全问题算不算?

    @catazshadow

    > rust 还是先解决自己连全局变量都不好使的毛病

    什么乱七八糟的,要么你已经五年以上没有用过 Rust 了,要么你根本没搞懂 Rust 中的全局变量怎么写。我用 Rust 从来没有遇到过全局变量不好使的问题。
    9 小时 8 分钟前
    回复了 mizuki9 创建的主题 程序员 个人猜想 WebAssembly 的未来
    WebAssembly 的另一个雄心壮志是脱离 Web ,就像 WebGPU 、WebRTC 一样,成为可以独立存在的技术。

    WebGPU 现在已经发展成一个桌面图形技术栈,有自己的 Shader 语言; WebRTC 也成为 P2P 协议的一种了。这个意义上来说,WebAssembly 其实有替代 JVM 、成为原生应用虚拟机的目标。

    https://wasmtime.dev/ 这样的独立 WebAssembly 运行时,已经比较成熟了。只是「一次编译,到处运行」的需求究竟存不存在,还真不好说。
    17 小时 23 分钟前
    回复了 wadjj 创建的主题 程序员 突然意识到,我们日常说的模型“准召”是不是叫错了?
    我是这么助记的,以股票为例:

    精确率:说一个人「精」,就是说他投资非常小气,只有算准了绝对涨的时候才会买,所以 精确率=#(真涨了)/#(他看涨)

    准确率:说一个人「准」,就是说他是股神,每次不管涨跌都能预测对,所以 准确率=#(真涨或跌了)/#(预测总数)

    其他也类似:

    召回率:把每次涨的时刻都回忆( recall )起来,这人有几次看涨?所以召回率=#(他看涨)/#(涨了)

    这里很明显「精」和「召回」是矛盾的,一个人越精、越保守,他就越容易漏掉一些小涨的瞬间;反过来,一个人闭着眼睛投资永远看涨,那他召回率就是 100%,但肯定亏本。所以,要综合衡量这两个方面,就用 F-score 来计算。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:42 · PVG 05:42 · LAX 13:42 · JFK 16:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.