我觉得safety是rust的一个重要存在理由,怎么强调都不过分。不过说实话这个事件争论的不是要不要用unsafe,而是要不要随地用unsafe。
要不要用unsafe我觉得没什么好争论了,你用的std里面各种unsafe,你用的*-sys crates里面各种unsafe,你只要ffi必然要用unsafe。只是社区的观点是应该以crate为单位封装unsafe,而不是以fn。并且每个使用unsafe的地方都必须非常谨慎,注明原因,不能随手来一个。
我觉得这个事件中,actix作者也是很冤的,这是一个钢铁直男被另外几个钢铁直男伤害了的故事。作者辛辛苦苦写出actix-web这个框架,然后辛辛苦苦1.0完全重构各种修修补补终于搞成了Benchmark第一,为Rust出了一回头。结果跑出来一个人居然写了一篇文章来劝人不要用actix-web。然后actix作者曾经还花时间帮写文章这人解决过问题。这种事情发生在我身上,我可能也受不了。
下面给需要的同学翻译一下这个事件相关的PR:Remove several usages of 'unsafe' by Aaron1011 · Pull Request #968 · actix/actix-webgithub.com
PR作者: (提交了一个PR,去掉了几个没必要的unsafe)
actix-web作者: 我没看出来有什么意义,这个PR解决了啥? (What is the point? What solves this Pr?)
PR作者: 有些地方unsafe没必要/会导致UB
actix-web作者: 你能指出哪里有潜在的UB吗?
PR作者: (给了个具体例子)
actix-web作者: 我猜大家还是都换用解释型语言吧,不然都得死在UB里。(I guess everybody should switch to interpreted language otherwise we will die in ub)
(直接关闭PR)
众人:喵喵喵?