Ciclos de memoria, "core developers" y dataclasses https://podcast.jcea.es/python/12
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.
que 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_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.
https://es.wikipedia.org/wiki/DTrace_(Sun_Microsystems) y Python:
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.
(como estáis comprobando leyendo esto :).
profundidad. Dinámica de la tertulia.
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.
Python?
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.
escrito en Python.
CPython?
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.
https://docs.python.org/3/library/dataclasses.html.
La dificultad para tener atributos opcionales. Algunas
ideas.
attrs: https://www.attrs.org/en/stable/.
Usar valores "sentinel".
ideas. De momento no habrá cambios. Hace falta más feedback.
en C o en Python sin tener que ir al código fuente.
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.
una puñetera vez. ¿Algún ingeniero de sonido en la sala?
¿Baratito?
conversaciones interesantes? (aparte de la tertulia semanal :-).
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 :-).