Project

General

Profile

Actions

Feature #17000

closed

2.7.2 turns off deprecation warnings by default

Added by mame (Yusuke Endoh) over 4 years ago. Updated about 4 years ago.

Status:
Closed
Target version:
-
[ruby-core:98997]

Description

Matz has decided to disable deprecation warnings for 3.0 keyword separation by default because many users feel them noisy and painful rather than useful. See https://discuss.rubyonrails.org/t/new-2-7-3-0-keyword-argument-pain-point/74980/47 .

https://github.com/ruby/ruby/pull/3273 is a pull request for the change. It is essentially one-line change in error.c, though it has many changes for tests that checks if the warning is appropriately emitted.

Note that this changeset disables all deprecation warnings by default. The reason why I stop not only keyword-related deprecation warnings but all other ones is because, if we disable only keyword-related deprecation warnings, and if keep other deprecation on by default, it becomes ambiguous what Warning[:deprecated] should return. We considered a new API like Warning[:keyword_separation_deprecated] = true / false, but we want to minimize the change because it goes to 2.7 branch. Fortunately, there are not so many other warnings disabled together; a notable one is Capturing the given block using Kernel#proc is deprecated; use &block instead, but other warnings are minor, as far as I see. It is somewhat unfortunate, but matz has already agreed with this direction.

Matz also said in the forum, "we will move on to the new keyword argument behavior in Ruby3.0 as planned". This violates the traditional convention that "gradually" makes deprecation warnings noisy: deprecated behavior is (1) warned only when VERBOSE is enabled, (2) always warned, and (3) removed. However, matz made this decision due to special circumstances of 3.0 keyword arguments; delaying the change will be also painful.

Note that, currently, the deprecation convention itself is not changed, so this patch is not going to master branch. We can discuss the deprecation policy change in another ticket, if needed. Anyway, let this ticket focus on ruby_2_7 branch change. Please do not discuss the convention change in this ticket.

The final decision is up to 2.7 branch maintainer, @nagachika (Tomoyuki Chikanaga) san, but I hope this change is accepted.

cc/ @jeremyevans0 (Jeremy Evans) @Eregon (Benoit Daloze) @nobu (Nobuyoshi Nakada) @nagachika (Tomoyuki Chikanaga)


Files

keyword-warnings-verbose-mode.patch (161 KB) keyword-warnings-verbose-mode.patch jeremyevans0 (Jeremy Evans), 07/04/2020 05:04 PM

Related issues 3 (0 open3 closed)

Related to Ruby master - Feature #16345: Don't emit deprecation warnings by default.ClosedActions
Related to Ruby master - Misc #17591: Test frameworks and REPLs do not show deprecation warnings by defaultClosedActions
Related to Ruby master - Bug #20573: Warning.warn shouldn't be called for disabled warningsClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0