Category: Desarrollo

Guix Construye con Éxito un Mono Totalmente Autoarrancable: Un Largo Camino

2024-12-31

El sistema Guix ha construido con éxito un entorno Mono totalmente autoarrancable, superando numerosos desafíos en el proceso. El autor detalla su viaje para admitir características de C# 12.0, encontrando problemas con versiones anteriores de Mono que dependían de binarios precompilados. A través de una serie de parches, se creó una cadena totalmente autoarrancable desde Mono 1.2.6 hasta 6.12.0. En el camino, se corrigieron errores en Mono y xbuild, y se mejoró el soporte de runpath en Mono. Esto no solo solucionó el problema de compatibilidad de C# del autor, sino que también destacó la importancia de las compilaciones totalmente autoarrancables y reproducibles y su impacto en la seguridad del software.

Tema Monokai Pro: para IDEs de JetBrains y más

2024-12-31
Tema Monokai Pro: para IDEs de JetBrains y más

Monokai Pro es un plugin de tema disponible para IDEs de JetBrains (como IntelliJ IDEA, WebStorm, etc.), Sublime Text y VS Code. Cuenta con más de 70 iconos personalizados y ofrece ajustes configurables para una personalización completa. Hay una versión de prueba gratuita disponible, pero una suscripción mensual de €1 elimina las ventanas emergentes. Compatible con numerosos lenguajes de programación e IDEs, es una opción popular entre los ingenieros de software.

Desarrollo

Mozilla lanza Orbit, una herramienta de IA centrada en la privacidad

2024-12-31

Mozilla ha lanzado Orbit, una extensión para Firefox que utiliza IA para resumir contenido web como correos electrónicos, documentos, artículos y vídeos, priorizando la privacidad del usuario. Orbit no requiere la creación de una cuenta, no almacena datos de sesión ni información personal, y utiliza un modelo Mistral 7B LLM alojado por Mozilla. Los usuarios pueden resumir fácilmente documentos y vídeos largos, captar rápidamente la esencia de correos electrónicos y artículos, y obtener información específica a través de preguntas.

Convirtiendo Hojas de Cálculo de Google en Aplicaciones Web Prácticas: La Historia de un Programador

2024-12-31
Convirtiendo Hojas de Cálculo de Google en Aplicaciones Web Prácticas: La Historia de un Programador

Un reportero de Ars Technica comparte su experiencia transformando sencillas hojas de cálculo de Google en aplicaciones web fáciles de usar en el móvil con Glide. Inicialmente creada para agilizar los pedidos de comida a domicilio, la aplicación gestiona información de restaurantes locales con eficientes funciones de búsqueda y filtrado. Posteriormente, desarrolló aplicaciones para recetas e inventario de despensa, mejorando su vida diaria. El artículo muestra el poder de las herramientas sin código y cómo soluciones sencillas pueden resolver problemas reales, destacando el ingenio y la búsqueda de una mejor calidad de vida.

Riesgo de colisión SHA en el commit inicial del kernel de Linux

2024-12-31

Kees Cook, desarrollador del kernel de Linux, descubrió un commit de documentación del kernel cuyo ID comparte los 12 primeros caracteres con el commit inicial del repositorio del kernel. Esta posible colisión podría romper varias herramientas que dependen de IDs de commit únicos. Aunque todavía no se ha fusionado en el upstream, este commit sirve como caso de prueba para abordar proactivamente las colisiones SHA y prevenir problemas generalizados futuros.

Desarrollo Colisión SHA

Lightstorm: Un Compilador Ruby Minimalista Aumenta el Rendimiento con MLIR

2024-12-31

El equipo DragonRuby desarrolló Lightstorm, un compilador Ruby minimalista destinado a mejorar el rendimiento de su motor de juego multiplataforma. Utilizando MLIR, Lightstorm traduce el bytecode de la máquina virtual mruby a código C, optimizando el rendimiento al eliminar las operaciones de carga/almacenamiento y las ramas en el bucle del intérprete de la VM. Los resultados de referencia muestran mejoras de rendimiento que van del 1% al 1200%, con una reducción media de aproximadamente el 30% en el tiempo de ejecución y los ciclos. Si bien actualmente solo admite un subconjunto de Ruby, el proyecto valida la viabilidad de la precompilación de código Ruby para obtener ganancias de rendimiento. Los planes futuros incluyen reemplazar los componentes C críticos del motor con código Ruby compilado.

Desarrollo

Lanzamiento de LineageOS 22.1: Extracción 30 veces más rápida, nuevas aplicaciones de música y PDF

2024-12-31

