State of Python (2010)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

State of Python (2010)

on

  • 6,413 views

A (somewhat rambling) presentation giving an overview of the state of the Python programming language in January, 2010.

A (somewhat rambling) presentation giving an overview of the state of the Python programming language in January, 2010.

Statistics

Views

Total Views
6,413
Views on SlideShare
6,370
Embed Views
43

Actions

Likes
9
Downloads
172
Comments
1

2 Embeds 43

http://www.slideshare.net 41
http://www.techgig.com 2

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Covers the latest stuff and nice overview.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • so a good place to start is “what’s new in 3.1”
  • so a good place to start is “what’s new in 3.1”
  • so a good place to start is “what’s new in 3.1”
  • so a good place to start is “what’s new in 3.1”
  • so a good place to start is “what’s new in 3.1”
  • so a good place to start is “what’s new in 3.1”
  • so a good place to start is “what’s new in 3.1”
  • an even better place is to maybe recap what 3.0 gave us
  • or, as some sections of the media and Slashdot reported ...
  • I think we can all remember where we were on that fateful day when Google just stopped working when 3.0 was released. Oh, those were the days.
  • urllib/urllib2 -> urllib (package); httplib/cookielib/BaseHTTPServer(etc) -> http.client, http.server; anydbm/dbhash/gdbm/etc -> dbm; xmlrpclib/SimpleXMLRPCServer -> xmlrpc; also PEP 8 changes (ConfigParser -> configparser)
  • urllib/urllib2 -> urllib (package); httplib/cookielib/BaseHTTPServer(etc) -> http.client, http.server; anydbm/dbhash/gdbm/etc -> dbm; xmlrpclib/SimpleXMLRPCServer -> xmlrpc; also PEP 8 changes (ConfigParser -> configparser)
  • also in 2.6 (note “T”kinter)
  • also in 2.6 (note “T”kinter)
  • also in 2.6 (note “T”kinter)
  • you can get a bunch of the 3.0 features in 2.6 using __future__ (eg. unicode literals)
  • you can get a bunch of the 3.0 features in 2.6 using __future__ (eg. unicode literals)
  • you can get a bunch of the 3.0 features in 2.6 using __future__ (eg. unicode literals)
  • you can get a bunch of the 3.0 features in 2.6 using __future__ (eg. unicode literals)
  • math: inf, -inf, nan, factorial, inverse hyperbolic functions and a bunch of others <br /> functools: reduce() <br /> itertools: cartesian product of iterables, combinations, permutations <br /> collections: namedtuple, deque enhancements, ABCs for Iterable and Mappings
  • math: inf, -inf, nan, factorial, inverse hyperbolic functions and a bunch of others <br /> functools: reduce() <br /> itertools: cartesian product of iterables, combinations, permutations <br /> collections: namedtuple, deque enhancements, ABCs for Iterable and Mappings
  • hackers, reverse engineers <br /> <br /> debuggers, torjans, fuzzers, emulators, code/library injection, sniffing, ...
  • warning with the code download
  • (2 enters maintenance mode) <br /> <br /> To reassure people on this, 2.5.5 has just been released.
  • (2 enters maintenance mode) <br /> <br /> To reassure people on this, 2.5.5 has just been released.
  • (2 enters maintenance mode) <br /> <br /> To reassure people on this, 2.5.5 has just been released.
  • - 2.5 already supports some of CPython 2.6&#x2019;s features (eg. class decorators) <br /> - the backported 3.1 features in 2.7 aid 3.1 compatibility <br /> - unicode by default helps IronPython and Jython
  • - 2.5 already supports some of CPython 2.6&#x2019;s features (eg. class decorators) <br /> - the backported 3.1 features in 2.7 aid 3.1 compatibility <br /> - unicode by default helps IronPython and Jython
  • - 2.5 already supports some of CPython 2.6&#x2019;s features (eg. class decorators) <br /> - the backported 3.1 features in 2.7 aid 3.1 compatibility <br /> - unicode by default helps IronPython and Jython
  • some big-name projects are done, some not so much <br /> posgresql but not mysql, even pl/python in psql supports 2&3
  • some big-name projects are done, some not so much <br /> posgresql but not mysql, even pl/python in psql supports 2&3
  • some big-name projects are done, some not so much <br /> posgresql but not mysql, even pl/python in psql supports 2&3
  • some big-name projects are done, some not so much <br /> posgresql but not mysql, even pl/python in psql supports 2&3
  • some big-name projects are done, some not so much <br /> posgresql but not mysql, even pl/python in psql supports 2&3
  • - due to last for entire 3.3 release cycle <br /> - Slow things down for a while to: 1. Let py3k settle for a while, 2. Let alternative implementations catch up <br /> - It&#x2019;s not because &#x201C;we&#x2019;re done&#x201D;
  • Old GIL: ticks; multi-core systems degenerated badly <br /> New GIL: time (5ms by default) multi-core performance unaffected <br /> (still only one thread at a time though)
  • Old GIL: ticks; multi-core systems degenerated badly <br /> New GIL: time (5ms by default) multi-core performance unaffected <br /> (still only one thread at a time though)
  • Old GIL: ticks; multi-core systems degenerated badly <br /> New GIL: time (5ms by default) multi-core performance unaffected <br /> (still only one thread at a time though)
  • The goal of cython could be described as providing an easy way to convert a Python module into a C extension.
  • Django 1.2: multiple databases, improved CSRF, configurable email backends, messaging framework, smarter &#x201C;if&#x201D; tag, localization improvement, and a ton of other stuff
  • Django 1.2: multiple databases, improved CSRF, configurable email backends, messaging framework, smarter &#x201C;if&#x201D; tag, localization improvement, and a ton of other stuff
  • Django 1.2: multiple databases, improved CSRF, configurable email backends, messaging framework, smarter &#x201C;if&#x201D; tag, localization improvement, and a ton of other stuff
  • Django 1.2: multiple databases, improved CSRF, configurable email backends, messaging framework, smarter &#x201C;if&#x201D; tag, localization improvement, and a ton of other stuff
  • Django Ski - Whistler, 2-4 March 2010

