¿Qué hay dentro del Linter de Biome?

Rate this content
Bookmark

Con Emanuele, el mantenedor principal de Biome, exploraremos los entresijos del analizador de Biome, que impulsa su linter. Aprenderás cómo se crean las reglas de lint, qué herramientas puede proporcionar el analizador y cómo usarlas.

This talk has been presented at JSNation 2024, check out the latest edition of this JavaScript Conference.

Emanuele Stoppa
Emanuele Stoppa
10 min
17 Jun, 2024

Comments

Sign in or register to post your comment.
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.
Available in English: What's Inside Biome's Linter?

1. Introducción al Analizador Biome

Short description:

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

Short description:

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.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Rome, ¡una cadena de herramientas moderna!
JSNation 2023JSNation 2023
31 min
Rome, ¡una cadena de herramientas moderna!
Top Content
Rome is a toolchain built in Rust that aims to replace multiple tools and provide high-quality diagnostics for code maintenance. It simplifies tool interactions by performing all operations once, generating a shared structure for all tools. Rome offers a customizable format experience with a stable formatter and a linter with over 150 rules. It integrates with VCS and VLSP, supports error-resilient parsing, and has exciting plans for the future, including the ability to create JavaScript plugins. Rome aims to be a top-notch toolchain and welcomes community input to improve its work.
Conquistando la Complejidad: Refactorizando Proyectos JavaScript
JSNation 2024JSNation 2024
21 min
Conquistando la Complejidad: Refactorizando Proyectos JavaScript
Today's Talk explores the complexity in code and its impact. It discusses different methods of measuring complexity, such as cyclomatic complexity and cognitive complexity. The importance of understanding and conquering complexity is emphasized, with a demo showcasing complexity in a codebase. The Talk also delves into the need for change and the role of refactoring in dealing with complexity. Tips and techniques for refactoring are shared, including the use of language features and tools to simplify code. Overall, the Talk provides insights into managing and reducing complexity in software development.
Mejorando la Felicidad del Desarrollador con IA
React Summit 2023React Summit 2023
29 min
Mejorando la Felicidad del Desarrollador con IA
GitHub Copilot is an auto-completion tool that provides suggestions based on context. Research has shown that developers using Copilot feel less frustrated, spend less time searching externally, and experience less mental effort on repetitive tasks. Copilot can generate code for various tasks, including adding modals, testing, and refactoring. It is a useful tool for improving productivity and saving time, especially for junior developers and those working in unfamiliar domains. Security concerns have been addressed with optional data sharing and different versions for individuals and businesses.
Análisis estático en JavaScript: Lo fácil y lo difícil
JSNation 2023JSNation 2023
23 min
Análisis estático en JavaScript: Lo fácil y lo difícil
Static analysis in JavaScript involves analyzing source code without executing it, producing metrics, problems, or warnings. Data flow analysis aims to determine the values of data in a program. Rule implementation in JavaScript can be straightforward or require extensive consideration of various cases and parameters. JavaScript's dynamic nature and uncertainty make static analysis challenging, but it can greatly improve code quality.
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
JSNation 2024JSNation 2024
20 min
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
The Talk discusses browser automation using the Worker's Browser Rendering API, which allows tasks like navigating websites, taking screenshots, and creating PDFs. Cloudflare integrated Puppeteer with their workers to automate browser tasks, and their browser rendering API combines remote browser isolation with Puppeteer. Use cases for the API include taking screenshots, generating PDFs, automating web applications, and gathering performance metrics. The Talk also covers extending sessions and performance metrics using Durable Objects. Thank you for attending!

Workshops on related topic

Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
JSNation 2023JSNation 2023
44 min
Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
WorkshopFree
Ryan Albrecht
Ryan Albrecht
¿Conoces ese molesto error? ¿El que no aparece localmente? Y no importa cuántas veces intentes recrear el entorno, no puedes reproducirlo. Has revisado las migas de pan, leído la traza de pila y ahora estás jugando al detective para unir los tickets de soporte y asegurarte de que sea real.
Únete al desarrollador de Sentry, Ryan Albrecht, en esta charla para aprender cómo los desarrolladores pueden utilizar la Reproducción de Sesiones, una herramienta que proporciona reproducciones de video de las interacciones de los usuarios, para identificar, reproducir y resolver errores y problemas de rendimiento más rápido (sin golpear tu cabeza contra el teclado).