LineageOS 22.1, basado en Android 15 QPR1, ya está disponible con mejoras significativas. Las utilidades de extracción son 30 veces más rápidas, y se han añadido dos nuevas aplicaciones: Twelve, un reproductor de música, y Camelot, un lector de PDF. SeedVault, Etar y WebView también se han actualizado. El control de versiones se ha ajustado para alinearse con los números de versión menores de Android, lo que facilita la distinción entre las versiones de Android. El proyecto ha simplificado su base de código, ha añadido compatibilidad con más dispositivos e invita a los desarrolladores a contribuir con código y traducciones.

Desarrollo

Tipos Suma y Switches Minimalistas para Lua: lua-match

2024-12-31
Tipos Suma y Switches Minimalistas para Lua: lua-match

lua-match es una biblioteca Lua minimalista que proporciona tipos suma y funcionalidad de switch. Utiliza una función de etiquetado para una forma limpia y eficiente de manejar varios tipos de datos y ramificaciones condicionales. Con una simple función de etiquetado y una tabla switch, puedes implementar fácilmente un comportamiento similar al tipo suma y la coincidencia de patrones, simplificando significativamente tu código Lua. La biblioteca es de código abierto y utiliza la licencia MIT.

Desarrollo Tipos Suma

Desarrollador crea juego para Game Boy Advance en Zig

2024-12-31

Un desarrollador creó un juego 2048 para Game Boy Advance utilizando el lenguaje de programación emergente Zig. El artículo destaca las ventajas de Zig en la programación integrada, especialmente su proceso de compilación cruzada simplificado, la gestión eficiente de la memoria (incluidas las estructuras compactas) y la potente generación de código en tiempo de compilación. El autor compara la experiencia de desarrollo usando C++ frente a Zig, señalando la facilidad y eficiencia de Zig en el manejo del diseño de memoria peculiar de Game Boy Advance y los registros de hardware. Si bien Zig tiene algunas desventajas, como el soporte limitado para ensamblaje en línea e instrucciones Thumb, sus numerosas ventajas lo convierten en una opción ideal para desarrollar juegos para consolas retro.

¿Por qué Linux aún no está listo para el escritorio?

2024-12-30

Este artículo profundiza en las razones profundas por las que Linux aún no ha logrado una adopción generalizada en el escritorio. El autor destaca varios problemas clave: la compatibilidad deficiente del software entre distribuciones, las actualizaciones frecuentes que provocan errores y regresiones, la financiación insuficiente que da como resultado una calidad de software inferior, la falta de soporte adecuado para los controladores de hardware y los desafíos en la comunicación dentro de la comunidad de Linux. Si bien Linux sobresale en entornos de servidor, su presencia en el escritorio sigue viéndose obstaculizada por estos obstáculos persistentes, dificultando su capacidad para competir eficazmente con sistemas operativos establecidos como Windows.

Torneo de Fuentes de Codificación: Source Code Pro se Corona como Ganador

2024-12-30
Torneo de Fuentes de Codificación: Source Code Pro se Corona como Ganador

John Gruber, de Daring Fireball, destaca un divertido 'torneo' de selección de fuentes de codificación creado por Typogram. Los usuarios eligen su favorita entre 32 fuentes monoespaciadas gratuitas. Si bien algunas opciones populares, como Consolas, están ausentes, y algunas fuentes incluidas son menos atractivas, es un ejercicio que vale la pena. Las mejoras desde su lanzamiento inicial incluyen un ejemplo de código JavaScript en lugar de CSS y una selección más amplia de fuentes. Gruber recomienda deshabilitar los nombres de las fuentes para reducir el sesgo. ¿Su ganadora consistente? Source Code Pro de Adobe, con IBM Plex Mono en segundo lugar.

RubyConf 2024: Hackday de Buildpacks Nativos en la Nube

2024-12-30
RubyConf 2024: Hackday de Buildpacks Nativos en la Nube

Richard Schneeman organiza un hackday de Buildpacks Nativos en la Nube (CNB) en la RubyConf 2024 para ayudar a los desarrolladores a aprender y contribuir con herramientas de implementación de Ruby. El evento ofrece tareas de diferentes niveles de dificultad, desde modificar buildpacks existentes hasta crear otros nuevos, atendiendo a diferentes niveles de habilidad. Incluso si no puedes asistir en persona, puedes participar usando los recursos proporcionados.

¿Mocks de bases de datos: más problemas de los que valen la pena?

2024-12-30
¿Mocks de bases de datos: más problemas de los que valen la pena?

