Video Summary and Transcription
Hoy vamos a hablar sobre el Analizador de Biome, que no es solo un linter o una herramienta de línea de comandos. Aprovecha el multi-threading, los canales de comunicación y el almacenamiento en caché para lograr un alto rendimiento. El analizador complementa el analizador sintáctico y proporciona características como la ordenación de importaciones y la emisión de nuevos diagnósticos. Está listo para LSP, puede ordenar automáticamente las claves JSON y se puede utilizar como una herramienta de línea de comandos para aplicar refactorizaciones. El Analizador de Biome muestra su impresionante rendimiento en el manejo de grandes bases de código en una demostración en video.
1. Introducción al Analizador Biome
Hoy vamos a hablar sobre el Analizador Biome. No es solo un linter o una herramienta de línea de comandos. El Analizador Biome es tan rápido porque aprovecha el multi-threading, utiliza canales de comunicación y emplea un almacenamiento en caché agresivo durante el análisis.
Hola a todos. ¿Cómo están? Hoy vamos a hablar sobre el Analizador Biome y lo que hay detrás de él. Antes de continuar, déjenme presentarme. Mi nombre es Emanuele Stoppa. Soy italiano y vivo en Irlanda. Me gusta el código abierto, los juegos y viajar. También estoy muy involucrado en el código abierto, participando en dos proyectos: Astro y Biome. Hoy vamos a hablar sobre el Analizador Biome. ¿Qué es lo que hace tan curioso al Analizador Biome? Bueno, el Analizador Biome es muy rápido. Vamos a ver por qué es tan rápido. No es solo un linter. Es mucho más que eso. Un linter es solo una parte pequeña. Y no es solo una herramienta de línea de comandos. Es algo más. Así que, vamos a hacerlo. Entonces, ¿por qué el Analizador Biome es tan rápido? Hay, entre otras cosas, tres aspectos que quiero explicarles. Y, ¿por qué es tan rápido el Analizador Biome? Bueno, aprovecha el multi-threading. Crea múltiples hilos para cada archivo. Utiliza canales de comunicación para mantener la comunicación entre los diferentes hilos. Y utiliza un almacenamiento en caché agresivo durante la fase de análisis. Ahora, el multi-threading. Cuando ejecutas un comando desde la CLI, como formatear, analizar, verificar, ese tipo de cosas. Cada comando recorre tu sistema de archivos. Lo que hace el Analizador Biome es que una vez que identifica los archivos que son elegibles para ser procesados, digamos, el Analizador Biome crea un hilo. Cada hilo es responsable de su propio archivo. Y lo analiza. Lo analiza y emite señales que pueden ser, por ejemplo, si hay un diagnóstico,
2. Funcionamiento del Analizador Biome
El Analizador Biome utiliza canales para la comunicación entre hilos y recopila diagnósticos utilizando múltiples emisores y un receptor. También utiliza tokens reutilizables para minimizar el uso de memoria durante el reparsing.
si hay una acción de code y más. Ahora, todos estos hilos, cuando se generan, no son conscientes entre sí. Como, solo hacen un trabajo. Al final, tienen que informar algo, como si hay errores, o si no, cualquier tipo de información. Para hacer esto, utilizamos canales. Entonces, tienes todos estos archivos. Para cada archivo, tenemos estos hilos. Hay n hilos, dependiendo del sistema operativo. Luego tenemos el hilo principal. Entonces, el hilo principal espera a todos estos hilos. Y comienza a recopilar información de todos los hilos.
Entonces, utilizando estos canales, tenemos múltiples canales con múltiples emisores, que son básicamente los hilos. Y un receptor, que pertenece al hilo principal. Y una vez que hay diagnósticos, los recopilamos. Recopilamos si hay advertencias, errores. Si, por ejemplo, omitimos algunos diagnósticos debido a algunas restricciones u opciones y cosas así. Entonces, así es como ocurre la comunicación. Y una vez que todos los hilos han terminado, el hilo principal puede reanudar su trabajo e informar todo a tu console.
Y luego tenemos tokens reutilizables. Entonces, ¿qué significa eso? Entonces, una vez que el biome analiza tu archivo, crea tokens y nodos. Estos son básicamente pointers a un bloque de memoria en tu sistema operativo. Y estos pointers se guardan, como las referencias se guardan en un objeto de caché. ¿De acuerdo? Una vez que ocurre un reparsing del mismo archivo nuevamente, digamos que ocurrió una acción de code y esa acción cambia este fragmento de let a const. Hacemos un reparsing para asegurarnos de que no haya más reglas activadas. Cuando lo repasamos, esencialmente, los nodos que pertenecen a msecret equals y la cadena se reutilizan. Entonces, en lugar de crear un nuevo nodo, ya lo tenemos allí. Entonces, tenemos esa referencia que dice que msecret apunta a ese bloque de memoria. Vamos a usarlo. No creemos uno nuevo. Entonces, así es como para cada documento reutilizamos lo mismo. Entonces, en términos de memoria, no hay desperdicio en absoluto.
3. El Poder del Analizador Biome
El analizador de Biome complementa al analizador sintáctico y proporciona características como la ordenación de importaciones. Puede emitir nuevos diagnósticos durante la fase de análisis sintáctico y puede ayudar con errores de sintaxis. La ordenación de importaciones forma parte de la misma infraestructura y se puede habilitar en los IDE. El analizador también sienta las bases para la transpilación de código, como la transformación de JSX a JavaScript.
¿Genial, verdad? Antes dije que es más que un linter. Exactamente. Un linter es solo una pequeña parte del analizador. El analizador de Biome es capaz de complementar al analizador sintáctico. También es capaz de proporcionar otras características como la ordenación de importaciones y mucho más. Entonces, ¿cómo complementa al analizador sintáctico? Dependiendo del proyecto, el proyecto puede decidir que algunas cosas relacionadas con la fase de análisis sintáctico estén fuera del alcance, no sean objetivos. Por ejemplo, la validación semántica u otras cosas. Y de hecho, podemos usar el analizador para complementar la fase de análisis sintáctico emitiendo nuevos diagnósticos utilizando el analizador. En Biome, por ejemplo, tenemos algunas reglas de sintaxis. Así es como las llamamos, que se emiten y se activan antes del propio, por ejemplo, el propio linting o el propio formateo. Entonces, si el code que intentas lintear tiene algunos errores de sintaxis, se emiten y la fase de linting se detiene. No podemos hacer eso. Así es como un analizador puede ayudar aún más.
Ordenación de importaciones. Las importaciones provienen en realidad del analizador de Biome. No es una regla de linting. No tiene nada que ver con el linter. Es parte de la misma infraestructura. Simplemente lo usamos de una manera diferente. Y así es como funciona. Simplemente habilitas tu IDE para llamar a la ordenación de importaciones. Y una vez que guardas, lo hace automáticamente por ti. No es necesario ningún diagnóstico ni nada por el estilo. Y aún más, el analizador en realidad sienta las bases para, por ejemplo, transpilar el code. Por ejemplo, transformar y transpilar JSX a JavaScript. Algo así como una burbuja. Y asistir. Un dato curioso, la ordenación de importaciones en realidad es una asistencia. Entonces, en el futuro, en un futuro próximo de Biome,
4. Analizador Biome: Listo para LSP y Alto Rendimiento
El analizador está listo para LSP y puede ordenar automáticamente las claves JSON, los atributos de los elementos JSX y los atributos de los objetos JS. Biome también se puede utilizar como una herramienta CLA para aplicar refactorizaciones y garantizar que las claves JSON estén ordenadas. La velocidad de Biome se demuestra en un video, donde maneja grandes bases de código con un rendimiento impresionante.
podrás ver más de este analizador. Entonces, el analizador está realmente listo para LSP. Así que, como, puedes configurarlo con un pequeño panel en tu IDE o cualquier editor que admita LSP. Podrás ver la ordenación automática de las claves JSON o los atributos de los elementos JSX o los atributos de los objetos JS. Entonces, cualquier cosa que pueda ser, como, formateada, eso es opcional. ¿De acuerdo?
Y como Biome también es una herramienta CLA, a través de la configuración, puedes imponer estas refactorizaciones y hacer que la CLI falle, si, por ejemplo, las claves JSON de un determinado archivo JSON no están ordenadas. Entonces, lo mejor de dos mundos. Y todo esto también se muestra en este video. Como, aquí puedes ver lo rápido que es Biome. Como, descargué el repositorio de webpack y el repositorio de rollup y la base de código de TypeScript de las herramientas de Rome. Y mira qué rápido es. Como, no imprimimos diagnósticos, porque imprimir diagnósticos es costoso. Pero mira, como 13,000 archivos. Incluso realmente grandes. Porque la antigua base de código de TypeScript contiene muchos archivos grandes para fines de análisis y testing. Y es increíblemente, increíblemente rápido. Entonces, como, genial DX, diría yo. Gracias.
Comments