diff --git a/Doc/lib/libcompileall.tex b/Doc/lib/libcompileall.tex
index a731245..d39a548 100644
--- a/Doc/lib/libcompileall.tex
+++ b/Doc/lib/libcompileall.tex
@@ -17,14 +17,22 @@
 
 
 \begin{funcdesc}{compile_dir}{dir\optional{, maxlevels\optional{,
-                              ddir\optional{, force}}}}
+                              ddir\optional{, force\optional{, 
+                              rx\optional{, quiet}}}}}}
   Recursively descend the directory tree named by \var{dir}, compiling
   all \file{.py} files along the way.  The \var{maxlevels} parameter
   is used to limit the depth of the recursion; it defaults to
   \code{10}.  If \var{ddir} is given, it is used as the base path from 
   which the filenames used in error messages will be generated.  If
   \var{force} is true, modules are re-compiled even if the timestamps
-  are up to date.
+  are up to date. 
+
+  If \var{rx} is given, it specifies a regular expression of file
+  names to exclude from the search; that expression is searched for in
+  the full path.
+
+  If \var{quiet} is true, nothing is printed to the standard output
+  in normal operation.
 \end{funcdesc}
 
 \begin{funcdesc}{compile_path}{\optional{skip_curdir\optional{,
diff --git a/Lib/compileall.py b/Lib/compileall.py
index cb4a3e9..8110fb9 100644
--- a/Lib/compileall.py
+++ b/Lib/compileall.py
@@ -19,7 +19,8 @@
 
 __all__ = ["compile_dir","compile_path"]
 
-def compile_dir(dir, maxlevels=10, ddir=None, force=0, rx=None):
+def compile_dir(dir, maxlevels=10, ddir=None,
+                force=0, rx=None, quiet=0):
     """Byte-compile all modules in the given directory tree.
 
     Arguments (only dir is required):
@@ -29,9 +30,11 @@
     ddir:      if given, purported directory name (this is the
                directory name that will show up in error messages)
     force:     if 1, force compilation, even if timestamps are up-to-date
+    quiet:     if 1, be quiet during compilation
 
     """
-    print 'Listing', dir, '...'
+    if not quiet:
+        print 'Listing', dir, '...'
     try:
         names = os.listdir(dir)
     except os.error:
@@ -57,7 +60,8 @@
                 try: ctime = os.stat(cfile)[stat.ST_MTIME]
                 except os.error: ctime = 0
                 if (ctime > ftime) and not force: continue
-                print 'Compiling', fullname, '...'
+                if not quiet:
+                    print 'Compiling', fullname, '...'
                 try:
                     ok = py_compile.compile(fullname, None, dfile)
                 except KeyboardInterrupt:
@@ -77,11 +81,11 @@
              name != os.curdir and name != os.pardir and \
              os.path.isdir(fullname) and \
              not os.path.islink(fullname):
-            if not compile_dir(fullname, maxlevels - 1, dfile, force, rx):
+            if not compile_dir(fullname, maxlevels - 1, dfile, force, rx, quiet):
                 success = 0
     return success
 
-def compile_path(skip_curdir=1, maxlevels=0, force=0):
+def compile_path(skip_curdir=1, maxlevels=0, force=0, quiet=0):
     """Byte-compile all module on sys.path.
 
     Arguments (all optional):
@@ -89,6 +93,7 @@
     skip_curdir: if true, skip current directory (default true)
     maxlevels:   max recursion level (default 0)
     force: as for compile_dir() (default 0)
+    quiet: as for compile_dir() (default 0)
 
     """
     success = 1
@@ -96,20 +101,22 @@
         if (not dir or dir == os.curdir) and skip_curdir:
             print 'Skipping current directory'
         else:
-            success = success and compile_dir(dir, maxlevels, None, force)
+            success = success and compile_dir(dir, maxlevels, None,
+                                              force, quiet=quiet)
     return success
 
 def main():
     """Script main program."""
     import getopt
     try:
-        opts, args = getopt.getopt(sys.argv[1:], 'lfd:x:')
+        opts, args = getopt.getopt(sys.argv[1:], 'lfqd:x:')
     except getopt.error, msg:
         print msg
-        print "usage: python compileall.py [-l] [-f] [-d destdir] " \
+        print "usage: python compileall.py [-l] [-f] [-q] [-d destdir] " \
               "[-s regexp] [directory ...]"
         print "-l: don't recurse down"
         print "-f: force rebuild even if timestamps are up-to-date"
+        print "-q: quiet operation"
         print "-d destdir: purported directory name for error messages"
         print "   if no directory arguments, -l sys.path is assumed"
         print "-x regexp: skip files matching the regular expression regexp"
@@ -118,11 +125,13 @@
     maxlevels = 10
     ddir = None
     force = 0
+    quiet = 0
     rx = None
     for o, a in opts:
         if o == '-l': maxlevels = 0
         if o == '-d': ddir = a
         if o == '-f': force = 1
+        if o == '-q': quiet = 1
         if o == '-x':
             import re
             rx = re.compile(a)
@@ -134,7 +143,8 @@
     try:
         if args:
             for dir in args:
-                if not compile_dir(dir, maxlevels, ddir, force, rx):
+                if not compile_dir(dir, maxlevels, ddir,
+                                   force, rx, quiet):
                     success = 0
         else:
             success = compile_path()
diff --git a/Misc/NEWS b/Misc/NEWS
index fe07def..ada779e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -44,6 +44,8 @@
 
 Library
 
+- compileall now supports quiet operation.
+
 - The BaseHTTPServer implements now optionally HTTP/1.1 persistent
   connections.
 
