Issue #9423 has been updated by Daniel Berger.


I wouldn't think it would have a major impact on performance since (hopefully) not that many warnings are issued in practice.

I think compilers have a "treat warnings as errors" flag, so I suppose Ruby could do something similar. I think that's much less important for Ruby though, since often the warnings are something you can't usually do anything about, whereas in C they often indicate a possible bug.

----------------------------------------
Feature #9423: Improve warning semantics
https://bugs.ruby-lang.org/issues/9423#change-45008

* Author: Atlas Prime
* Status: Feedback
* Priority: Normal
* Assignee: 
* Category: core
* Target version: current: 2.2.0
----------------------------------------
Two suggestions for future version of Ruby that wold make warning levels more intuitive easier to work with.

First, rename $VERBOSE to $WARN for these reasons:

* `ruby` flags that set $VERBOSE are `-w` and `-W` (warnings levels).
* $VERBOSE controls output produced by `warn` method.
* $VERBOSE and FileUtils:Verbose are unrelated.
* $WARN is shorter ;-)

Second, it is confusing that `nil` and `false` mean different levels. Instead of the current `nil` as level 0, `false` as level 1, and `true` as level 2, it would be nice if `nil` and `false` both mean "off", and then go from 0 on up to mean "on" of increasing degree. Just to clarify my meaning (not a use case example):

    # nil, false mean no warning
    if $WARN
      case $WARN
      when 0
        # lesser level of warning
      when 1
        # greater level of warning
      when 2
        # can go higher if needed for rare use case
      end
    end

These are incompatible changes, but can be phased-in with support both $WARN and $VERBOSE for intermediate period.




-- 
http://bugs.ruby-lang.org/