SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
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
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 lignes de reST
CPython
Communauté
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
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
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
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
É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
Commit
1 semaine à 3 mois
Nouvelle fonction
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élioration/réécriture du correctif
Correction de Python 2.7, 3.2 et 3.3
24 heures à quelques semaines
Correctif
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
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
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 X : Tiger, Snow, Snow Leopard, Leopard
FreeBSD : 6.4, 7.2
Solaris, OpenIndiana
Buildbots
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)
Exceptions gérées manuellement (goto)
Portabilité : script configure, #ifdef
Code propre et lisible
Code C
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;
}
...
}
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;
}
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
Questions &
Discussion
Distribué sous la licence Creative Commons Attribution-ShareAlike : http://creativecommons.org/licenses/by-sa/3.0/
victor.stinner@haypocalc.com
Contact:
Merci à David Malcom pour le
modèle LibreOffice
http://dmalcolm.livejournal.com/

Más contenido relacionado

Similar a Cpython

Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsThierry Gayet
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgRomain Boman
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Pylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieuxPylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieuxLogilab
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxLagloireSouamounou
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+Jl Salvat
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérienceKhanh Maudoux
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteePatrick MOREAU
 

Similar a Cpython (20)

Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
 
Formation python
Formation pythonFormation python
Formation python
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Pylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieuxPylint : 10 ans, état des lieux
Pylint : 10 ans, état des lieux
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Formation python
Formation pythonFormation python
Formation python
 
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
 

Cpython

  • 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. Sommaire 1. CPython 2. Communauté 3. Évolutions 4. Code source
  • 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
  • 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. 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. 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. 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
  • 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. 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. Modification d'une fonction existante Transformée en documentation Poubelle Quelques semaines Mort d'une mauvaise idée
  • 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. 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. 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
  • 18. Patchs dans bugtracker Outil en ligne : Rietveld Liste python-checkins (commits) Jusqu'à 10 versions du patch Revue de code
  • 19. 10 000 tests 595 fichiers 203 000 lignes de Python Suite de tests
  • 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
  • 22. Style de code : PEP 8 Code standard sans surprise Certains modules en deux parties (C, Python) Code Python
  • 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. 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. 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. 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. Questions & Discussion Distribué sous la licence Creative Commons Attribution-ShareAlike : http://creativecommons.org/licenses/by-sa/3.0/ victor.stinner@haypocalc.com Contact:
  • 28. Merci à David Malcom pour le modèle LibreOffice http://dmalcolm.livejournal.com/