Python 3.14 impulsa el paral·lelisme real, les plantilles segures i una experiència més fluida

  • Anotacions diferides i t-strings aporten rendiment i plantilles segures.
  • Subintèrprets, millores free-threaded i menys bloqueig eleven el paral·lelisme.
  • Zstandard, noves eines asyncio i errors més clars faciliten el dia a dia.
  • Depuració segura i nou intèrpret amb tail calls milloren visibilitat i velocitat.

3.14 Python

Python segueix creixent i consolidant-se com una eina clau en ciència de dades, backend, automatització i ensenyament, i la versió 3.14 arriba carregada de canvis que afecten el rendiment, la concurrent i l'experiència diària. En aquesta guia t'expliquem, amb exemples i context, què hi ha darrere d'aquestes sigles i mòduls nous que veuràs per tot arreu i per què aquestes millores impacten tant a qui comença com a equips que despleguen en producció.

Més enllà del soroll habitual de cada llançament, aquí reunim el més important que s'ha anunciat i documentat oficialment, juntament amb detalls pràctics que han anat compartint desenvolupadors que ja usen 3.14. Des de les anotacions diferides fins als subintèrprets a la llibreria estàndard, passant per t-strings, Zstandard, el nou depurador segur o millores del REPL, allò imprescindible està aquí explicat de manera clara.

Panorama general: què canvia de veritat a Python 3.14

Python 3.14 es va publicar el 7 d'octubre i aplega canvis d'implementació, API i llibreria estàndard que toquen diverses àrees crítiques. La documentació oficial manté el tradicional What's New i el Changelog construïts des de Misc/NEWS.d, que serveixen de mapa detallat per veure, línia a línia, el que ha entrat. Si vols la foto gran: més paral·lelisme útil, noves capacitats per a plantilles i depuració, empaquetat de compressió modernitzat i una tanda de missatges derror molt més útils.

Al món real això es tradueix en programes amb menys contenció de fils, més opcions per paral·lelitzar sense bloquejar el GIL, menys sorpreses amb les anotacions, i una consola interactiva que ajuda més que destorba. A més, la pròpia comunitat ressalta avenços pràctics com el color al REPL i PDB, millores en argparse i unittest, i utilitats de la stdlib que simplifiquen tasques quotidianes.

Anotacions diferides: PEP 649 + PEP 749

Un dels canvis amb més importància és l'avaluació diferida de les anotacions en funcions, classes i mòduls. Ara, en lloc d'avaluar-se en definir-les, s'emmagatzemen en funcions especials i es resolen quan cal. Això redueix el cost en temps de definició, evita errors per referències avançades i fa que treballar amb tipus grans o importacions costoses sigui molt més suportable.

Per inspeccionar-les apareix el mòdul annotationlib, amb tres formats clau: VALUE (avalua valors de runtime com abans), FORWARDREF (marca noms encara no definits) i STRING (torna les anotacions com a text). De cara a migracions, el bloc de porting a la doc oficial orienta sobre quan tocar codi, encara que en la majoria de casos no caldrà canviar res.

Un detall important: si véns usant from __future__ import annotations, la seva semàntica particular segueix aplicant, així que revisa les eines de tipat. L'objectiu global és millorar rendiment i usabilitat, mantenint la possibilitat d'introspecció quan calgui.

Subintèrprets a la llibreria estàndard: PEP 734

CPython feia dècades que permetia múltiples intèrprets via C-API, però 3.14 els apropa a tothom amb concurrent.interpreters. Això obre la porta a una concurrència més humana ia paral·lelisme real en multinucli sense haver de llençar sempre de processos.

Quines ganes? Models com CSP o actor model, aïllament per defecte amb possibilitat de compartir de manera explícita i un consum de recursos menor que amb processos. Per a CPU intensiu, des de 3.12 els intèrprets estan prou aïllats per executar-se en paral·lel, desbloquejant escenaris que abans patien pel GIL.

Hi ha limitacions presents: inici d'intèrprets encara no optimitzat, ús de memòria millorable, poques opcions de compartició real més enllà de memoryview, i gran part de les extensions de PyPI sense compatibilitat plena. La bona notícia és que l'estàndard ja inclou suport, hi ha un InterpreterPoolExecutor en concurrent.futures, i la comunitat està movent fitxes a Cython, pybind11, nanobind o PyO3.

Plantilles de cadena tipus t-strings: PEP 750

Arriben les t-strings, un mecanisme de plantilles amb sintaxi de f-strings però que torna un objecte Template amb parts estàtiques i interpolacions separades, no un str final. Això permet processar el contingut abans d'unir-lo, sanititzar entrades d'usuari i muntar DSL lleugers de forma més segura.

