Las placas CircuitPython basadas en RP2040 y RP2350 ya pueden ejecutar código máquina compilado al lado del Python de siempre, con una función de Adafruit llamada CircuitPython Turbo. En el benchmark que la propia Adafruit registró el 8 de septiembre de 2026, un cálculo de Mandelbrot en punto fijo bajó de 8.335,3 ms a 422,9 ms sobre una placa Metro RP2040, una mejora de 19,71 veces.
La opción de compilación se llama CIRCUITPY_LOAD_NATIVE y habilita al firmware compatible para cargar módulos .mpy nativos y Viper compilados en un computador de escritorio. Adafruit documentó el funcionamiento en su guía de CircuitPython Turbo.
Compilar afuera y copiar el módulo

Hasta ahora, usar código nativo en CircuitPython exigía que el soporte viniera construido dentro del firmware de la placa de destino. Turbo toma el camino contrario y compila en el anfitrión. El desarrollador elige la función que quiere acelerar, la compila con mpy-cross en el computador apuntando al procesador de destino y copia el módulo .mpy resultante a la placa. El firmware compatible carga ese módulo ya compilado cuando se importa, así que la placa no compila nada por su cuenta.
¿Cuánto acelera de verdad?

Adafruit corrió el mismo cálculo en tres modos sobre una Adafruit Metro RP2040, con una imagen de 160 × 120 y un máximo de 64 iteraciones por píxel. Los tres modos devolvieron el mismo valor calculado. La placa usa los núcleos Cortex-M0+ del RP2040 y el conjunto de instrucciones armv6m.
| Modo | Tiempo | Mejora sobre el bytecode |
|---|---|---|
| Bytecode de Python | 8.335,3 ms | referencia |
| Native | 4.778,0 ms | 1,74 veces |
| Viper | 422,9 ms | 19,71 veces |
Esas 19,71 veces corresponden a este cálculo de Mandelbrot y no a una aplicación completa de CircuitPython. Las tareas que leen sensores, abren archivos o refrescan una pantalla limitan la mejora total. Adafruit lo advierte en su documentación. El benchmark mide el cálculo, mientras que una aplicación real también gasta tiempo hablando con el hardware y atendiendo otras cosas.
Durante el desarrollo de Turbo se registró además una carga de trabajo más chica, con reducciones grandes de tiempo de ejecución en placas RP2040 y RP2350. Esas cifras son un benchmark aparte y no se comparan de manera directa con las de Mandelbrot.
Cuánto cuesta en flash y dónde está disponible
La opción CIRCUITPY_LOAD_NATIVE agrega entre 2,7 y 3 KB de sobrecarga de flash en las placas basadas en RP2. Viene desactivada por omisión en CircuitPython, y el port de Raspberry Pi la deja encendida para las placas RP2040 y RP2350 soportadas. También entraron cuatro placas Pimoroni RP2040 con Wi-Fi, después de que los mantenedores confirmaran que las compilaciones resultantes seguían cabiendo en el flash disponible con la cadena de herramientas GCC 15.2.1 que se usa en integración continua.
La guía de CircuitPython Turbo es explícita en que la función acelera el cómputo y no la entrada y salida. Sirve cuando la placa pasa buena parte del tiempo procesando datos, como generar efectos NeoPixel, dibujar fractales, procesar audio, filtrar lecturas de sensores o preparar cantidades grandes de píxeles. No hace más rápido un bus de sensor lento ni una conexión de pantalla lenta, y el código que rodea a la función acelerada sigue corriendo como Python común.
Turbo está disponible hoy para las placas RP2040 y RP2350 soportadas a través de las compilaciones oficiales más recientes de CircuitPython. La documentación de Adafruit manda a la última compilación continua para probarlo, en lugar de la versión estable 10.3.0. Las otras familias de hardware que corren CircuitPython, entre ellas las de Espressif, STM32 y nRF52840, necesitan trabajo específico de cada port antes de que Turbo pueda habilitarse ahí.
¿Qué necesita el desarrollador para usarlo?
Hay un requisito de cadena de herramientas. La versión de mpy-cross tiene que ser compatible con el firmware de CircuitPython que corre en la placa, y Adafruit recomienda usar una versión de mpy-cross que coincida con la versión de CircuitPython al crear los archivos .mpy. El módulo nativo compilado además tiene que apuntar a la arquitectura de procesador correcta. Un módulo compilado contra una versión de firmware o una arquitectura incompatible no va a funcionar bien.
Para una placa RP2040 o RP2350 que ya está instalada en un proyecto, esto es una actualización de software y no de hardware. La misma placa puede hacerse cargo de más cómputo sin reemplazarla, aunque la ganancia depende de si el cuello de botella de la aplicación es de verdad el cómputo en Python y no la entrada y salida o la comunicación con el hardware. Las versiones están publicadas en el repositorio de CircuitPython en GitHub.