Aunque es tentador por su velocidad y simplicidad, el autor argumenta que el uso de mocks de bases de datos para las pruebas, en última instancia, causa más problemas de los que resuelve. Un ejemplo de creación de usuario destaca las diferencias entre mocks y pruebas contra una base de datos real. Las pruebas de bases de datos reales revelan problemas potenciales desde el principio, como violaciones de restricciones únicas, manejo de valores predeterminados y cuellos de botella de rendimiento, lo que ahorra tiempo de depuración y reduce los riesgos de producción. A medida que las aplicaciones evolucionan y los esquemas cambian, las pruebas de bases de datos reales manejan mejor las nuevas validaciones, las modificaciones de tipo de datos y los cambios en la precisión de la marca de tiempo, asegurando que el código esté alineado con la base de datos real. El autor sugiere priorizar las pruebas de bases de datos reales para las capas de acceso a datos, mientras que las usa en la capa de servicio para exponer las interacciones de la lógica de negocios con los datos. Las capas de controladores, sin embargo, pueden simular llamadas de servicio de manera efectiva. El equilibrio entre las pruebas de bases de datos reales y los mocks es clave para construir aplicaciones robustas.

Protocolo de Red Homa: Un Nuevo Reto para TCP/UDP

2024-12-30

Homa es un nuevo protocolo de transporte de red diseñado para aplicaciones en centros de datos, con el objetivo de reducir la sobrecarga de transmisión de numerosos mensajes pequeños. A diferencia de TCP/UDP tradicional, elimina la configuración de conexión, empleando un mecanismo único de solicitud-respuesta y colas priorizadas para minimizar la latencia. Actualmente, Homa busca su inclusión en el kernel de Linux, pero su futuro puede depender mucho de la aceleración por hardware en dispositivos de red.

Evaluación de la capacidad de generación de código de los LLMs: Presentación de MultiCodeBench

2024-12-30
Evaluación de la capacidad de generación de código de los LLMs: Presentación de MultiCodeBench

Los asistentes de programación basados en IA y alimentados por modelos de lenguaje extenso (LLM) de código se han vuelto cada vez más comunes, aumentando significativamente la productividad de los desarrolladores. Sin embargo, los benchmarks existentes de generación de código se centran principalmente en escenarios de propósito general, dejando el rendimiento de los LLMs en dominios de aplicación específicos en gran medida desconocido. Este artículo presenta MultiCodeBench, un nuevo benchmark compuesto por 2400 tareas de programación en 12 dominios populares de desarrollo de software y 15 lenguajes de programación. Los experimentos en once LLMs principales revelan su rendimiento en la generación de código en diferentes dominios, ofreciendo información práctica para los desarrolladores en la selección de LLMs y orientación para los desarrolladores de modelos para mejorar las capacidades de generación de código específicas del dominio.

ts_zip: Compresión de texto con modelos de lenguaje grandes

2024-12-30

Fabrice Bellard ha lanzado ts_zip, una herramienta de compresión de texto que utiliza el modelo de lenguaje grande RWKV 169M v4 para lograr tasas de compresión mucho mayores que las herramientas tradicionales. Si bien requiere una GPU y 4 GB de RAM, y es más lenta que los compresores convencionales (hasta 1 MB/s en una RTX 4090), ts_zip muestra una compresión impresionante en textos en inglés y otros idiomas, incluido el código fuente. La relación de compresión se mide en bits por byte (bpb), con resultados que muestran un rendimiento superior a xz en conjuntos de datos como enwik8 y enwik9. La evaluación determinística del modelo garantiza la descompresión consistente en diferentes configuraciones de hardware y software.

Avance en la evaluación de los modelos de lenguaje grandes para la generación de pruebas unitarias

2024-12-30
Avance en la evaluación de los modelos de lenguaje grandes para la generación de pruebas unitarias

Los investigadores realizaron una evaluación exhaustiva del potencial de los Modelos de Lenguaje Grandes (LLMs) en la automatización de la generación de pruebas unitarias. Compararon el rendimiento de cinco LLMs de código abierto frente al GPT-4 de código cerrado y la herramienta tradicional Evosuite en 17 proyectos Java, investigando el impacto de diferentes estrategias de solicitud. El estudio descubrió que los LLMs de código abierto ofrecen ventajas en la privacidad de los datos y superan en rendimiento en ciertas tareas, pero también reveló limitaciones en la generación de pruebas unitarias basada en LLM. Esta investigación proporciona información valiosa para orientar las futuras aplicaciones de los LLMs en esta área.

Desarrollo Pruebas Unitarias

Aviso de Comunicación Interna del Equipo Diaspora*

