v4.8.11¶
v4.8.11 es una versión de estabilidad y corrección centrada en la robustez en macOS, la serialización de herramientas externas y la fiabilidad de las actualizaciones de firmware. Está construida sobre Qt Creator 14.0.2 (sin cambios respecto a la versión anterior) y no contiene cambios incompatibles para los proyectos de usuario.
Aspectos destacados¶
Refuerzo frente a fallos en macOS — se eliminó un aborto silencioso e intermitente de
NSRangeExceptioncausado por actualizar las selecciones de árboles, listas o combos antes de que un panel o ventana emergente estuviera completamente construido o durante una actualización asíncrona, en el combo de esquema, la jerarquía de llamadas/tipos, las ventanas emergentes de autocompletado y del localizador, el árbol de proyectos y más.Herramientas externas serializadas — el diálogo de progreso del cargador ahora es modal a nivel de aplicación y suspende todo el sondeo de dispositivos, de modo que la ejecución de dfu-util, bossac, picotool y las demás herramientas ya no puede ser reentrada por el flujo de la cámara o la reconexión automática.
Actualizaciones de firmware fiables — la reconexión automática ya no puede secuestrar una actualización de firmware a mitad del flasheo, lo que antes descartaba la continuación real y mostraba un diálogo de DFU erróneo.
Seguridad de Hello World — conectar una placa ya no sobrescribe ocasionalmente un programa Hello World que hayas estado escribiendo, al comparar contra una captura prístina en lugar del poco fiable indicador de modificación.
Errores de DFU más claros — el error de «no matching interface» ahora nombra la placa detectada y los nombres de archivo de firmware que acepta, en lugar de mostrar un VID/PID en bruto.
Nuevas funciones¶
ST Edge AI (STM32N6) ahora produce el binario de red reubicable directamente mediante el modo
--relocatabledel compilador, eliminando el paso de reubicación de Python independiente y el campo adicional Relocation CLI Options del diálogo (7613135c5).
Otros cambios y mejoras¶
Los errores de interfaz de DFU ahora nombran la placa detectada y enumeran los nombres de archivo de firmware que esa placa acepta, con orientación para renombrar o elegir el archivo correcto, en lugar de mostrar un VID/PID en bruto (ac509b369).
Los atajos de navegación entre pestañas en macOS ahora usan los accesibles
Cmd+Shift+[/Cmd+Shift+](anterior/siguiente) yCmd+Alt+[/Cmd+Alt+](mover) en lugar de los inutilizablesCtrl+PageUp/Ctrl+PageDown; las asignaciones de Windows y Linux no cambian (6c09e10b1).Las solicitudes de licencia/placa a
upload.openmv.io(check.php,insert.php,register.php) ahora envían unUser-Agentde estilo navegador específico por plataforma para que el servidor de licencias pueda identificar el sistema operativo del cliente (6bfd74b36).
Correcciones de errores¶
Se corrigió un fallo intermitente en macOS (un aborto silencioso de
NSRangeExceptionsin diálogo de fallo) donde actualizar las selecciones de árboles, listas o combos mientras un panel o ventana emergente seguía oculto o en plena actualización asíncrona indexaba en una caché de accesibilidad de Cocoa aún no construida. La selección, el desplazamiento y la expansión ahora se aplazan o se protegen en el combo de esquema, la jerarquía de llamadas/tipos, la ventana emergente de autocompletado de código, la ventana emergente del localizador, el diálogo Save Items, el árbol de proyectos, la navegación de carpetas, Open Documents, la lista Issues/Tasks y el combobox de vista de árbol (94c8f9def, ae40a3806, ed23b5c60, c6baf89cd, d7b6f5838, d8b70609c, 21740d9c2, 9217fc8a9, fe75924d5, 9cc247ffb, 3ca71e915, 559b6005f).Se corrigió un fallo independiente en macOS (
NSRangeException/SIGABRT) en el combobox de esquema de código causado por un índice obsoleto fuera de rango cuando el servidor de lenguaje de Python actualizaba los símbolos de forma asíncrona;setCurrentIndexahora revalida los límites de fila/columna contra el modelo en vivo (3e0ce89f1).Se reforzaron el editor de modelos ROMFS y el editor de conjuntos de datos frente a condiciones de carrera asíncronas de
QFileSystemModelal aplazar la preexpansión del árbol hasta que el directorio termina de cargarse y seleccionar solo los archivos/carpetas/modelos recién creados una vez que el modelo tiene un índice válido para ellos (5eaa91aff).Las operaciones de herramientas externas (dfu-util, bossac, picotool, alif, imx, ST Cube, mpy-cross, vela, ST Edge AI, conversión de vídeo) ya no permiten que el flujo de la cámara o el trabajo en cola reentren en una operación de dispositivo detrás de la herramienta en ejecución: el diálogo de progreso del cargador ahora es modal a nivel de aplicación y el sondeo de dispositivos se suspende por completo mientras se muestra (3069e8ec0).
La reconexión automática ya no secuestra una actualización de firmware a mitad del flasheo gracias a un indicador persistente de actualización-de-firmware-en-curso que permanece activo durante toda la operación forzada/de gestor de arranque/de borrado y que el temporizador de reconexión ahora también comprueba (b7745484a).
Conectar una placa ya no sobrescribe ocasionalmente un programa Hello World que hayas estado escribiendo, al comparar el documento en vivo contra una captura prístina tomada en el momento de abrir, en lugar de basarse en el poco fiable indicador de modificación antes de sincronizar automáticamente el ejemplo por sensor (6f4539d44).
Desplazarse hacia arriba en el terminal serie durante una salida continua rápida ya no devuelve la vista de golpe hacia abajo: las rutas de anexado ahora siguen el indicador persistente de intención de desplazamiento del usuario en lugar de volver a deducir «al final» a partir de una posición de la barra de desplazamiento que cada fragmento acababa de reanclar (9aea0f1a2).
Escapeahora cierra de forma fiable el diálogo Code Profiler independientemente de qué widget hijo tenga el foco (203ffd1e6).En macOS, los atajos de teclado de menús y comandos globales ahora funcionan en toda la aplicación en lugar de solo cuando el editor tenía el foco, al anidar la barra de menús oculta en la ventana principal en todas las plataformas (6d52cbe73).
El intérprete de Python incluido ahora se fuerza como predeterminado en cada inicio, de modo que un predeterminado persistido obsoleto ya no deshabilita silenciosamente el servidor de lenguaje de Python (autocompletado y sugerencias de llamadas) (1d5069a52).
Se reforzó la E/S de la configuración de OpenMV frente a la reentrancia:
beginGroup/endGroupsobre el objeto de configuración global compartido (que generan diálogos modales y ejecutan bucles de eventos anidados) se reemplazaron por rutas de clave completas, de modo que un acceso reentrante a la configuración durante un diálogo modal ya no puede archivar mal las claves bajo el grupo equivocado. Las rutas en disco son idénticas byte a byte, por lo que la configuración de los usuarios existentes se conserva exactamente (91e78a9e3, f4bb9f48c).Se corrigió una regresión donde varios diálogos y ayudantes que reciben el objeto de configuración compartido hacían E/S de clave sin prefijo en la raíz de la configuración en lugar de bajo
OpenMV/, perdiendo la geometría de ventana, el divisor y el estado de expansión del model zoo y el estado de los seis diálogos de cargador (dfu-util, imx, bossac, alif, picotool y ST Cube Programmer) junto con las opciones de los compiladores mpy-cross, vela y ST Edge AI; el grupo ahora se integra en cada clave para que se use la ruta correcta (258448bdf).
Soporte de plataformas y herramientas¶
Base de Qt Creator: 14.0.2.
OpenMV IDE actualizado a la versión 4.8.11.
Cambios incompatibles¶
Ninguno. Todos los cambios son correcciones de errores y mejoras superpuestas sobre la base existente de Qt Creator 14.0.2; los proyectos y flujos de trabajo existentes no se ven afectados.