Ruby `exit!` 函数似乎调用了与文档相反的退出处理程序
The Ruby `exit!` function appears to call exit handlers contrary to documentation
JRuby 9.1.17.0 和 9.2.13.0 上的以下代码 运行 Windows:
at_exit { puts "at_exit function" }
ObjectSpace.define_finalizer("string", proc { puts "in finalizer" })
exit!
产生这个:
at_exit function
in finalizer
我的预期是,根据 exit!
的文档,不应调用退出处理程序:
https://ruby-doc.org/core-2.7.1/Kernel.html#method-i-exit-21
这是 exit!
中的错误吗?
是否有其他方法可以实现不触发退出处理程序的预期结果,从而保证从内部杀死我的系统?
这看起来像是 JRuby 中已知的不兼容性。
Kernel#exit!
and Process::exit!
were only added to ruby/spec
on July, 27th 2020 (35 days ago) by Benoit Daloze (maintainer of ruby/spec
, lead developer of TruffleRuby, JRuby Team Member): https://github.com/ruby/spec/commit/3bf0edcecb424df1e3a70fe48971b24af4be1977#diff-5b2f13aa6d64a30812e9221d9994b907R95-R99
的规格
2020 年 7 月 28 日,Benoit 在 JRuby spec
目录中添加了标签,将这些新规范禁用为已知故障:https://github.com/jruby/jruby/commit/f138bd9e62b757e6fd209101b2eb46b266b9b7b0#diff-332fe3279d2469ab891d8739c3d425e3R1-R2
JRuby 团队 做 运行 ruby/spec
以确保与所有其他 Ruby 实现兼容,但是当然,如果缺少规格,不兼容性可能会被忽视。
JRuby 9.1.17.0 和 9.2.13.0 上的以下代码 运行 Windows:
at_exit { puts "at_exit function" }
ObjectSpace.define_finalizer("string", proc { puts "in finalizer" })
exit!
产生这个:
at_exit function
in finalizer
我的预期是,根据 exit!
的文档,不应调用退出处理程序:
https://ruby-doc.org/core-2.7.1/Kernel.html#method-i-exit-21
这是 exit!
中的错误吗?
是否有其他方法可以实现不触发退出处理程序的预期结果,从而保证从内部杀死我的系统?
这看起来像是 JRuby 中已知的不兼容性。
Kernel#exit!
and Process::exit!
were only added to ruby/spec
on July, 27th 2020 (35 days ago) by Benoit Daloze (maintainer of ruby/spec
, lead developer of TruffleRuby, JRuby Team Member): https://github.com/ruby/spec/commit/3bf0edcecb424df1e3a70fe48971b24af4be1977#diff-5b2f13aa6d64a30812e9221d9994b907R95-R99
2020 年 7 月 28 日,Benoit 在 JRuby spec
目录中添加了标签,将这些新规范禁用为已知故障:https://github.com/jruby/jruby/commit/f138bd9e62b757e6fd209101b2eb46b266b9b7b0#diff-332fe3279d2469ab891d8739c3d425e3R1-R2
JRuby 团队 做 运行 ruby/spec
以确保与所有其他 Ruby 实现兼容,但是当然,如果缺少规格,不兼容性可能会被忽视。