Python

Ty: El Verificador de Tipos Python Ultrarrápido de Astral Escrito en Rust

Ty es un verificador de tipos Python y servidor de lenguaje extremadamente rápido de Astral, 10-60x más rápido que mypy y pyright, escrito en Rust.

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Ty: El Verificador de Tipos Python Ultrarrápido de Astral Escrito en Rust

El ecosistema de verificación de tipos de Python ha estado dominado durante mucho tiempo por mypy – el verificador de tipos original que pionero la tipificación gradual para Python. Pero la implementación basada en Python de mypy siempre ha tenido dificultades con el rendimiento en bases de código grandes. Ty es la respuesta de Astral a este problema: un verificador de tipos Python y servidor de lenguaje escrito completamente en Rust, diseñado para ser de 10 a 60 veces más rápido que las alternativas existentes.

Astral, la empresa detrás del increíblemente popular linter Ruff, ha aplicado la misma filosofía de rendimiento impulsada por Rust a la verificación de tipos. Ty se basa en la profunda experiencia de Astral con herramientas Python en Rust, aprovechando la misma arquitectura multiproceso y patrones de cómputo incremental que hicieron de Ruff el estándar de la industria para el linting de Python.

Los números hablan por sí solos. En monorepos grandes con cientos de miles de líneas de Python, Ty completa la verificación de tipos inicial en segundos en lugar de minutos. Las verificaciones incrementales después de cambios en archivos son efectivamente instantáneas, lo que hace factible ejecutar la verificación de tipos en cada guardado de archivo incluso en los proyectos más grandes. Para los desarrolladores que han tolerado los tiempos de verificación de varios minutos de mypy, Ty representa una mejora transformadora en la experiencia del desarrollador.


¿Cómo Logra Ty Mejoras de Velocidad Tan Dramáticas?

La ventaja de rendimiento de Ty proviene de una combinación de decisiones arquitectónicas y elecciones de implementación, no de una sola optimización.

graph LR
    A[Archivos Fuente Python] --> B[Descubrimiento Paralelo de Archivos]
    B --> C[Análisis AST en Rust]
    C --> D[Motor Incremental Salsa]
    D --> E{¿Resultado en Caché?}
    E -->|Sí| F[Reutilizar Información de Tipo Cacheada]
    E -->|No| G[Inferencia y Verificación de Tipos]
    G --> H[Almacenar en BD Incremental]
    F --> I[Recopilar Diagnósticos]
    H --> I
    I --> J[Emitir Resultados]

El motor de cómputo incremental basado en Salsa es clave para el rendimiento de Ty. Rastrea dependencias entre archivos y definiciones de tipos a un nivel granular. Cuando un archivo cambia, solo se re-ejecutan los cálculos que dependen de las partes modificadas, en lugar de volver a verificar todo el proyecto. Este es el mismo enfoque utilizado por el sistema de compilación incremental del compilador de Rust.


¿Cómo se Compara Ty con Otros Verificadores de Tipos Python?

El panorama de verificación de tipos de Python tiene varios actores establecidos, cada uno con diferentes características de rendimiento y conjuntos de funciones.

CaracterísticaTymypypyrightpyrepytype
LenguajeRustPythonTypeScriptOCamlPython
Velocidad10-60x más rápidoLínea base5-10x más rápido que mypyModeradoLento
Servidor LSPIntegradoSeparadoIntegradoSeparadoSeparado
Soporte PEP 695ParcialParcialNoNo
Sistema de pluginsPlanificadoExtensoLimitadoMínimoMínimo
Soporte monorepoNativoVia configuraciónVia configuraciónNativoBásico
Configuraciónpyproject.tomlmypy.ini, setup.cfgpyproject.tomlConfig personalizadasetup.cfg

El diseño desde cero de Ty en Rust le permite adoptar las últimas características del sistema de tipos de Python sin las restricciones de compatibilidad heredadas que ralentizan la evolución en herramientas más antiguas. Su servidor LSP integrado elimina la necesidad de configuración separada del servidor de lenguaje, proporcionando una experiencia de cadena de herramientas unificada.