State of Python (2010) Presentation Transcript

  • 1. State of Python January, 2010 Richard Jones richard@python.org
  • 2. Some History
  • 3. Some History • Development started December, 1989
  • 4. Some History • Development started December, 1989 • 0.9.0 released February, 1991
  • 5. Some History • Development started December, 1989 • 0.9.0 released February, 1991 • 1.5.2 released April, 1999
  • 6. Some History • Development started December, 1989 • 0.9.0 released February, 1991 • 1.5.2 released April, 1999 • 2.0 released October, 2000
  • 7. Some History • Development started December, 1989 • 0.9.0 released February, 1991 • 1.5.2 released April, 1999 • 2.0 released October, 2000 • py3k branched & PEP 3000 March, 2006
  • 8. Some History • Development started December, 1989 • 0.9.0 released February, 1991 • 1.5.2 released April, 1999 • 2.0 released October, 2000 • py3k branched & PEP 3000 March, 2006 • 3.0 released November 25, 2008
  • 9. Some History • Development started December, 1989 • 0.9.0 released February, 1991 • 1.5.2 released April, 1999 • 2.0 released October, 2000 • py3k branched & PEP 3000 March, 2006 • 3.0 released November 25, 2008 • 3.1 released June 27th, 2009
  • 10. What’s New In 3.1
  • 11. What’s New In 3.13.0
  • 12. What We Utterly Broke In 3.0 With No Regard For The Consequences
  • 13. What’s New In 3.0
  • 14. What’s New In 3.0 • print() and exec() are still functions
  • 15. What’s New In 3.0 • print() and exec() are still functions • dict.keys(), dict.items(), dict.values(), map(), filter() and zip() still return iterators
  • 16. What’s New In 3.0 • print() and exec() are still functions • dict.keys(), dict.items(), dict.values(), map(), filter() and zip() still return iterators • text is still unicode and files still read bytes
  • 17. What’s New In 3.0 • print() and exec() are still functions • dict.keys(), dict.items(), dict.values(), map(), filter() and zip() still return iterators • text is still unicode and files still read bytes • as, with, True, False and None are still keywords
  • 18. What’s New In 3.0
  • 19. What’s New In 3.0 • exception chaining is still there
  • 20. What’s New In 3.0 • exception chaining is still there • the standard library is still better-organised
  • 21. What’s New In 3.0
  • 22. What’s New In 3.0 • old-style classes are still gone
  • 23. What’s New In 3.0 • old-style classes are still gone • cmp(), reduce(), apply(), coerce(), callable() and raw_input() are still the way of the dodo
  • 24. What’s New In 3.0 • old-style classes are still gone • cmp(), reduce(), apply(), coerce(), callable() and raw_input() are still the way of the dodo • `` and <> are also still gone
  • 25. What’s New In 3.0 • old-style classes are still gone • cmp(), reduce(), apply(), coerce(), callable() and raw_input() are still the way of the dodo • `` and <> are also still gone • string exceptions are still no more
  • 26. What’s New In 3.0 / 2.6
  • 27. What’s New In 3.0 / 2.6 • multiprocessing
  • 28. What’s New In 3.0 / 2.6 • multiprocessing • io and json
  • 29. What’s New In 3.0 / 2.6 • multiprocessing • io and json • tkinter.ttk (new complementary widgets, styling through “style sheets”)
  • 30. What’s New In 3.0 / 2.6
  • 31. What’s New In 3.0 / 2.6 • advanced string formatting
  • 32. What’s New In 3.0 / 2.6 • advanced string formatting • Abstract Base Classes (and function annotation in 3.0)
  • 33. What’s New In 3.0 / 2.6 • advanced string formatting • Abstract Base Classes (and function annotation in 3.0) • 0o21 == 17 0b1101 == 13
  • 34. What’s New In 3.0 / 2.6 • advanced string formatting • Abstract Base Classes (and function annotation in 3.0) • 0o21 == 17 0b1101 == 13 • Class decorators
  • 35. What’s New In 3.0 / 2.6
  • 36. What’s New In 3.0 / 2.6 • added numbers, fractions, cmath, ssl modules
  • 37. What’s New In 3.0 / 2.6 • added numbers, fractions, cmath, ssl modules • new toys in math, functools, itertools, collections
  • 38. What’s New In 3.1
  • 39. What’s New In 3.1 • python can execute packages (and zip files)
  • 40. What’s New In 3.1 • python can execute packages (and zip files) • unittest supports skipping tests
  • 41. What’s New In 3.1 • python can execute packages (and zip files) • unittest supports skipping tests • sys.version_info is a named tuple >>> sys.version_info sys.version_info(major=3, minor=1, micro=1, releaselevel='final', serial=0)
  • 42. What’s New In 3.1 • python can execute packages (and zip files) • unittest supports skipping tests • sys.version_info is a named tuple >>> sys.version_info sys.version_info(major=3, minor=1, micro=1, releaselevel='final', serial=0) • improved Python 2 pickle support
  • 43. What’s New In 3.1 / 2.7
  • 44. What’s New In 3.1 / 2.7 • thanks David Gay: >>> 1.1 1.1000000000000001 becomes... >>> 1.1 1.1
  • 45. What’s New In 3.1 / 2.7 • thanks David Gay: >>> 1.1 1.1000000000000001 becomes... >>> 1.1 1.1 • still doesn’t make this correct: 1.1 + 2.2 = 3.3
  • 46. What’s New In 3.1 / 2.7
  • 47. What’s New In 3.1 / 2.7 • io & json rewritten in C
  • 48. What’s New In 3.1 / 2.7 • io & json rewritten in C • memoryview object (mutable byte array)
  • 49. What’s New In 3.1 / 2.7 • io & json rewritten in C • memoryview object (mutable byte array) • ordered dictionary
  • 50. LESS BUGS
  • 51. What’s New In 3.1 STILL B0RKS UR CODEZ!
  • 52. Books • Python 3 for Absolute Beginners by Tim Hall and J-P Stacey • Programming in Python 3 (Second Edition) by Mark Summerfield
  • 53. Books • Dive Into Python 3 by Mark Pilgrim Python 3 Patterns, Recipes and Idioms by Bruce Eckel and Friends
  • 54. Books • Invent Your Own Computer Games with Python (Second Edition) by Albert Sweigart
  • 55. Other Books in 2009 • IronPython in Action by Michael Foord
  • 56. Other Books in 2009 • Head First Programming by Paul Barry and David Griffiths • Python for Software Design: How to Think Like a Computer Scientist by Allen B. Downey
  • 57. Other Books in 2009 • Gray Hat Python: Python Programming for Hackers and Reverse Engineers by Justin Seitz • Hello World! Computer Programming for Kids and Other Beginners by Warren Sande and Carter Sande
  • 58. Python 2.7
  • 59. Python 2.7 • expected in June - alpha 2 out now
  • 60. Python 2.7 • expected in June - alpha 2 out now • includes backporting from 3.1
  • 61. Python 2.7 • expected in June - alpha 2 out now • includes backporting from 3.1 • will be the last 2.x release
  • 62. IronPython
  • 63. IronPython • Runs on the .NET CLR
  • 64. IronPython • Runs on the .NET CLR • 2.6 released December 2009
  • 65. IronPython • Runs on the .NET CLR • 2.6 released December 2009 • Visual Studio integration higher priority than IronPython 3
  • 66. Jython
  • 67. Jython • Python compiled to the Java VM
  • 68. Jython • Python compiled to the Java VM • 2.5.1 released September 2009
  • 69. Jython • Python compiled to the Java VM • 2.5.1 released September 2009 • target CPython 2.7 for next major release
  • 70. PyPy • Python in Python • Michael Hudson will talk about that
  • 71. Migration Progress
  • 72. Migration Progress • SQLAlchemy (so db layers too)
  • 73. Migration Progress • SQLAlchemy (so db layers too) • Distribute (was “setuptools”)
  • 74. Migration Progress • SQLAlchemy (so db layers too) • Distribute (was “setuptools”) • pygame reloaded (pgreloaded)
  • 75. Migration Progress • SQLAlchemy (so db layers too) • Distribute (was “setuptools”) • pygame reloaded (pgreloaded) • Django (mostly done)
  • 76. Migration Progress • SQLAlchemy (so db layers too) • Distribute (was “setuptools”) • pygame reloaded (pgreloaded) • Django (mostly done) • numpy has a plan http://www.scipy.org/Python3k
  • 77. Migration Progress
  • 78. Migration Progress • http://wiki.python.org/moin/PortingPythonToPy3k
  • 79. Migration Progress • http://wiki.python.org/moin/PortingPythonToPy3k • python-porting mailing list http://mail.python.org/mailman/listinfo/python-porting
  • 80. Migration Progress • http://wiki.python.org/moin/PortingPythonToPy3k • python-porting mailing list http://mail.python.org/mailman/listinfo/python-porting • a bunch of very useful reference code http://code.google.com/p/python-incompatibility/
  • 81. 2to3c • an implementation of Python's 2to3 for C code
  • 82. 3to2 • GSoC project • http://bitbucket.org/amentajo/lib3to2/
  • 83. Language Moratorium Temporary suspension of all changes to the Python language syntax, semantics, and built-ins for a period of at least two years from the release of Python 3.1
  • 84. Python 3 speedup
  • 85. Python 3 speedup
  • 86. Python 3 speedup • Unladen Swallow to be merged into py3k (Google’s efforts to speed up Python)
  • 87. Python 3 speedup • Unladen Swallow to be merged into py3k (Google’s efforts to speed up Python) • A more rational GIL
  • 88. Community
  • 89. Community • Kiwi PyCon (woot)
  • 90. Community • Kiwi PyCon (woot) • planet.python.org
  • 91. Community • Kiwi PyCon (woot) • planet.python.org • www.python-forum.org/pythonforum
  • 92. Community • Kiwi PyCon (woot) • planet.python.org • www.python-forum.org/pythonforum • PyPI comments
  • 93. http://au.pycon.org/
  • 94. Skulpt
  • 95. Skulpt • http://www.skulpt.org/
  • 96. Skulpt • http://www.skulpt.org/ • entirely in-browser implementation of Python
  • 97. Skulpt • http://www.skulpt.org/ • entirely in-browser implementation of Python • No preprocessing, plugins, or server-side support required
  • 98. Shed Skin 0.3 • Python-to-C++ compiler • improved type inference • support for 'map', 'filter', 'reduce', the 'with' statement • many more library modules supported • several important optimizations
  • 99. tinypy • cython, pyrex • tinpy → C++ → XCode → iPhone
  • 100. Distribute & pip • replaces setuptools and easy_install • Distribute compatible with python 3 ... pip soon
  • 101. Web Stuff
  • 102. Web Stuff • Django 1.2 on the way (alpha Jan 2010) (full Python 3 support in a year or so)
  • 103. Web Stuff • Django 1.2 on the way (alpha Jan 2010) (full Python 3 support in a year or so) • TurboGears 2.1 coming (2.0 was June 2009)
  • 104. Web Stuff • Django 1.2 on the way (alpha Jan 2010) (full Python 3 support in a year or so) • TurboGears 2.1 coming (2.0 was June 2009) • CherryPy 3.1.2 in April 2009 3.2 due out soon supports Python 3
  • 105. Web Stuff • Django 1.2 on the way (alpha Jan 2010) (full Python 3 support in a year or so) • TurboGears 2.1 coming (2.0 was June 2009) • CherryPy 3.1.2 in April 2009 3.2 due out soon supports Python 3 • Pylons 0.9.7 in February 2009 Python 3 support (Pylons 1.1) mid-2010?
  • 106. Web Stuff • 6th Plone Conf 2009 • 2nd DjangoCon 2009 • Django Ski 2010
  • 107. virtualenv
  • 108. virtualenv • stand-alone python environments
  • 109. virtualenv • stand-alone python environments • with or without system extensions
  • 110. virtualenv • stand-alone python environments • with or without system extensions • use it!