Escriu amb prefix t en comptes de f, iteres el Template i processis cada fragment o interpolació al teu gust. Des d'escapes HTML fins a la construcció d'estructures tipus DOM o plantilles que accepten diccionaris d'atributs, guanyaràs flexibilitat sense sacrificar claredat.

Python 3.14 introdueix interfície segura per a depuració externa: PEP 768

3.14 introdueix una interfície de depuració amb zero sobrecàrrega que permet a depuradors i perfils enganxar-se a processos Python en execució de manera segura. S'han acabat els arranjaments insegurs: ara hi ha punts d'execució segurs per injectar codi de depuració sense desviar el camí normal de l'intèrpret.

Per facilitar-ho, s'exposa sys.remote_exec(), que envia codi a executar al següent punt segur del procés objectiu. La PEP descriu el protocol subjacent, incloent-hi controls de seguretat per limitar accés i evitar abusos, la qual cosa és clau en sistemes d'alta disponibilitat.

Nou tipus d'intèrpret amb tail calls a C

Una altra novetat tècnica és un intèrpret alternatiu que encadena trucades de cua entre petites funcions C que implementen opcodes, en lloc d'un gran switch. En plataformes i compiladors compatibles (Clang 19+ a x86-64 i AArch64), els benchmarks inicials mostren entre un 3% i un 5% de millora geomètrica.

És opt-in, i es recomana activar PGO perquè és la configuració provada que ofereix guanys. S'habilita amb l'opció de compilació --with-tail-call-interp, i s'espera que GCC ho suporti en el futur.

Free-threaded mode: PEP 703 i rendiment pràctic

El mode sense GIL, introduït a 3.13, fa un salt a 3.14: es completen els canvis de C-API plantejats per la PEP 703 i se substitueixen arranjaments per solucions permanents. L'intèrpret adaptatiu especialitzat (PEP 659) ja està actiu en aquesta manera, cosa que juntament amb altres optimitzacions redueix la penalització.

Avui la pèrdua en monofil ronda el 5-10% segons plataforma i compilador, un preu assumible davant del guany en paral·lelisme real. Al Windows, en compilar extensions per al build free-threaded cal definir Py_GIL_DISABLED, i en runtime pots consultar l'ajust via sysconfig.get_config_var().

A més, apareix la flag -X context_aware_warnings per controlar filtres de warnings per context, activada per defecte en builds sense GIL i desactivada en què el mantenen. també arriba thread_inherit_context perquè els fils creats heretin el Context() de l'invocant, afectant filtres de warnings, decimal i altres APIs amb contextvars.

Missatges d'error molt més útils a Python 3.14

L'intèrpret ara suggereix paraules clau quan detecta un terme semblant a un keyword de Python, ajudant a caçar errades ràpidament. Casos com escriure pritn en lloc de print ja es corregeixen amb pistes directes, encara que no totes les variants estaran cobertes.

Hi ha missatges específics per elif després d'un else, i en expressions condicionals indica on en falta una expression si poses una sentència després else o pass/break/continue abans de if. S'afinen també els errors per cadenes tancades incorrectament i per prefixos incompatibles a strings.

Més millores: missatges més clars en utilitzar as amb objectius incompatibles en imports, excepte o pattern matching; detall en intentar ficar un objecte no hasheable a dict o set; i avisos quan entres un context manager síncron amb async with o viceversa. Tot plegat perquè l'intèrpret et digui el què, l'on i el perquè.

Compressió moderna a la stdlib: PEP 784 i Zstandard

Neix el paquet compression, que reexporta lzma, bz2, gzip y zlib com a compression.lzma, compression.bz2, compression.gzip y compression.zlib. Aquests nous noms són la via preferida des del 3.14, encara que les rutes clàssiques no es deprecien per ara.

L'estrella és compression.zstd, suport nadiu per Zstandard amb bindings a la llibreria zstd de Meta. Ganes APIs ràpides i eficients, i suport directe per a arxius Zstandard a tarfile, zipfile y shutil, sense instal·lar paquets externs.

Introspecció d'assigni des de la línia d'ordres

Ara podeu inspeccionar processos Python en execució amb tasques asíncrones mitjançant python -m asyncio ps PID y python -m asyncio pstree PID. La subordre ps mostra una taula plana de tasques, noms i stacks; pstree genera un arbre de trucades async.

Això resulta especialment útil en programes llargs o bloquejats, detectant on és el coll, quines tasques esperen i com es relacionen les corutines. Si hi ha cicles al graf d'await l'eina ho detecta i llista les rutes problemàtiques.