¿Qué Características del Sistema de Tipos Soporta Ty?

Ty apunta a una cobertura integral del sistema de tipos en evolución de Python, incluyendo tanto características establecidas como emergentes.

CaracterísticaEstadoReferencia PEP
Anotaciones de tipo básicasCompletoPEP 484
Tipos genéricosCompletoPEP 484, PEP 695
Tipos unión (X | Y)CompletoPEP 604
Protocolos (subtipo estructural)CompletoPEP 544
TypedDictCompletoPEP 589
Tipos LiteralCompletoPEP 586
TypeVarTuple / ParamSpecCompletoPEP 646, PEP 612
Estrechamiento de tiposCompleto
Decorador de sobrecargaCompletoPEP 484
Tipo SelfCompletoPEP 673
TypeIs (estrechamiento de tipos)CompletoPEP 742
Alternativas TypedDictCompletoPEP 728
Características de tipo Python 3.14PlanificadoPEPs más recientes

Ty sigue de cerca los últimos desarrollos de PEP, con el objetivo de soportar nuevas características de tipo poco después de su aceptación. Este ciclo de adopción rápida asegura que los proyectos que utilizan las versiones más recientes de Python puedan beneficiarse de las características modernas del sistema de tipos con soporte completo del verificador de tipos.


¿Cómo se Integra Ty con los Flujos de Trabajo del Editor?

El servidor LSP integrado de Ty proporciona una experiencia de desarrollo fluida en todos los editores e IDE principales.

Editor/IDEMétodo de IntegraciónCaracterísticas LSP Clave
VS CodeExtensión LSPDiagnósticos en tiempo real, autocompletados
NeovimCliente LSP integradoErrores en línea, hover, ir a definición
JetBrainsPlugin LSPIntegración IDE completa
HelixLSP integradoConfiguración automática
Sublime TextPlugin LSPDiagnósticos, autocompletados
Emacseglot/lsp-modeSoporte LSP completo

El servidor LSP proporciona diagnósticos en tiempo real mientras escribe, autocompletados que respetan restricciones de tipo, ir a definición y buscar referencias con navegación consciente de tipos, información al pasar el cursor con tipos inferidos y mensajes de error en línea con correcciones sugeridas.


FAQ

¿Qué es Ty? Ty es un verificador de tipos Python y servidor de lenguaje escrito en Rust por Astral, diseñado para ser 10-60x más rápido que herramientas existentes como mypy y pyright. Proporciona verificación de tipos en tiempo real con integración IDE.

¿Cómo logra Ty su velocidad en comparación con mypy? Ty está escrito en Rust y utiliza una arquitectura multiproceso con compilación incremental, almacenamiento en caché de AST y análisis paralelo de archivos. Procesa archivos de forma independiente utilizando un modelo de cómputo incremental basado en Salsa.

¿Ty soporta completamente las anotaciones de tipo Python? Ty apunta a un soporte casi completo del sistema de tipos de Python, incluyendo genéricos, sobrecargas, Protocolos, TypedDicts, tipos Literal y las últimas especificaciones PEP. Sigue el PEP 695 (sintaxis de parámetros de tipo) y estándares posteriores.

¿Puede Ty reemplazar a mypy en proyectos existentes? Sí, Ty está diseñado como un reemplazo directo. Soporta configuración compatible con mypy y puede integrarse en pipelines CI/CD y flujos de trabajo de editores existentes. Muchos proyectos pueden cambiar simplemente modificando su comando de verificación de tipos.

¿Ty incluye una implementación del protocolo de servidor de lenguaje? Sí, Ty incluye un servidor LSP integrado que proporciona verificación de tipos en tiempo real, autocompletados, ir a definición, buscar referencias, información al pasar el cursor y diagnósticos de errores en línea en cualquier editor compatible con LSP.


Lecturas Adicionales

TAG
CATEGORIES