Re-implement the 'warnings' module in C. This allows for usage of the
'warnings' code in places where it was previously not possible (e.g., the
parser). It could also potentially lead to a speed-up in interpreter start-up
if the C version of the code (_warnings) is imported over the use of the
Python version in key places.

Closes issue #1631171.
diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst
index d2e5b68..2267a0d 100644
--- a/Doc/library/warnings.rst
+++ b/Doc/library/warnings.rst
@@ -211,20 +211,28 @@
    is using :exc:`DeprecationWarning` as default warning class.
 
 
-.. function:: showwarning(message, category, filename, lineno[, file])
+.. function:: showwarning(message, category, filename, lineno[, file[, line]])
 
    Write a warning to a file.  The default implementation calls
-   ``formatwarning(message, category, filename, lineno)`` and writes the resulting
-   string to *file*, which defaults to ``sys.stderr``.  You may replace this
-   function with an alternative implementation by assigning to
+   ``formatwarning(message, category, filename, lineno, line)`` and writes the
+   resulting string to *file*, which defaults to ``sys.stderr``.  You may replace
+   this function with an alternative implementation by assigning to
    ``warnings.showwarning``.
 
+   ..versionchanged:: 2.6
+     Added the `line` argument.
 
-.. function:: formatwarning(message, category, filename, lineno)
+
+
+
+.. function:: formatwarning(message, category, filename, lineno[, line])
 
    Format a warning the standard way.  This returns a string  which may contain
    embedded newlines and ends in a newline.
 
+   ..versionchanged:: 2.6
+     Added the `line` argument.
+
 
 .. function:: filterwarnings(action[, message[, category[, module[, lineno[, append]]]]])