Home | History | Annotate | Download | only in docs
      1 Python-Markdown 2.0 Release Notes
      2 =================================
      3 
      4 We are happy to release Python-Markdown 2.0, which has been over a year in the 
      5 making. We have rewritten significant portions of the code, dramatically 
      6 extending the extension API, increased performance, and added numerous 
      7 extensions to the distribution (including an extension that mimics PHP Markdown
      8 Extra), all while maintaining backward compatibility with the end user API in
      9 version 1.7.
     10 
     11 Python-Markdown supports Python versions 2.3, 2.4, 2.5, and 2.6. We've even 
     12 released a version converted to Python 3.0!
     13 
     14 Backwards-incompatible Changes
     15 ------------------------------
     16 
     17 While Python-Markdown has experienced numerous internal changes, those changes 
     18 should only affect extension authors. If you have not written your own 
     19 extensions, then you should not need to make any changes to your code. 
     20 However, you may want to ensure that any third party extensions you are using
     21 are compatible with the new API.
     22 
     23 The new extension API is fully documented in [[writing_extensions]]. Below is a
     24 summary of the significant changes:
     25 
     26 * The old home-grown NanoDOM has been replaced with ElementTree. Therefore all
     27   extensions must use ElementTree rather than the old NanoDOM.
     28 * The various processors and patterns are now stored with OrderedDicts rather 
     29   than lists. Any code adding processors and/or patterns into Python-Markdown 
     30   will need to be adjusted to use the new API using OrderedDicts.
     31 * The various types of processors available have been either combined, added, 
     32   or removed. Ensure that your processors match the currently supported types.
     33 
     34 What's New in Python-Markdown 2.0
     35 ---------------------------------
     36 
     37 Thanks to the work of Artem Yunusov as part of GSoC 2008, Python-Markdown uses
     38 ElementTree internally to build the (X)HTML document from markdown source text.
     39 This has resolved various issues with the older home-grown NanoDOM and made
     40 notable increases in performance.
     41 
     42 Artem also refactored the Inline Patterns to better support nested patterns 
     43 which has resolved many inconsistencies in Python-Markdown's parsing of the 
     44 markdown syntax.
     45 
     46 The core parser had been completely rewritten, increasing performance and, for 
     47 the first time, making it possible to override/add/change the way block level
     48 content is parsed.
     49 
     50 Python-Markdown now parses markdown source text more closely to the other 
     51 popular implementations (Perl, PHP, etc.) than it ever has before. With the
     52 exception of a few minor insignificant differences, any difference should be
     53 considered a bug, rather than a limitation of the parser.
     54 
     55 The option to return HTML4 output as apposed to XHTML has been added. In 
     56 addition, extensions should be able to easily add additional output formats.
     57 
     58 As part of implementing markdown in the Dr. Project project (a Trac fork), among
     59 other things, David Wolever refactored the "extension" keyword so that it
     60 accepts either the extension names as strings or instances of extensions. This
     61 makes it possible to include multiple extensions in a single module.
     62 
     63 Numerous extensions are included in the distribution by default. See
     64 [[available_extensions]] for a complete list.
     65 
     66 See the [[change_log]] for a full list of changes.
     67 
     68