Un repaso de la integración del Espressif Installation Manager (EIM) en la extensión ESP-IDF para VS Code, más todas las mejoras importantes en las versiones v1.10.x, v1.11.x, v2.0.2 y v2.1.0.

Este artículo cubre los lanzamientos v1.10.0, v1.10.1, v1.11.0, v1.11.1, v2.0.2 y v2.1.0 de la extensión ESP-IDF para VS Code.

La novedad mayor a lo largo de estos lanzamientos es la integración del Espressif Installation Manager (EIM), una herramienta independiente que reemplaza al asistente de configuración embebido en la extensión y unifica cómo se instala ESP-IDF en todos los entornos. Junto con eso, la extensión sumó capacidades de depuración más profundas, flujos de trabajo asistidos por IA, una renovación de la UI y varias mejoras de experiencia para desarrolladores.

Integración con EIM

Si todavía no leíste el artículo dedicado al lanzamiento de EIM, recomendamos partir por ahí: ESP-IDF Installation Manager v0.8.

EIM es una herramienta multiplataforma autónoma, disponible vía winget, brew, apt, dnf o descarga binaria directa, que gestiona instalaciones de ESP-IDF de manera uniforme sin importar qué herramienta haya iniciado la instalación. Una vez que EIM instala ESP-IDF, cualquier herramienta que entienda el manifiesto eim_idf.json (la extensión de VS Code incluida) puede descubrir y usar esas instalaciones automáticamente, sin configurar paths a mano.

Para instalar ESP-IDF, abrí la Command Palette y ejecutá:

Código
ESP-IDF: Open ESP-IDF Installation Manager

Según el entorno, EIM se abrirá de dos maneras:

  • Interfaz gráfica (GUI): en una máquina de escritorio, EIM se abre como ventana independiente que guía paso a paso la selección e instalación de una versión de ESP-IDF, sin línea de comandos.
  • Asistente de terminal: en sesiones SSH, Dev Containers, Codespaces, WSL y otros contextos sin GUI, la extensión cae automáticamente en un programa interactivo de consola que recorre los mismos pasos.

Una vez instalado ESP-IDF, la extensión lee el archivo eim_idf.json que produce EIM y descubre todas las versiones instaladas automáticamente.

Asistente EIM en terminal
Asistente EIM en terminal

Para alternar entre múltiples versiones instaladas de ESP-IDF se usa:

Código
ESP-IDF: Select Current ESP-IDF Version

La versión seleccionada queda guardada en el estado del workspace como idf.currentSetup, y todas las variables de entorno necesarias se configuran automáticamente.

Compatibilidad hacia atrás: las configuraciones existentes que usan variables de entorno en idf.customExtraVars siguen funcionando. La extensión las prioriza sobre cualquier setup gestionado por EIM cuando están presentes.

Qué se removió en v2.0.2

Esta versión hizo una limpieza importante de superficie heredada:

  • Asistente de configuración antiguo (ESP-IDF: Configure ESP-IDF extension): reemplazado por EIM.
  • Settings idf.espIdfPath e idf.toolsPath: reemplazados por variables de entorno derivadas del setup EIM seleccionado.
  • Adaptador de debug antiguo: reemplazado por el Eclipse CDT Debug Adapter, agregado en v1.8.0.
  • Integraciones de ESP-MDF, ESP-Matter y ESP-HomeKit: estos frameworks ahora están disponibles en el ESP Component Registry, accesible directamente desde la extensión. El soporte para ESP-ADF se mantiene.
  • El comando ESP-IDF: Show Examples fue removido a favor de ESP-IDF: New Project, que ahora ofrece un superconjunto de su funcionalidad con mejores opciones de personalización.

¿Qué trae v2.1.0 además de EIM?

Settings categorizados

Los ajustes de la extensión fueron reorganizados en categorías más claras dentro de la UI de Settings de VS Code. En lugar de presentar opciones relacionadas con ESP-IDF como una lista plana extensa, ahora están agrupadas con lógica, lo que facilita encontrar la opción correcta al configurar build, flash, debug, herramientas o instalación.

Categorías nuevas en la UI de Settings
Categorías nuevas en la UI de Settings

Reinicio automático del servidor Clang tras cambios de build

