I sometimes use the pattern print(str) rescue abort in order to exit without stack trace when the output of a ruby program is interrupted by SIGPIPE, ex: ./printstuff.rb | head
It seems that since ruby 2.7 this results in printing the stack trace. This is not the case when using abort by itself.
Is this intended? I would expect abort to behave much like exit(1), as it always has.
But in that case I think the documentation should be updated. This:
Terminate execution immediately, effectively by calling Kernel.exit(false). If msg is given, it is written to STDERR prior to terminating.
reads to me like nothing is written to STDERR if msg is not given. Perhaps update to something like:
Terminate execution immediately, effectively by calling Kernel.exit(false). If msg is given, it is written to STDERR prior to terminating. Otherwise, if an exception was raised, print its message and backtrace.