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