La extensión ahora reinicia el servidor de lenguaje Clang cuando compile_commands.json cambia. Antes de esta actualización, IntelliSense y la navegación de código podían quedar desactualizadas tras un build o reconfiguración a menos que se reiniciara el servidor manualmente. Con v2.1.0, la extensión mantiene el análisis de proyecto basado en Clang sincronizado de forma automática.

Mejoras varias

Para usuarios de ESP32-P4, las sesiones de debug ahora exponen registros PIE, completando la inspección de bajo nivel en ese chip. v2.1.0 también incluye fixes prácticos: mejor activación para instalaciones de VS Code vía Snap, resolución correcta del path de sdkconfig, uso adecuado de variables definidas en idf.customExtraVars, y mejor compatibilidad de shell al usar sh en scripts de activación y la IDF Terminal en entornos Linux.

Lo destacado de v1.11.0 y v1.11.1

Integración con GitHub Copilot Chat

v1.11.0 introdujo una integración de Language Tool API para GitHub Copilot Chat. Cuando se usa Copilot Chat en un proyecto con la extensión ESP-IDF activa, gana contexto específico de ESP-IDF como la versión IDF, el chip objetivo y la configuración del proyecto, lo que permite sugerencias más precisas para tareas de desarrollo embebido. Más allá de responder preguntas, Copilot Chat también puede invocar comandos de la extensión directamente, por ejemplo pidiéndole que limpie la carpeta de build y dispare un rebuild sin salir del chat.

Soporte para DevKits

Una funcionalidad muy pedida: la extensión ahora tiene soporte explícito para DevKits. Al seleccionar el chip y la placa objetivo, la extensión reconoce kits de desarrollo oficiales de Espressif y aplica defaults específicos de placa, reduciendo la configuración manual al iniciar un proyecto sobre una placa conocida.

Set Espressif Device Target con opciones de DevKit
Set Espressif Device Target con opciones de DevKit

Menuconfig clásico en el editor

El SDK Configuration Editor ahora incluye una vista de Menuconfig clásico embebida directamente en VS Code, junto con el editor gráfico existente. Esto da a los desarrolladores que prefieren la navegación tipo terminal de idf.py menuconfig una experiencia familiar sin salir del IDE, accesible vía el comando ESP-IDF: Open Classic Menuconfig Terminal.

Vista de Menuconfig clásico en VS Code
Vista de Menuconfig clásico en VS Code

UI nativa de VS Code

Todas las webviews de la extensión fueron actualizadas para usar el toolkit de UI nativo de VS Code, haciendo que paneles como el New Project Wizard, el SDK Configuration Editor y otros se sientan consistentes con el resto del IDE y respeten el color theme, sea claro, oscuro o personalizado.

Unity Test Runner y otras mejoras

v1.11.0 reemplazó el test runner basado en Pytest por un Unity Test Runner y Parser dedicado, construido específicamente para tests unitarios de ESP-IDF. Unity es el framework estándar usado en ESP-IDF, y esta integración nativa entrega descubrimiento, ejecución y parseo de resultados precisos dentro del Test Explorer de VS Code. La versión también incorpora detección automática del puerto serial vía esptool.py, hints de OpenOCD en el panel de Hints Viewer, y nombres de funciones en la vista de Disassembly.

¿Qué cambia en la práctica para el desarrollador embebido?

Para quien parte de cero, la diferencia operativa es clara: con EIM ya no se navega un asistente embebido en VS Code, sino que se instala una herramienta independiente que cualquier IDE futuro podrá usar. Para proyectos en LATAM con DevKits importados (un ESP32-S3-DevKitC-1 ronda los 25.000 pesos chilenos en distribuidores como Olimex y MercadoLibre), el soporte de DevKits aplica defaults sin tener que adivinar pines o configuración de flash. Y la integración con Copilot Chat baja la barrera para quien recién aprende, al darle al asistente contexto real del proyecto en vez de respuestas genéricas.

Tres datos concretos que importan: la extensión es gratuita y multiplataforma (Windows, macOS, Linux), EIM se distribuye por canales nativos del sistema operativo (winget, brew, apt, dnf), y los archivos de manifiesto eim_idf.json son interoperables, lo que significa que una misma instalación de ESP-IDF puede usarse desde la extensión, desde la línea de comandos y desde otros IDEs que adopten el estándar.