Some people have mistaken Python bytecode as being stable and unchanging. In
reality it's simply an implementation detail for CPython. This point is now
clearly documented in both the docs for dis and the glossary.

Closes issue #7829. Thanks to Terry Reedy for some initial suggestions on
wording.
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index b62a673..c9417ea 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -5,12 +5,13 @@
    :synopsis: Disassembler for Python bytecode.
 
 
-The :mod:`dis` module supports the analysis of Python :term:`bytecode` by
-disassembling it.  Since there is no Python assembler, this module defines the
-Python assembly language.  The Python bytecode which this module takes as an
+The :mod:`dis` module supports the analysis of CPython :term:`bytecode` by
+disassembling it. The CPython bytecode which this module takes as an
 input is defined in the file :file:`Include/opcode.h` and used by the compiler
 and the interpreter.
 
+.. warning:: Bytecode is an implementation detail of the CPython interpreter!  No guarantees are made that bytecode will not be added, removed, or changed between versions of Python. Use of this module should not be considered to work across Python VMs or Python releases.
+
 Example: Given the function :func:`myfunc`::
 
    def myfunc(alist):