Project

General

Profile

Actions

Feature #16345

closed

Don't emit deprecation warnings by default.

Added by akr (Akira Tanaka) about 5 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:95808]

Description

We propose that Ruby doesn't emit deprecation warnings by default.

Deprecation warnings are only useful during development for updating Ruby version.
They are not useful during development with current Ruby.
It is especially frustrating when deprecated warnings are generated in gems.
Also, deprecation warnings are totally useless in production environment.

So, we want to emit deprecation warnings only in useful situations.

We propose a command line argument -W:deprecated (or --warning=deprecated)
and the following methods to enable/disable deprecation warnings.

Warning.disable(:deprecated)
Warning.enable(:deprecated)
Warning.enabled?(:deprecated)

Currently we don't propose a method to generate a deprecation warning
because currently our main intent is to disable deprecation warnings for
keyword arguments, and the warnings are generated in C level.

Background:

We talked about keyword arguments during a developer meeting (2019-11-12).
https://bugs.ruby-lang.org/issues/16333
We expect many deprecation warnings to be generated in Ruby 2.7.
They are not useful except for development for Ruby transition, and
they may block transition to Ruby 2.7.

So, we have consensus to disable deprecation warnings by default.
Our design is intentionally minimum because we need this feature for Ruby 2.7.

We chose Warning.disable(:deprecated) instead of
re-defining Warning.warn in order to avoid string object generation.

Of course, we expect to extend this feature:
Ruby-level deprecation warning generation,
warnings other than deprecation,
file-based restriction of warning generation, etc.
But this issue doesn't contain them.


Related issues 5 (1 open4 closed)

Related to Ruby master - Feature #16289: Reduce duplicated warnings for the change of Ruby 3 keyword argumentsClosedmame (Yusuke Endoh)Actions
Related to Ruby master - Feature #16018: Add a way to deprecate methodsOpenActions
Related to Ruby master - Feature #17000: 2.7.2 turns off deprecation warnings by defaultClosednagachika (Tomoyuki Chikanaga)Actions
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
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0