Control concurrent de warnings a Python 3.14

warnings.catch_warnings podeu utilitzar una variable de context per a filtres d'avisos si activeu la flag context_aware_warnings via -X o variable dentorn. Així el control de warnings és predictible quan barreges fils o tasques asíncrones i no es trepitgen entre si.

Experiència d'ús de Python 3.14: consola, argpar-se, unittest i més

Qui ha fet servir 3.14 com a versió principal diversos mesos destaca el color en l'experiència diària: ressaltat de sintaxi al REPL i PDB, amb exemples de suport per a Python 3 a Kodi, millor ajuda a argpar-se i missatges més amables a unittest. Aquests detalls redueixen fricció i us estalvien saltar a l'editor per entendre què falla.

La consola interactiva suggereix arranjaments per a errades comunes, per exemple aquest clàssic pritn que ara et condueix a print. També hi ha autocompletat d'importació més intel·ligent, ajudant a descobrir mòduls sense sortir del prompt.

A la stdlib apareixen utilitats molt pràctiques: mètodes de còpia i moviment en pathlib que eviten estirar shutil per a allò bàsic, un date.strptime directe sense haver de passar per datetime.strptime().date(), i UUID v7, que combina aleatorietat amb ordenabilitat temporal. Petites dreceres, gran impacte en scripts i eines internes.

argpar-se suma suggeriments quan t'equivoques en un elecció, retallant temps en depurar CLI; i sí, t-strings ja comencen a nodrir un petit ecosistema de biblioteques que les aprofiten per a plantilles segures. Si treballeu amb cadenes complexes o entrades d'usuari, notareu la diferència.

Paral·lelisme, menys bloqueig i adéu a sorpreses amb processos

Diversos canvis apunten a disminuir el bloqueig entre fils: amb subintèrprets a la stdlib i l'avenç de la manera sense GIL hi ha més opcions per repartir càrrega sense ficar-te en atzucacs. Per a serveis i llibreries amb tasques paral·leles, això es tradueix en millores palpables de throughput.

També canvia el comportament per defecte en crear múltiples processos: s'afavoreix forkserver per davant d' forquilla a seques, cosa que redueix bloquejos subtils i fa més comprensibles les fallades en escenaris de multiprocessament. En termes pràctics: menys zombis difícils de reproduir i diagnòstics més nets.

Calendari i maduresa del llançament de Python 3.14

L'equip de Python va informar durant el cicle 3.14 de diverses alphas, com l'Alpha 5 dins d'un total de set prèvies a la beta, pensades per provar novetats, corregir bugs i afinar el procés de release. La fase beta va arrencar el 6 de maig del 2025, sense entrada de noves funcionalitats, amb possibilitat d'ajustaments fins a la candidata del 22 de juliol.

Com sempre en períodes previs a estable, no es recomana fer servir prereleases en entorns de producció. La documentació oficial manté un calendari viu (PEP 745), el tracker d'issues a GitHub i guies per contribuir a través de la Python Software Foundation. Si detectes un bug, la doc generada amb Sphinx i els enllaços de report faciliten obrir-lo i fer-ne seguiment.

Una picada d'ullet numèric: 3.14 i l'Any de la Serp

La coincidència entre el nombre de versió i les aproximacions històriques de pi (3.14) ha donat peu a més d'una broma a la comunitat, just en un any lunar marcat per la Serp. Des de Liu Xin a Zu Chongzhi, l'obsessió per aproximar pi és gairebé tan antiga com optimitzar iteradors.

Més enllà de l'anècdota, aquesta versió també ret homenatge a l'esforç col·lectiu de centenars de persones voluntàries i d'empreses que aporten enginyeria. La PSF, com a organització sense ànim de lucre, convida a participar, donar i revisar la història i llicències que emparen documentació i exemples.

La documentació s'ha continuat actualitzant fins a recents dates, amb notes d'edició i reconstruccions automatitzades amb Sphinx. Si et topes amb un comportament inesperat, consulta el changelog i l'apartat What's New per veure si hi ha matisos recents que expliquin el canvi.

Mirant en conjunt, Python 3.14 poleix l'experiència del dia a dia i, alhora, estableix bases per al futur: paral·lelisme real amb menys fricció, plantilles segures i expressives, depuració sense frens i eines que expliquen millor els errors. Si véns de 3.13 notaràs canvis incrementals i noves possibilitats; si portes unes versions sense actualitzar, la suma de millores farà que el salt valgui la pena.

Kodi 22 Piers
Article relacionat:
Kodi 22 Piers: novetats, descàrrega i què esperar de l'Alpha