Este post esta basado en el siguiente sitio: https://www.haiku-os.org/blog/waddlesplash/2025-01-13-haiku_activity_contract_report_december_2024/
La noticia más grande en relación al mes pasado es la llegada de "Iceweasel" (Comadreja de Hielo), un navegador web construido a partir del código fuente de Mozilla Firefox pero sin ninguna marca registrada oficial, en el almacen (depot) de software (solo para arquitectura x86_64 por el momento), se estuvo manejando lentamente el anuncio de este nuevo navegador, en parte debido a que el navegador estaba bastante inestable al principio y tendía a causar fallas de afirmación en el kernel en las compilaciones nocturnas, pero después de 1 mes de trabajo ahora está en mucho mejor forma y es relativamente estable.
Aún hay algunas fallas de afirmación del kernel, que ocurren intermitentemente en las compilaciones nocturnas (pero no en beta5, debido a que las afirmaciones están deshabilitadas ahí; es posible tener un rendimiento sub-óptimo o una sobre reservación de memoria por los procesos del navegador web, pero los problemas que causaban las afirmaciones fallidas no deberán ser más serias que eso), y hay varios problemas en relación a características faltantes con el port mismo que aún están por resolverse (p.ej. WebRTC no esta implementado, ventanas/menus emergentes de las extensiones del navegador pueden no aceptar ninguna entrada del mouse, etc), pero estos y otros problemas estan resolviendose lentamente.
Cambios en el Manejo de Memoria
Motivados en gran parte por Iceweasel, Dedicamos una cantidad significativa de tiempo en Diciembre (Y aún lo seguimos haciendo de hecho) trabajando en varias partes con las facilidades de la administración de de memoria virtual del kernel. Muchos de estos cambios están dirigidos a corregir problemas expuestos o sugeridos para investigar asuntos en Iceweasel y otras pruebas intensivas de gestión de memoria, tales como el colector de basura Boehm.
Los cambios en esta área son probablemente demasiados (docenas) y demasiados técnicos para detallarlos razonablemente aquí (así que verifique las bitácoras de consolidación si está particularmente interesado), pero entre ellas están: optimizaciones a escrituras en lote de páginas en algunos casos, más verificaciones de seguridad en el área de la lógica de redimensionamiento, eliminación de campos obsoletos y comentarios, muchas correcciones en el comportamiento de la reservación de memoria (especialmente en áreas con protección por página), más pruebas de casos de uso en la suite de pruebas para casos específicos, mejor manejo del reporteo de memoria disponible inicialmente, corrigiendo algunos bloqueos suaves que pueden ocurrir en condiciones de poca memoria, correcciones para el soporte de memoria de intercambio, la aplicación de más restricciones de protección, mayor consolidación de código de desmapeo para archivos por arquitectura dentrdo de archivos independientes de la arquitectura, y mucho más.
Aplicaciones
nipos contribuyó con una corrección a los fondos para ignorar las gotas de color si el selector de color esta deshabilitado.
apl realizó algo de refactoraje significativo para los modelos de datos de HaikuDepot para preparar el camino para mejoras futuras. Él también ajustó la lógica alrededor de la instalación de paquetes para reportar un estado "pendig" (pendiente) más rápidamente, y ocultar la UI de calificación cuando un paquete no puede ser calificado por cualquier razón.
PulkoMandy mejoró la Corteza "LogginCustomer", un nodo de medios que registra detalles sobre cualquier buffer de medios que fuera enviado, para reportar más detalles.
jscipione agregó de regreso el espaciado al final de la ventana principal del Expansor. El también hizo algunas mejoras en la vista de selección de tipos de letra en las preferencias de apariencia, y nephele borró algunos códigos muertos de ellos también.
jscipione hizo una cantidad de arreglos en "Tracker" al comportamiento de la tecla "Escape" para corregirlo en paneles de archivo cuando el "typeahead filtering" (Filtrado de tecleo por adelantado) está activado, y limpió el despliegue de "selections" en la ventana Find (buscar). El realizó una cantidad de limpieza en el estilo de códificación también.
waddlesplash hizo un número de limpiezas al despliegue de informació de la batería en "PoweStatus", haciendo que su despliegue sea más intuitivo y fácil de indicar en un vistazo que es lo que está ocurriendo cuando se ve la barra del escritorio.
nephele hizo un número de mejoras en la ventana de la bitácora de error en mail_daemon, tales como soportar el modo oscuro y mejorar las proporciones de la barra de desplazamiento.
jackburton79 corrigió un fuga potencial de memoria en caso de error y agregó algunos valores correctos por defecto de inicialización para "Terminal".
humdinger hizo que "Sound preferences" (preferencias de sonido) recuerde la ubicación del panel de archivo, y que muestren sólo los archivos y no las carpetas en los menús. También agregó un mecanismo para previsualizar archivos de sonido en el panel de archivos, y limpió unos cuantos de los nombres de notificaciones de sonido.
Herramientas de línea de comando
waddlesplash (con algo de ayuda de madmax) implementó pkgman search -i --not-required, un modo que muestra solamente paquetes instalados que no son requeridos por ningún otro paquete instalado (p.ej. paquetes “leaf” (hojas de la rama)).
kallisti5 ajustó el comando route para aceptar una dirección de red vacía que significa "por defecto", la cual usa OpenVPN para configurar la ruta por defecto.
Kits
waddlesplash ajustó BTimedEventQueue (usada por toda salida de audio y otras operaciones de medios en Haiku) para limpiar apropiadamente eventos en destrucción, y unas cuantas mejoras menores.
waddlesplash ajustó el nombrado de la nueva enumeración en input_pointing_device_subtype, el cual es usado para reportar que tipo de dispositivo generó los eventos apuntador de entrada.
PulkoMandy implementó frecuencias de baudios personalizables para la salida serial desde las APIs POSIX todo el camino hacia abajo hasta llegar a el controlador USB serial.
nipos mejoró la legibilidad de las etiquetas de texto en el display de control de medios.
Servidores
X512 contribuyó con cambios para botar la "2D acceleration" (aceleración 2D) heredada y la lógica de batched-buffer-copies (copias de buffer por lotes) desde "app_server". Ésta no fué activada (ni siquiera compilada) por muchos años; es obsoleta incluso para el hardware más antiguo que soportó estas características (al parecer las rutinas de CPU que hacen los mismo son más rápidas la mayor parte del tiempo de cualquier forma), y gráficas aceleradoras 2D “modernas” van a traves de tuberías 3D, de tal forma que si "app_server" alguna vez tuviera ese código no tendría prácticamente ninguna ganancia de ello de todas formas.
jscipione volvió a hacer que el tamaño del panel de notificación estuviera apropiadamente al tanto de del tamaño de letra. Él ajustó también los iconos de notificación en varios servidores también.
Controladores
korli corrigió algunos problemas con el manejor de número de cola en el controlador de bus virtio-pci, corrigiendo un número de problemas intermitentes con los dispositivos virtio (ellos fallaban algunas veces al inicializar, entro otros problemas.)
waddlesplash sincronizó el controlador realtekwifi y la pila WiFi con los de FreeBSD actualizados trayendo un número de correcciones de bugs y otras mejoras. El también se encargo de modificar las banderas del compilador para eliminar el código que mas se dejó de utilizar o que ya no se necesita en tiempo de compilación.
waddlesplash restauró el uso de memoria "no cacheada" para el módulo ACPI en x86(_64) por defecto, corrigiendo errores de arranque en unos cuantos dispositivos.
mtl1979 contributó con verificaciones al controlador de "usb_disk" para que devuelva errores inmediatamente en lugar de tratar de leer o escribir si se presentaba un estatus de "no hay medios presentes".
Lt-Henry agregó un nuevo ID de dispositivo al controlador de los gráficos Intel modesetting.
PulkoMandy corrigió algunas advertencias de compilador y habilitó " -Werror " en varios controladores. El también agregó más verificación de error al controlador PS/2, para permitir que se eviten tiempos de expiración largos en alguno otro
caso.
waddlesplash corrigió una condición de carrera en la lógica de petición de notificación del administrador de bus SCSI (relativamente nuevo), y agregó algunas banderas para asegurarse de que no se espere por memoria en la ruta crítica.
PulkoMandy habilitó parches del BIOS VESA (para inyectar más modos de video) por defecto en hardware donde se sabe que funciona.
waddlesplash corrigió una fuga de memoria en la pila de red cuando sockets "raw" estaban cerrados, y agregó un ASSERT que pudo haber evitado el problema.
Sistemas de Archivo
Jim906 contribuyó a corregir la lógica del sistema de cacheo de entrada (entry-caching logic) del sistema de archivos FAT:
previamente, múltiples instancias del mismo nombre de archivo con diferentes carcasas podrían terminar en el caché de entrada cuando el archivo no este presente, pero que estos no fueran limpiados apropiadamente cuando un archivo con uno de esos casos fue creado. Ahora, tales entradas incorrectamente "faltantes" ya no son creadas en absoluto, corrigiendo algunos casos aislados alrededor del copiado de archivo en "Tracker" y permitiendo que algún código específico de FAT fuera borrado.
waddlesplash movió el manejo de open(O_RDONLY | O_TRUNC) de "filesystems" dentro de VFS. y cambió su comportamiento para devolver un error en lugar de truncar el archivo. Lo que estas banderas especificadas hacen es "no definido" en POSIX, pero la página de manual de Linux siniestramente dice: "En muchos sistemas el archivo actualmente es truncado", y en Linux en efecto, usando este modo abierto realmente trunca el archivo la mayor parte del tiempo! Ese es un resultado realmente sorprendente, y no parece haber mucha razón para soportarlo, así que ahora Haiku lo que hace correctamente es negarse a hacer nada en este caso.
waddlesplash ajustó el parseador de consultar del sistema de archivos para que no intente leer el tamaño de la llave en índices inválidos en un caso aislado.
waddlesplash ajustó el registro de bitácora del sistema de archivos durante el escaneo y montado de disco solo para imprimir errores cuando un disco al menos parcialmente se ve como un sistema de archivos particular pero inválido, en
lugar de imprimir un montón de mensajes de error ruidosos por cada identificación fallida. El también limpió algo de código relativo a inicializar sisemas de archivos, y corrigió la lógica alrededor de la inicialización de discos NTFS.
Jim906 corrigió file_cache_read (lectura de caché de archivo) bajo userlandfs; previamente este podía devolver errores cuando se alcanzaba el final de los archivos en vez de manejarlos correctamente.
waddlesplash agregó asignación desde buffers limpios para sistemas de cache de memoria de packagefs, evitando asignaciones y desasignaciones frecuentes de buffers de memoria temporales.
libroot & kernel
waddlesplash agregó una llamada faltante a un método base en la clase FileDiskDevice (usada para manejar archivos registrados como discos virtuales), corrigiendo una filtración de descriptor de archivo. El también limpió el estilo de código un poco y corrigió algunos pendientes por hacer menores mientras lo realizaba.
waddlesplash limpió algo de código en las rutinas “synchronous I/O” (E/S síncronas) en el kernel (las cuales son usadas cuando "asynchronous I/O" (E/S asíncronas) no son posibles en el nivel más bajo), y corrigió una verificación de afirmación cuando se usan archivos como dispositivos de disco.
waddlesplash corrigió un bug en la lógica que manejaba la apertura de ligas simbólicas a archivos inexistentes con O_CREAT en el VFS, el también agregó un caso de prueba para esto en otro problema relacionado.
waddlesplash corrigió algunos bugs menores en el “scheduling recorder” (registrador de programación) (subsistema del kernel que registra cuando hilos de proceso son programados/desprogramados, para análisis de rendimiento) y “DebugAnalyzer” (la app de Interfase Gráfica de Usuario (GUI) que analiza tales reportes).
waddlesplash corrigió un problema de orden de desbloqueo en gancho de bajos recursos VFS que ocasionalmente causó pánicos de kernel durante alto uso de memoria.
waddlesplash eliminó los métodos *rand48_r de stdlib.h. Ellos son mantenidos en libroot para compatibilidad ABI, pero como son extensiones no estándares proporcionadas solo por glibc (ni siquiera los BSDs las tienen), nosotros no necesitamos exportarlas en los encabezados públicos nunca más.
waddlesplash renombró la primitiva "MoveFrom" en "LinkedList" del kernel que en su lugar se llame "TakeFrom". Este no tiene "semánticas move (mover)", pero en su lugar anexa el contenido de otra lista dentro de la lista actual, así que se debería evitar usar la palabra "move" (mover) en tales casos para evitar confusión.
waddlesplash ajustó vfork() para que no llame a ningunos ganchos forks. (Nosotros no implementamos un vfork "verdadero", pero pudemos al menos hacer la mayoría de las cosas que el fork hace en el, y que ahora hacemos nosotros.)
korli implementó pthread_getcpuclockid, el cual recupera el ID del reloj de tiempo del CPU para un hilo específico en vez de un proceso completo.
waddlesplash habilitó más advertencias relativas a printf para el código del cargador de arranque.
Anarchos contribuyó un cambio para incrementar el tamáño de la región de memoria usada para descomprimir el archivo tar de arranque, el cual es usado cuando se arranca desde ciertos tipos de medios (como dispositivos de red).
Compilación del sistema
waddlesplash agregó algunas verificaciones de coherencia en las reglas de compilación del núcleo para evitar ajustes de ConfigVars sin ningún valor, y también elimina el @profile desde JAM_TARGETS para evitar advertencias/errores espurios posteriormente.
kallisti5 agregó el manejor para HOST_CPUs ARM y RISC-V en las reglas de compilación del núcleo.
Documentación
OscarL corrigió errores de tecla en la documentación de “Introduction to the launch_daemon” (Introducción al launch_daemon).
jscipione agregó documentación para BTextView :{GetFontAndColor,SetFontAndColor}.
cafeina contribuyó con documentación para BShelf y BGameSound.
Y eso es todo amigos!
Gracias de nuevo a todos los que contribuyeron a Haiku, y especialmente a aquellos que donaron para hacer mi contrato posible!
Haiku, Inc. logró reunir cerca de $30,000 USD de donaciones en 2024; si logramos obtener esa misma cantidad este año, seré capaz de dedicar más tiempo a Haiku sin agotar los fondos de la Compañía demasiado rápido.
Bueno, les deseo lo mejor para todos ustedes! Nos leemos en el próximo post explorando los límites del software open source en el mundo real.
@cosmicboy123 fuera!
Si lo deseas puedes votar por mi como witness para poder aumentar las capacidades de un servidor.
Integrate al grupo de Telegram de @team-mexico 😀 donde yo y otros usuarios de México y de otros países de habla hispana compartimos experiencias y opiniones así como nuestros propios posts. Una gran iniciativa de @cristo
| 👉Entra a https://t.me/TeamMexico1 👈 |
¡En @team-mexico estamos agradecidos que formes parte de nosotros!
Contenido votado con cariño. ❤️
Recuerda que puedes publicar en nuestra comunidad
Vota al witness @cosmicboy123
** Your post has been upvoted (1.63 %) **
Curation Trail is Open!
Join Trail Here
Delegate more BP for bigger Upvote + Daily BLURT 😉
Delegate BP Here
Upvote
https://blurtblock.herokuapp.com/blurt/upvote
Thank you 🙂 @tomoyan
Congratulations, your post has been upvoted by @dsc-r2cornell, which is the curating account for @R2cornell's Discord Community.
Enhorabuena, su "post" ha sido "up-voted" por @dsc-r2cornell, que es la "cuenta curating" de la Comunidad de la Discordia de @R2cornell.