2024-12-30
Aviso de Comunicación Interna del Equipo Diaspora*

Este extracto proviene de una comunicación interna del equipo de Diaspora*. Indica que el sitio web requiere JavaScript para funcionar correctamente y proporciona instrucciones sobre cómo denunciar contenido, incluyendo los criterios de denuncia. También incluye enlaces a las discusiones y al soporte del proyecto Diaspora*, junto con información del sitio web como la versión del código, las estadísticas del pod, los términos de servicio, la información de contacto y una opción de modo optimizado para dispositivos táctiles.

SQLite: Una Leyenda Increíble de Bases de Datos

2024-12-30

SQLite, la base de datos más ampliamente implementada del mundo, es mantenida por un equipo de tres personas, rechazando contribuciones externas, pero conquistando el mundo con su rendimiento excepcional y estabilidad. Nacida en un barco de guerra de EE. UU. para resolver problemas de tiempo de inactividad del servidor, se ha convertido en la piedra angular de billones de bases de datos. SQLite no es de código abierto, sino un software de dominio público, con menos restricciones que cualquier licencia de código abierto. Su riguroso proceso de prueba, incluso simulando situaciones extremas como fallos del sistema operativo, garantiza su fiabilidad increíblemente alta. Sin embargo, su modelo de negocio único —generando ingresos a través de soporte pago y membresías— también es digno de mención. La leyenda de SQLite reside no solo en su destreza técnica, sino también en la persistencia e innovación que la respaldan.

(avi.im)
Desarrollo leyenda

Nueva herramienta de compresión de mensajes cortos: ts_sms

2024-12-30

ts_sms es una nueva herramienta para la compresión de mensajes cortos utilizando modelos de lenguaje grandes. Emplea compresión sin pérdidas, reduciendo bits mediante la identificación y eliminación de redundancia estadística sin pérdida de información. En comparación con herramientas como brotli, ts_sms presenta ventajas en la compresión de mensajes pequeños. Están disponibles versiones para Linux y Windows. Su tecnología principal es similar a ts_zip, utilizando un sistema de relleno específico compatible con la codificación aritmética, eliminando la necesidad de codificar explícitamente la longitud del mensaje.

Desarrollo

Las Unidades de Ejecución a Menudo Son Pipelineadas

2024-12-30

Esta entrada de blog explora el pipeline de las unidades de ejecución en microarquitecturas fuera de orden. La autora inicialmente asumió que las unidades de ejecución permanecen ocupadas hasta que se completa la µop, pero usando la microarquitectura Firestorm (A14 y M1) como ejemplo, demuestra que dos unidades de ejecución enteras pueden manejar múltiples multiplicaciones simultáneamente, cada una tomando tres ciclos. Al comparar secuencias de instrucciones dependientes e independientes, la autora revela que muchas combinaciones de unidad de ejecución/µop están altamente pipeline, permitiendo que se emita una µop mientras la unidad procesa otras. Esto reduce el tiempo de ejecución para instrucciones independientes de 6 ciclos previstos a 4. Finalmente, la autora explica por qué las tablas de latencia y ancho de banda de instrucciones especifican el rendimiento recíproco: es equivalente a ciclos/instrucción.

Panel Graphic Walker: Exploración interactiva de datos con HoloViz Panel

2024-12-30
Panel Graphic Walker: Exploración interactiva de datos con HoloViz Panel

Panel Graphic Walker es una biblioteca de Python que integra la potencia de Graphic Walker en HoloViz Panel para la exploración interactiva de datos dentro de Jupyter Notebooks y aplicaciones Panel. Ofrece una interfaz similar a Tableau, permitiendo a los usuarios crear visualizaciones y tablas dinámicas rápidamente con un código mínimo. Admite varios backends de datos y renderizadores, y puede manejar grandes conjuntos de datos utilizando computación del lado del servidor. El proyecto se encuentra en sus etapas iniciales; se recomienda fijar una versión específica.

Zig: ¿Más seguro y rápido que Rust inseguro?

2024-12-30
Zig: ¿Más seguro y rápido que Rust inseguro?

Esta publicación de blog compara Rust y Zig mediante la implementación de un intérprete de bytecode con recolección de basura. El autor encontró que Rust inseguro era increíblemente desafiante, citando reglas de alias complejas y comportamiento indefinido como obstáculos importantes. En contraste, Zig ofreció una experiencia más amigable para los desarrolladores en operaciones de memoria inseguras, incluida la detección de fugas de memoria integrada y una ergonomía de punteros mejorada. La implementación de Zig resultó ser finalmente más segura, rápida y fácil de desarrollar que su contraparte de Rust.

