Ciclos de memoria, "core developers" y dataclasses
Autor: Jesús Cea & Otros - Contacto: python2021@podcast.jcea.es
Fecha de grabación: 2020/12/22 - Duración: 01:57:29
Fecha de publicación: 2021/04/28
Palabras clave: Tertulia
Descarga el audio: M4A (29700148 bytes) - OPUS (14774330 bytes)
En lo que sigue, cuando se habla de CPython, se refiere al intérprete de referencia de Python, que está escrito en lenguaje C: https://www.python.org/downloads/.
Participantes:
Eduardo Castro, email: info@ecdesign.es. Conectando desde A Guarda.
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 Jason Shaw. Publicada en https://audionautix.com/ con licencia - Creative Commons Attribution 4.0 International License.
>>> 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_ADD
18 STORE_FAST 1 (s)
20 JUMP_ABSOLUTE 8
5 >> 22 LOAD_FAST 1 (s)
24 RETURN_VALUE
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.
PEP 551 -- Security transparency in the Python runtime https://www.python.org/dev/peps/pep-0551/.
PEP 578 -- Python Runtime Audit Hooks https://www.python.org/dev/peps/pep-0578/.
SystemTap: https://es.wikipedia.org/wiki/SystemTap.
eBPF: https://ebpf.io/.
py-spy: https://github.com/benfred/py-spy.
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 almacena para que se pueda acceder desde otro hilo.
Test reproducible.
El desarrollo se ha movido en github. Los bugs están a medio migrar, 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 CPython https://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 a las 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 cumple y cómo se elige.
Desde que Guido no es BDFL, está muy activo en listas de correo y picando código.
Se escribe en C lo que no tiene más remedio, por rendimiento o porque interactúa con el sistema operativo.
Más adelante de la conversación 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.
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 C porque la mayor parte de los "core developers" no saben C. Añadir más lenguajes reduce el grupo de gente que puede mantener esas partes.
Portabilidad de C.
Bootstraping de un lenguaje con el propio lenguaje.
La dificultad para tener atributos opcionales. Algunas ideas.
attrs: https://www.attrs.org/en/stable/.
Usar valores "sentinel".
Debate sobre presentarse o no en tertulias abiertas, o tener la cámara apagada.
Va siendo necesario tener algun repositorio para que la gente de la tertulia pueda compartir cosas.
La maldición de lo básico e "introducción a". Igual para que haya conversación interesante, hay que hacer preguntas interesantes :-).
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 :-).