Pycon FR 2011 Rennes
Victor Stinner
Vu par
<victor.stinner@haypocalc.com>
Distribué sous la licence Creative Commons Attri...
Sommaire
1. CPython
2. Communauté
3. Évolutions
4. Code source
CPython
Interprète
Bibliothèque standard : 183 modules
1 million de lignes de code
60% de Python, 40% de C
Documentation : 183 000...
Communauté
1 046 contributeurs (Misc/ACKS)
224 contributeurs (Doc/ACKS)
157 développeurs cœur
dont 61 actifs depuis 1 an
sur 12 fusea...
Tout est public
bugs.python.org
Liste python-dev : 30 courriels / jour
Liste python-ideas : 5 courriels / jour
Salon IRC :...
N'importe qui peu contribuer à son niveau
Pas besoin du droit de commit pour contribuer
Droit de commit en échange de patc...
Proposition d'évolution de Python
Python Enhancement Proposal
Nécessaire quand il n'y a pas de consensus
Obligatoire pour ...
Évolutions
Active : 3.3
Correctifs uniquement : 2.7 et 3.2
Sécurité uniquement : 2.5, 2.6 et 3.1
Versions de Python
python-ideas et/ou python-dev
PEP optionnelle
Patch ou fork Mercurial (bitbucket.org)
Bug tracker
Nombreuses discussions
C...
Modification d'une fonction existante
Transformée en documentation
Poubelle
Quelques semaines
Mort d'une mauvaise idée
Rapport de bug
Reproduction
Isolation des versions affectées
Rechercher l'origine du bug
Propositions de correctif
Amélior...
Code relu par plusieurs pairs
Ajout de nouveaux tests
Documentation mise à jour
Entrée dans Misc/NEWS
Toute la suite de te...
Besoin pas clairement exposé
Intérêt limité
Concerne peu de monde
Pas de développeur compétent
Complexe à implémenter
Impl...
Assurance qualité
Patchs dans bugtracker
Outil en ligne : Rietveld
Liste python-checkins (commits)
Jusqu'à 10 versions du patch
Revue de code
10 000 tests
595 fichiers
203 000 lignes de Python
Suite de tests
80 buildbots
Python 2.7, 3.2 et 3.3
x86, x86_64, ppc, sparc
Linux : Gentoo, Debian, Ubuntu, Fedora
Windows : XP, Seven
OS ...
Code source
Style de code : PEP 8
Code standard sans surprise
Certains modules en deux parties (C, Python)
Code Python
Style de code : PEP 7
Compteur de référence (refleak)
Mémoire gérée à la main
Pas de type haut niveau (ex : liste)
Excepti...
int PyList_SetItem(PyObject *op, Py_ssize_t i,
PyObject *newitem)
{
if (!PyList_Check(op)) {
Py_XDECREF(newitem);
PyErr_Ba...
int PyList_SetItem(PyObject *op, Py_ssize_t i,
PyObject *newitem)
{
PyObject *olditem, **p;
...
p = ((PyListObject *)op) -...
Developer Guide écrit par Brett Canon
http://docs.python.org/devguide/
Python 3.3 prévu pour août 2012 (PEP 398)
http://ww...
Questions &
Discussion
Distribué sous la licence Creative Commons Attribution-ShareAlike : http://creativecommons.org/lice...
Merci à David Malcom pour le
modèle LibreOffice
http://dmalcolm.livejournal.com/
Prochain SlideShare
Chargement dans…5
×

Cpython

477 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
477
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
1
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Cpython

  1. 1. Pycon FR 2011 Rennes Victor Stinner Vu par <victor.stinner@haypocalc.com> Distribué sous la licence Creative Commons Attribution-ShareAlike : http://creativecommons.org/licenses/by-sa/3.0/ Développement de CPython
  2. 2. Sommaire 1. CPython 2. Communauté 3. Évolutions 4. Code source
  3. 3. CPython
  4. 4. Interprète Bibliothèque standard : 183 modules 1 million de lignes de code 60% de Python, 40% de C Documentation : 183 000 lignes de reST CPython
  5. 5. Communauté
  6. 6. 1 046 contributeurs (Misc/ACKS) 224 contributeurs (Doc/ACKS) 157 développeurs cœur dont 61 actifs depuis 1 an sur 12 fuseaux horaires Personnes
  7. 7. Tout est public bugs.python.org Liste python-dev : 30 courriels / jour Liste python-ideas : 5 courriels / jour Salon IRC : #python-dev sur Freenode Liste python-commiters Communication
  8. 8. N'importe qui peu contribuer à son niveau Pas besoin du droit de commit pour contribuer Droit de commit en échange de patchs d'excellente qualité Ça s'append (parainage, devguide) Méritocratie
  9. 9. Proposition d'évolution de Python Python Enhancement Proposal Nécessaire quand il n'y a pas de consensus Obligatoire pour les évolutions du langage with, yield from, (switch) Détaille le problème Liste les différentes propositions ●PEP
  10. 10. Évolutions
  11. 11. Active : 3.3 Correctifs uniquement : 2.7 et 3.2 Sécurité uniquement : 2.5, 2.6 et 3.1 Versions de Python
  12. 12. python-ideas et/ou python-dev PEP optionnelle Patch ou fork Mercurial (bitbucket.org) Bug tracker Nombreuses discussions Commit 1 semaine à 3 mois Nouvelle fonction
  13. 13. Modification d'une fonction existante Transformée en documentation Poubelle Quelques semaines Mort d'une mauvaise idée
  14. 14. Rapport de bug Reproduction Isolation des versions affectées Rechercher l'origine du bug Propositions de correctif Amélioration/réécriture du correctif Correction de Python 2.7, 3.2 et 3.3 24 heures à quelques semaines Correctif
  15. 15. Code relu par plusieurs pairs Ajout de nouveaux tests Documentation mise à jour Entrée dans Misc/NEWS Toute la suite de test passe Buildbots verts Commit
  16. 16. Besoin pas clairement exposé Intérêt limité Concerne peu de monde Pas de développeur compétent Complexe à implémenter Implémentation proposée non satisfaisante Anciens tickets
  17. 17. Assurance qualité
  18. 18. Patchs dans bugtracker Outil en ligne : Rietveld Liste python-checkins (commits) Jusqu'à 10 versions du patch Revue de code
  19. 19. 10 000 tests 595 fichiers 203 000 lignes de Python Suite de tests
  20. 20. 80 buildbots Python 2.7, 3.2 et 3.3 x86, x86_64, ppc, sparc Linux : Gentoo, Debian, Ubuntu, Fedora Windows : XP, Seven OS X : Tiger, Snow, Snow Leopard, Leopard FreeBSD : 6.4, 7.2 Solaris, OpenIndiana Buildbots
  21. 21. Code source
  22. 22. Style de code : PEP 8 Code standard sans surprise Certains modules en deux parties (C, Python) Code Python
  23. 23. Style de code : PEP 7 Compteur de référence (refleak) Mémoire gérée à la main Pas de type haut niveau (ex : liste) Exceptions gérées manuellement (goto) Portabilité : script configure, #ifdef Code propre et lisible Code C
  24. 24. int PyList_SetItem(PyObject *op, Py_ssize_t i, PyObject *newitem) { if (!PyList_Check(op)) { Py_XDECREF(newitem); PyErr_BadInternalCall(); return -1; } if (i < 0 || i >= Py_SIZE(op)) { Py_XDECREF(newitem); PyErr_SetString(PyExc_IndexError, "index out of range"); return -1; } ... }
  25. 25. int PyList_SetItem(PyObject *op, Py_ssize_t i, PyObject *newitem) { PyObject *olditem, **p; ... p = ((PyListObject *)op) -> ob_item + i; olditem = *p; *p = newitem; Py_XDECREF(olditem); return 0; }
  26. 26. Developer Guide écrit par Brett Canon http://docs.python.org/devguide/ Python 3.3 prévu pour août 2012 (PEP 398) http://www.python.org/dev/ Pour finir
  27. 27. Questions & Discussion Distribué sous la licence Creative Commons Attribution-ShareAlike : http://creativecommons.org/licenses/by-sa/3.0/ victor.stinner@haypocalc.com Contact:
  28. 28. Merci à David Malcom pour le modèle LibreOffice http://dmalcolm.livejournal.com/

×