curl recibe una actualización importante: compatibilidad con la lectura de archivos parciales

2024-12-30
curl recibe una actualización importante: compatibilidad con la lectura de archivos parciales

El próximo lanzamiento de curl 8.12.0 presenta una nueva funcionalidad emocionante: la capacidad de leer archivos parciales. Los usuarios ahora pueden aprovechar un nuevo sistema de variables para extraer rangos específicos de bytes de archivos y usarlos en las líneas de comandos de curl. Esto agrega flexibilidad significativa a la forma en que curl maneja los archivos, permitiendo tareas como extraer el comienzo de un archivo como nombre de usuario o una sección en el medio para un cuerpo POST. Esto expande significativamente las capacidades de curl, brindando a los usuarios una herramienta de línea de comandos más robusta.

Desarrollo manejo de archivos

curl-impersonate actualizado: capacidades mejoradas de suplantación de navegador

2024-12-30
curl-impersonate actualizado: capacidades mejoradas de suplantación de navegador

lexiforest/curl-impersonate es una bifurcación activa de curl-impersonate que mejora las capacidades de suplantación de navegador y admite más versiones y destinos de compilación. Este proyecto modifica curl para imitar el comportamiento de los principales navegadores (Chrome, Edge, Safari y Firefox) durante los handshakes TLS y HTTP, eludiendo las restricciones de los sitios web basadas en huellas digitales. Las actualizaciones incluyen soporte para ECH, compresión ZSTD, curva X25519Kyber768 y más versiones de navegador, ofreciendo herramientas de línea de comandos y funciones de biblioteca mejoradas.

86Box: Un viaje al pasado de la arquitectura x86

2024-12-30
86Box: Un viaje al pasado de la arquitectura x86

86Box es un emulador x86 de bajo nivel que ejecuta sistemas operativos y software antiguos diseñados para sistemas IBM PC y compatibles, desde 1981 hasta diseños de sistemas relativamente recientes basados en el bus PCI. Ofrece una interfaz fácil de usar, emulación de bajo nivel de procesadores basados en 8086 hasta el Celeron de la era Mendocino, una amplia gama de personalización de máquinas virtuales y soporte para una variedad de periféricos. Permite ejecutar MS-DOS, versiones antiguas de Windows, OS/2, varias distribuciones de Linux y sistemas antiguos como BeOS o NEXTSTEP.

Desarrollo

MiceWine: Ejecutando aplicaciones y juegos de Windows en Android

2024-12-30
MiceWine: Ejecutando aplicaciones y juegos de Windows en Android

MiceWine pretende ejecutar aplicaciones y juegos de Windows en smartphones Android. Utiliza una versión personalizada de Wine compilada para Android y Box64 para un rendimiento óptimo. Actualmente en desarrollo activo, utiliza un XServer basado en Termux-X11. Soporta Android 10 y superior. Las GPUs Adreno 7xx y 6xx son compatibles con Turnip/Zink, mientras que otras tienen soporte parcial con nativo/Zink (experimental). Vulkan nativo en GPUs que no son Adreno es experimental y requiere pruebas.

Analogía hidráulica: un obstáculo para la enseñanza de la electrónica

2024-12-30
Analogía hidráulica: un obstáculo para la enseñanza de la electrónica

Muchos libros introductorios de electrónica utilizan la analogía hidráulica para explicar los circuitos, comparando la corriente eléctrica con el flujo de agua y las baterías con bombas. Sin embargo, el autor argumenta que esta analogia es profundamente defectuosa, especialmente al explicar componentes semicondutores como JFET y MOSFET. La analogia falla en representar con precisión sus curvas características, lo que dificulta el aprendizaje. El autor aboga por abandonar esta analogía imprecisa y, en cambio, aprender electrónica a partir de principios más fundamentales.

Python en 2024: Más rápido, más potente y más popular que nunca

2024-12-30
Python en 2024: Más rápido, más potente y más popular que nunca

En 2024, Python consolidó su posición como uno de los principales lenguajes de programación. Python 3.13 introdujo un aumento significativo en el rendimiento con la versión experimental "sin GIL" y un compilador JIT. La eliminación de módulos obsoletos simplificó el lenguaje, mientras que su papel crucial en IA, aprendizaje automático y ciencia de datos impulsó su popularidad a nuevas alturas. Python superó a JavaScript en uso en GitHub y alcanzó un notable 18% en el índice Tiobe, consolidando su lugar entre los tres principales lenguajes de programación.

Desarrollo
1 2 197 198 199 201 203 204 205 214 215