| Python-Markdown 2.0 Release Notes |
| ================================= |
| |
| We are happy to release Python-Markdown 2.0, which has been over a year in the |
| making. We have rewritten significant portions of the code, dramatically |
| extending the extension API, increased performance, and added numerous |
| extensions to the distribution (including an extension that mimics PHP Markdown |
| Extra), all while maintaining backward compatibility with the end user API in |
| version 1.7. |
| |
| Python-Markdown supports Python versions 2.3, 2.4, 2.5, and 2.6. We've even |
| released a version converted to Python 3.0! |
| |
| Backwards-incompatible Changes |
| ------------------------------ |
| |
| While Python-Markdown has experienced numerous internal changes, those changes |
| should only affect extension authors. If you have not written your own |
| extensions, then you should not need to make any changes to your code. |
| However, you may want to ensure that any third party extensions you are using |
| are compatible with the new API. |
| |
| The new extension API is fully documented in [[writing_extensions]]. Below is a |
| summary of the significant changes: |
| |
| * The old home-grown NanoDOM has been replaced with ElementTree. Therefore all |
| extensions must use ElementTree rather than the old NanoDOM. |
| * The various processors and patterns are now stored with OrderedDicts rather |
| than lists. Any code adding processors and/or patterns into Python-Markdown |
| will need to be adjusted to use the new API using OrderedDicts. |
| * The various types of processors available have been either combined, added, |
| or removed. Ensure that your processors match the currently supported types. |
| |
| What's New in Python-Markdown 2.0 |
| --------------------------------- |
| |
| Thanks to the work of Artem Yunusov as part of GSoC 2008, Python-Markdown uses |
| ElementTree internally to build the (X)HTML document from markdown source text. |
| This has resolved various issues with the older home-grown NanoDOM and made |
| notable increases in performance. |
| |
| Artem also refactored the Inline Patterns to better support nested patterns |
| which has resolved many inconsistencies in Python-Markdown's parsing of the |
| markdown syntax. |
| |
| The core parser had been completely rewritten, increasing performance and, for |
| the first time, making it possible to override/add/change the way block level |
| content is parsed. |
| |
| Python-Markdown now parses markdown source text more closely to the other |
| popular implementations (Perl, PHP, etc.) than it ever has before. With the |
| exception of a few minor insignificant differences, any difference should be |
| considered a bug, rather than a limitation of the parser. |
| |
| The option to return HTML4 output as apposed to XHTML has been added. In |
| addition, extensions should be able to easily add additional output formats. |
| |
| As part of implementing markdown in the Dr. Project project (a Trac fork), among |
| other things, David Wolever refactored the "extension" keyword so that it |
| accepts either the extension names as strings or instances of extensions. This |
| makes it possible to include multiple extensions in a single module. |
| |
| Numerous extensions are included in the distribution by default. See |
| [[available_extensions]] for a complete list. |
| |
| See the [[change_log]] for a full list of changes. |
| |