Ciclos de memoria, "core developers" y dataclasses https://podcast.jcea.es/python/12
En lo que sigue, cuando se habla de CPython, se refiere alintérprete de referencia de Python, que está escrito en lenguajeC: https://www.python.org/downloads/.
Participantes:
Eduardo Castro, email:info@ecdesign.es. Conectando desde AGuarda.
Jesús Cea, email: jcea@jcea.es, twitter:@jcea, https://blog.jcea.es/,https://www.jcea.es/. Conectando desde Madrid.
Javier, conectando desde Madrid.
Víctor Ramírez, twitter: @virako,programador python y amante de vim, conectando desde Huelva.
Juan Carlos.
Audio editado por Pablo Gómez, twitter:@julebek.
La música de la entrada y la salida es "Lightning Bugs", de JasonShaw. Publicada en https://audionautix.com/ con licencia- Creative Commons Attribution 4.0 InternationalLicense.
[00:52] Seguimos hablando del bug comentado la semana pasada.
[02:17] El "bytecode" https://es.wikipedia.org/wiki/Bytecodeque genera Python es muy mejorable.
>>> import dis>>> def suma(valores):... s=0... for i in valores:... s+=i... return s... >>> dis.dis(suma)2 0 LOAD_CONST 1 (0)2 STORE_FAST 1 (s)
3 4 LOAD_FAST 0 (valores)6 GET_ITER>> 8 FOR_ITER 12 (to 22)10 STORE_FAST 2 (i)
4 12 LOAD_FAST 1 (s)14 LOAD_FAST 2 (i)16 INPLACE_ADD18 STORE_FAST 1 (s)20 JUMP_ABSOLUTE 8
5 >> 22 LOAD_FAST 1 (s)24 RETURN_VALUE
[08:32] Recogida de basuras.
gc.set_threshold():https://docs.python.org/3/library/gc.html#gc.set_threshold.
gc.disable():https://docs.python.org/3/library/gc.html#gc.disable.
[11:27] Herramientas de monitorización:
[13:32] Funcionalidades de auditoría de Python:
PEP 551 -- Security transparency in the Python runtimehttps://www.python.org/dev/peps/pep-0551/.
PEP 578 -- Python Runtime Audit Hookshttps://www.python.org/dev/peps/pep-0578/.
[16:47] Más herramientas de monitorización:
SystemTap: https://es.wikipedia.org/wiki/SystemTap.
eBPF: https://ebpf.io/.
py-spy: https://github.com/benfred/py-spy.
[17:52] Más sobre DTracehttps://es.wikipedia.org/wiki/DTrace_(Sun_Microsystems) y Python:
[22:12] Tracemalloc.
[23:02] Seguimos hablando del bug comentado la semana pasada.
bug bpo35930: "Raising an exception raised in a "future"instance will create reference cycles":https://bugs.python.org/issue35930.
¡Se ofrece una caja de cervezas!
Brainstorming.
Diagnóstico detallado.
weakref — Weak references:https://docs.python.org/3/library/weakref.html.
Se sube la apuesta a caja y media de cervezas :-).
La excepción salta en un hilo y se "transporta" y almacenapara que se pueda acceder desde otro hilo.
Test reproducible.
[36:42] Aviso legal.
[38:27] Las futuras notas de las grabaciones serán EXHAUSTIVAS(como estáis comprobando leyendo esto :).
[39:17] Ideas para "cebar" las tertulias.
[40:37] Cómo organizar las tertulias, diferentes intereses yprofundidad. Dinámica de la tertulia.
[42:32] ¿Cómo se organizan los "core developers"?
El desarrollo se ha movido en github. Los bugs están a mediomigrar, se va a integrar más en github.
https://pyfound.blogspot.com/2020/05/pythons-migration-to-github-request-for.html
PEP 581 -- Using GitHub Issues for CPythonhttps://www.python.org/dev/peps/pep-0581/.
Guía del desarrollador: https://devguide.python.org/.
Backporting de bugs de cpython de la versión en desarrollo alas versiones estables.
¿Cómo se obtiene y se pierde el status de "core developer"?
Steering council. PEP 8016:https://www.python.org/dev/peps/pep-8016/. Rol que cumpley cómo se elige.
Desde que Guido no es BDFL, está muy activo en listas decorreo y picando código.
[52:22] ¡Víctor quiere más bugs para aprender!
[53:42] ¿Qué partes de CPython están escritas en C y cuáles enPython?
Se escribe en C lo que no tiene más remedio, por rendimientoo porque interactúa con el sistema operativo.
Más adelante de la conversación Jesús Cea explica cómo versi un módulo concreto está en C o en Python sin tener que iral código fuente.
[57:32] PyPy https://www.pypy.org/. Intérprete de Pythonescrito en Python.
[58:27] ¿Incluir otros lenguajes en la implementación deCPython?
Rust:https://es.wikipedia.org/wiki/Rust_(lenguaje_de_programaci%C3%B3n).
PyOxidizer: https://github.com/indygreg/PyOxidizer.
Fragmentación. Jesús Cea estoy más centrado en la parte de Cporque la mayor parte de los "core developers" no saben C.Añadir más lenguajes reduce el grupo de gente que puedemantener esas partes.
Portabilidad de C.
Bootstraping de un lenguaje con el propio lenguaje.
[01:05:02] Python 3.9. Mejoras.
[01:08:07] Dataclasses:https://docs.python.org/3/library/dataclasses.html.
La dificultad para tener atributos opcionales. Algunasideas.
attrs: https://www.attrs.org/en/stable/.
Usar valores "sentinel".
[01:20:52] Pydantic: https://pydantic-docs.helpmanual.io/.
[01:23:07] Horarios de las tertulias. Mucha discusión y algunasideas. De momento no habrá cambios. Hace falta más feedback.
[01:30:27] Jesús Cea explica cómo ver si un módulo concreto estáen C o en Python sin tener que ir al código fuente.
[01:31:18] Más sobre la dinámica de las tertulias.
Debate sobre presentarse o no en tertulias abiertas, o tenerla cámara apagada.
Va siendo necesario tener algun repositorio para que lagente de la tertulia pueda compartir cosas.
[01:36:42] Actas de las tertulias y publicar las grabaciones deuna puñetera vez. ¿Algún ingeniero de sonido en la sala?¿Baratito?
[01:39:08] El "nivel" de las listas de correo. ¿Dónde están lasconversaciones interesantes? (aparte de la tertulia semanal :-).
La maldición de lo básico e "introducción a". Igual para quehaya conversación interesante, hay que hacer preguntasinteresantes :-).
Python-Madrid antes de que llegase Meetup.
Jesús Cea sugiere listas como "python-ideas":https://mail.python.org/mailman3/lists/python-ideas.python.org/.También la lista de programación Python en español:python-es@python.org.
Javier tiene intereses muy extraños :-).
[01:54:52] Cierre.
[01:56:42] Final.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More