CubeCL: Extensión de lenguaje de computación de alto rendimiento multiplataforma para Rust

2025-04-24
CubeCL: Extensión de lenguaje de computación de alto rendimiento multiplataforma para Rust

CubeCL es una extensión de lenguaje Rust innovadora que permite a los desarrolladores escribir kernels de computación de GPU en Rust, aprovechando abstracciones de coste cero para kernels de computación mantenibles, flexibles y eficientes. Soporta tiempos de ejecución WGPU, CUDA y ROCm/HIP (con soporte para CPU planificado), CubeCL cuenta con vectorización automática, computación en tiempo de compilación y autoajuste, simplificando el desarrollo de kernels de alto rendimiento y la portabilidad multiplataforma. Su proceso único de dos pasos (análisis y expansión) permite optimizaciones en tiempo de compilación e integración perfecta con Rust. Actualmente en alfa, CubeCL muestra un potencial inmenso para convertirse en una piedra angular de la computación de alto rendimiento en Rust.

Leer más
Desarrollo

Index: El agente de navegador de código abierto SOTA para tareas web autónomas

2025-04-23
Index: El agente de navegador de código abierto SOTA para tareas web autónomas

Index es un agente de navegador de código abierto de vanguardia capaz de ejecutar tareas web complejas de forma autónoma. Utiliza potentes modelos de lenguaje extenso (LLM) como Claude de Anthropic y los modelos de OpenAI, permitiendo a los usuarios emitir indicaciones como "ir a ycombinator.com, resumir las 3 primeras empresas del lote W25 y crear una nueva hoja de cálculo en Google Sheets". Index ofrece una API sin servidor para uso en producción, una CLI interactiva para desarrollo local, persistencia del estado del navegador y mucho más. Su facilidad de uso y potentes funciones lo hacen ideal para automatizar la extracción de datos web e interacciones web complejas.

Leer más
Desarrollo

Ejemplos autónomos de Apache Lucene: Una guía para principiantes en búsqueda de texto completo

2025-04-23
Ejemplos autónomos de Apache Lucene: Una guía para principiantes en búsqueda de texto completo

Este repositorio de GitHub proporciona una colección de ejemplos de Apache Lucene con comentarios detallados en Markdown. Cada ejemplo es autónomo y ejecutable, permitiendo a los alumnos explorar Lucene mediante la lectura del código, la depuración o la documentación web interactiva (https://msfroh.github.io/lucene-university/docs/SimpleSearch.html). El repositorio utiliza Lucene 10 y requiere JDK 21 o superior. ¡Se agradecen las contribuciones!

Leer más

Explorando un nuevo protocolo para la interacción en línea: Spring83

2025-04-23
Explorando un nuevo protocolo para la interacción en línea: Spring83

Este documento presenta Spring83, un protocolo experimental diseñado para explorar nuevas formas de interactuar en línea. No está destinado a usuarios, sino como una invitación para coinvestigadores a explorar y desarrollar. Ya existen varias implementaciones en diferentes lenguajes de programación, y el autor anima a realizar más contribuciones a este proyecto abierto.

Leer más

c/ua: Framework ligero para agentes de IA que controlan sistemas operativos completos

2025-04-23
c/ua: Framework ligero para agentes de IA que controlan sistemas operativos completos

c/ua (pronunciado "koo-ah") es un framework ligero que permite a los agentes de IA controlar sistemas operativos completos dentro de contenedores virtuales ligeros de alto rendimiento. Alcanzando hasta el 97% de la velocidad nativa en Apple Silicon, funciona con cualquier modelo de lenguaje visual. Integra virtualización de alto rendimiento (creando y ejecutando máquinas virtuales macOS/Linux en Apple Silicon con un rendimiento casi nativo usando Lume CLI y Virtualization.Framework de Apple) y una interfaz y agente de uso del ordenador, permitiendo a los sistemas de IA observar y controlar entornos virtuales, navegar por la web, escribir código y realizar flujos de trabajo complejos. Garantiza seguridad, aislamiento, alto rendimiento, flexibilidad y reproducibilidad, con soporte para varios proveedores de LLM.

Leer más
IA

Advanced Alchemy: Una biblioteca complementaria de alto rendimiento para SQLAlchemy

2025-04-23
Advanced Alchemy: Una biblioteca complementaria de alto rendimiento para SQLAlchemy

Advanced Alchemy es una biblioteca complementaria cuidadosamente diseñada, completamente probada y optimizada para SQLAlchemy. Ofrece repositorios sincrónicos y asincrónicos con operaciones CRUD comunes y operaciones masivas altamente optimizadas. Se integra con los principales frameworks web, incluyendo Litestar, Starlette, FastAPI y Sanic, y cuenta con una configuración y CLI Alembic personalizadas. Las características integradas incluyen un tipo de datos de objeto de archivo que admite varios backends de almacenamiento (fsspec y obstore), tipos JSON optimizados, soporte para UUID6 y UUID7 y clases base preconfiguradas. Advanced Alchemy simplifica las operaciones CRUD en modelos SQLAlchemy y proporciona funciones como paginación, ordenación y filtrado.

Leer más
Desarrollo Frameworks web

Restricciones de Aplicación de Sugerencias de Código de GitHub

2025-04-23
Restricciones de Aplicación de Sugerencias de Código de GitHub

Varias limitaciones impiden la aplicación de sugerencias de código en revisiones de código de GitHub. Estas incluyen: ningún cambio de código realizado, solicitud de extracción cerrada, visualización de un subconjunto de cambios, solo una sugerencia por línea permitida, aplicación a líneas eliminadas, sugerencias ya aplicadas o marcadas como resueltas, sugerencias de revisiones pendientes, comentarios multilínea, solicitud de extracción en cola para fusionar o limitaciones del sistema.

Leer más
Desarrollo limitaciones

Compilaciones locales de Expo Android: la imagen Docker eas-like-local-builder

2025-04-22
Compilaciones locales de Expo Android: la imagen Docker eas-like-local-builder

¿Cansado de las costosas compilaciones en la nube de EAS? La imagen Docker eas-like-local-builder ofrece una solución para compilar aplicaciones Expo Android localmente. Replica el entorno de compilación de EAS, incluyendo Ubuntu 22.04, JDK 17, NDK r26b y otros componentes necesarios, permitiendo a los desarrolladores compilar en sus entornos locales o CI/CD. La imagen admite perfiles de compilación personalizados (por ejemplo, producción) y permite omitir las comprobaciones de control de versiones mediante variables de entorno. Los desarrolladores solo necesitan ejecutar comandos Docker simples y montar su directorio de proyecto para compilar, simplificando enormemente el proceso de compilación local.

Leer más
Desarrollo

AutoKitteh: Plataforma de Automatización de Flujo de Trabajo basada en Python

2025-04-22
AutoKitteh: Plataforma de Automatización de Flujo de Trabajo basada en Python

AutoKitteh es una plataforma de automatización y orquestación de flujos de trabajo amigable para desarrolladores, construida en Python, que ofrece una alternativa basada en código a las plataformas sin código/bajo código. Ofrece flexibilidad ilimitada y utiliza Temporal para una ejecución duradera, abstraiendo las complejidades de infraestructura y codificación. AutoKitteh admite autohospedaje e implementación en la nube, es adecuado para DevOps, FinOps, MLOps, SOAR y más, y cuenta con integraciones integradas y una arquitectura "sin servidor" escalable.

Leer más

WinFile: ¡El Explorador de Archivos de Windows regresa!

2025-04-22
WinFile: ¡El Explorador de Archivos de Windows regresa!

Microsoft anunció que archivará el proyecto WinFile el 1 de marzo de 2025, pero la buena noticia es que este clásico Explorador de Archivos de Windows ha resurgido como una aplicación de escritorio nativa x86, x64 y arm64, compatible con todas las versiones actuales de Windows, incluido Windows 11. El mantenedor acepta correcciones de errores y sugerencias de mejoras, pero no desarrollará nuevas ramas. El código fuente del proyecto WinFile incluye dos versiones principales: la rama `original_plus`, que se mantiene lo más cerca posible del original, y la rama `master` en desarrollo activo. Los usuarios pueden descargar versiones precompiladas desde Microsoft Store o la página del proyecto.

Leer más
Desarrollo

Zafiro: Un gestor de paquetes de próxima generación en Rust

2025-04-22
Zafiro: Un gestor de paquetes de próxima generación en Rust

Zafiro es un gestor de paquetes experimental, basado en Rust e inspirado en Homebrew. Está diseñado para instalar y gestionar herramientas de línea de comandos, bibliotecas, lenguajes, aplicaciones de escritorio y mucho más. Incluye descargas paralelas, resolución automática de dependencias y compilación desde la fuente. Actualmente solo para ARM, con posible soporte para x86 en el futuro. Es software alfa; úsese bajo su propio riesgo.

Leer más
Desarrollo

Parcom: Una biblioteca concisa de combinadores de analizadores para Common Lisp

2025-04-22
Parcom: Una biblioteca concisa de combinadores de analizadores para Common Lisp

Parcom es una biblioteca concisa de combinadores de analizadores para Common Lisp, similar en estilo a Parsec de Haskell y Nom de Rust. Opera directamente sobre cadenas sin dependencias, cuenta con un amplio soporte para implementaciones de Common Lisp y ofrece un rico conjunto de analizadores y combinadores para construir analizadores personalizados. Parcom también incluye un analizador JSON opcional que admite Unicode. Su fortaleza radica en su capacidad para combinar analizadores existentes para crear una lógica de análisis compleja, ofreciendo una funcionalidad potente a través de una API limpia.

Leer más

Integración sencilla de API de chat de IA con la biblioteca Rowboat de Python

2025-04-22
Integración sencilla de API de chat de IA con la biblioteca Rowboat de Python

Este código Python demuestra cómo interactuar con una API de chat de IA usando la biblioteca Rowboat. Inicializa un cliente, conectándose a un servicio de API alojado localmente. El código muestra dos maneras de interactuar: usando la clase `StatefulChat` para conversaciones con estado, y usando el método `client.chat` de bajo nivel para enviar matrices de mensajes directamente. Ambos métodos recuperan e imprimen con éxito las respuestas de IA, mostrando la facilidad de uso de Rowboat para integrar rápidamente la funcionalidad de chat de IA en proyectos Python.

Leer más
Desarrollo

MemoTTL: Utilidad de Memoización con Seguridad de Hilos para Ruby con TTL y LRU

2025-04-22
MemoTTL: Utilidad de Memoización con Seguridad de Hilos para Ruby con TTL y LRU

MemoTTL es una utilidad de memoización segura para subprocesos para Ruby que admite TTL (tiempo de vida) y LRU (menos recientemente usado) para la eliminación de elementos. Está diseñada para escenarios donde los valores memorizados deben expirar después de un período y el uso de memoria debe limitarse. Se integra fácilmente mediante `include MemoTTL` y `memoize`, proporcionando métodos para borrar la caché. Los ejemplos muestran su uso en un controlador Rails, mejorando significativamente el rendimiento al evitar llamadas repetidas a métodos costosos.

Leer más
Desarrollo

Morphik: Un motor de búsqueda de documentos multimodales revolucionario más allá del RAG tradicional

2025-04-22
Morphik: Un motor de búsqueda de documentos multimodales revolucionario más allá del RAG tradicional

Morphik es un motor de búsqueda de documentos revolucionario que va más allá de la generación aumentada por recuperación (RAG) tradicional para documentos altamente técnicos y visuales. Ofrece búsqueda multimodal (imágenes, PDF, videos, etc.), creación de grafos de conocimiento, extracción rápida de metadatos e integraciones con herramientas como Google Suite, Slack y Confluence. Con un nivel gratuito y una versión de código abierto, Morphik simplifica la ingestión y consulta de documentos con un SDK de Python y una API REST. Los desarrolladores pueden empezar rápidamente con código simple y una consola web fácil de usar. Si bien la versión de código abierto tiene limitaciones, Morphik está comprometido con mejorar la velocidad, integrar más herramientas y agradece las contribuciones de la comunidad.

Leer más

ElatoAI: Voz con IA en tiempo real para ESP32

2025-04-22
ElatoAI: Voz con IA en tiempo real para ESP32

ElatoAI es un proyecto de código abierto que permite conversaciones globales ininterrumpidas de más de 10 minutos usando la API en tiempo real de OpenAI, ESP32, WebSockets seguros y funciones Deno Edge. Compuesto por un frontend Next.js, un servidor edge Deno y un cliente ESP32, ElatoAI permite agentes de IA personalizados, selección de voz y personalización. Incluye el códec Opus para audio de alta calidad, baja latencia, comunicación segura a través de WebSockets y Supabase para autenticación de usuario y almacenamiento de datos. El proyecto está en desarrollo activo y acepta contribuciones.

Leer más

Inicio rápido: RAG, Milvus y Docling con Feast

2025-04-22
Inicio rápido: RAG, Milvus y Docling con Feast

Este proyecto demuestra cómo usar Feast para impulsar una aplicación de Generación Aumentada por Recuperación (RAG). Amplía la demostración básica de RAG para mostrar cómo transformar archivos PDF en datos de texto utilizables por LLMs con Docling, cómo usar Milvus como una base de datos vectorial para almacenar y recuperar incrustaciones para RAG, y cómo transformar archivos PDF con Docling durante la ingestión. También demuestra la recuperación en línea de características, definiciones declarativas de vistas de características, búsqueda vectorial, contexto estructurado y no estructurado, y versionado y reutilización. El proyecto incluye datos de demostración, un archivo Python que define las vistas de características y las configuraciones de entidades para Feast, un archivo YAML que configura las tiendas sin conexión y en línea, y dos cuadernos principales: uno que demuestra cómo usar Docling para extraer texto de archivos PDF y almacenarlo en un archivo Parquet, y otro que muestra cómo usar Feast para ingerir los datos de texto y almacenarlos y recuperarlos de la tienda en línea.

Leer más
Desarrollo

Libro: Rastreador de Lectura en Línea de Comandos

2025-04-22
Libro: Rastreador de Lectura en Línea de Comandos

Libro es una herramienta sencilla de línea de comandos para rastrear tu historial de lectura, almacenando los datos localmente en una base de datos SQLite. Puedes añadir nuevos libros, ver el historial de lectura por año o autor, generar informes anuales e importar datos desde un archivo CSV de exportación de Goodreads. Fácil de usar y potente, Libro es perfecto para los amantes de los libros.

Leer más

Verus: Una herramienta de análisis estático para verificar la corrección del código Rust

2025-04-22
Verus: Una herramienta de análisis estático para verificar la corrección del código Rust

Verus es una herramienta de análisis estático para verificar la corrección del código escrito en Rust. Los desarrolladores escriben especificaciones de lo que su código debe hacer, y Verus verifica estáticamente que el código Rust ejecutable siempre satisfará las especificaciones para todas las ejecuciones posibles del código. En lugar de verificaciones en tiempo de ejecución, Verus se basa en solucionadores potentes para probar que el código es correcto. Actualmente, Verus admite un subconjunto de Rust (que estamos trabajando para expandir), y en algunos casos, permite a los desarrolladores ir más allá del sistema de tipos Rust estándar y verificar estáticamente la corrección del código que, por ejemplo, manipula punteros sin procesar. Verus está en desarrollo activo; las funciones pueden estar rotas o faltar, y la documentación aún está incompleta.

Leer más

Recuerdo del Pasado: Un Catálogo de Juegos BASIC de los Años 80

2025-04-22
Recuerdo del Pasado: Un Catálogo de Juegos BASIC de los Años 80

Este artículo presenta una lista fascinante de juegos BASIC de los años 1980, que abarca varios sistemas informáticos como BASIC-PLUS, EduSystem, DECsystem 10 y HP. Desde juegos simples de adivinanza de números (Acey-Ducey, Bagles) hasta juegos de estrategia complejos (Gomoko, Guerra Civil) y simulaciones (HMRABI, KING), la variedad muestra la creatividad e ingenio de la programación de esa época. Estos juegos, simples pero atractivos, seguramente evocarán nostalgia en muchos.

Leer más

Evertop: Un PC solar con ultra bajo consumo de energía y batería de ultra larga duración

2025-04-21
Evertop: Un PC solar con ultra bajo consumo de energía y batería de ultra larga duración

Evertop es un PC portátil que emula un IBM XT con un procesador 80186 y 1 MB de RAM, ejecutando DOS, Minix y Windows 3.0. Su microcontrolador de bajo consumo de energía, pantalla de tinta electrónica, dos baterías de 10.000 mAh y funciones de ahorro de energía permiten de cientos a miles de horas de uso con una sola carga. Un panel solar integrado garantiza un funcionamiento indefinido fuera de la red. Cuenta con una gama completa de periféricos, incluyendo teclado, puertos PS/2, soporte gráfico y de audio variado, puertos serie, Ethernet, Wi-Fi y radio LoRa. La carga es versátil, con opciones para energía solar, entrada DC y micro-USB, permitiendo la carga simultánea desde varias fuentes. También está disponible una versión minimizada, Evertop Min.

Leer más
Hardware

Open Codex: Asistente de IA de línea de comandos, de código abierto y local

2025-04-21
Open Codex: Asistente de IA de línea de comandos, de código abierto y local

Open Codex es un asistente de IA de línea de comandos totalmente de código abierto, inspirado en OpenAI Codex, que se ejecuta localmente sin necesidad de una clave de API. Utiliza modelos de lenguaje locales como phi-4-mini para traducir lenguaje natural a comandos de shell. Las características incluyen modos de disparo único e interactivo (próximamente), confirmación de comandos, soporte de portapapeles, salida de terminal coloreada y compatibilidad multiplataforma (macOS, Linux, Windows).

Leer más
Desarrollo

GTK-LLM-Chat: Una interfaz gráfica GTK para chatear con LLMs

2025-04-21
GTK-LLM-Chat: Una interfaz gráfica GTK para chatear con LLMs

gtk-llm-chat es una interfaz gráfica simple y fácil de usar, construida con GTK, para interactuar con Modelos de Lenguaje Grandes (LLMs). Admite varias conversaciones simultáneas en ventanas independientes, integra la biblioteca python-llm para chatear con varios modelos LLM y cuenta con una interfaz moderna, respuestas en streaming en tiempo real, renderizado Markdown, administración de conversaciones, atajos de teclado, soporte para fragmentos y un modo de applet. La instalación es sencilla: use pipx para instalar llm y ejecute `llm install gtk-chat`.

Leer más
Desarrollo

Dia: Modelo de Texto a Voz de 1.6B de Parámetros de Nari Labs

2025-04-21
Dia: Modelo de Texto a Voz de 1.6B de Parámetros de Nari Labs

Nari Labs presenta Dia, un modelo de texto a voz con 1.6 mil millones de parámetros, capaz de generar diálogos altamente realistas directamente desde transcripciones. Los usuarios pueden controlar la emoción y el tono condicionando la salida al audio, y el modelo incluso produce señales no verbales como risas y tos. Para acelerar la investigación, los checkpoints de modelos preentrenados y el código de inferencia están disponibles en Hugging Face. Una página de demostración compara Dia con ElevenLabs Studio y Sesame CSM-1B. Si bien actualmente requiere alrededor de 10 GB de VRAM y soporte de GPU (soporte de CPU próximamente), Dia genera aproximadamente 40 tokens por segundo en una GPU A4000. Se planea una versión cuantizada para mejorar la eficiencia de la memoria. El modelo está licenciado bajo la Licencia Apache 2.0 y prohíbe estrictamente el mal uso, como el robo de identidad, la generación de contenido engañoso o actividades ilegales.

Leer más
IA

Funciones de Cadena en C: Una Visión General Rápida

2025-04-21
Funciones de Cadena en C: Una Visión General Rápida

Este artículo proporciona una visión general rápida de varias funciones de manipulación de cadenas en C comúnmente usadas: `strlen()` obtiene la longitud de una cadena; `strcpy()` copia cadenas; `strcat()` concatena cadenas; `strncat()` concatena de forma segura un número especificado de caracteres; `strcmp()` compara cadenas; `strcspn()` encuentra el primer carácter que no está en un conjunto especificado; `strerror()` obtiene el mensaje de error para un código de error; `memchr()` encuentra un valor en un bloque de memoria; y `strrev()` (no estándar) invierte una cadena. Dominar estas funciones es crucial para la programación eficiente en C.

Leer más
Desarrollo funciones de cadena

Nerdlog: Un visor de registros remoto rápido y sin servidor

2025-04-21
Nerdlog: Un visor de registros remoto rápido y sin servidor

Nerdlog es un visor de registros TUI (interfaz de usuario de terminal) rápido, que prioriza el acceso remoto, multi-host, con histograma de línea de tiempo y sin servidor central. Inspirado en Graylog/Kibana, pero sin la sobrecarga, requiere una configuración mínima. Consulta eficientemente registros de varias máquinas remotas simultáneamente, filtrando por rango de tiempo y patrones, y mostrando un histograma de línea de tiempo para un análisis visual rápido. Diseñado principalmente para leer registros del sistema (/var/log/messages o /var/log/syslog) de uno o más hosts remotos, es altamente eficiente incluso con archivos de registro grandes (1 GB+). Si bien admite otros formatos de registro, su funcionalidad principal surge de la necesidad de monitorear eficientemente los registros de numerosas instancias de back-end de servicios web. Nerdlog se conecta a través de SSH, manteniendo las conexiones inactivas en segundo plano. El análisis de registros se realiza de forma remota, descargando solo datos mínimos por consulta y utilizando la compresión gzip para la eficiencia del ancho de banda. Cuenta con una interfaz de línea de comandos similar a Vim y atajos de teclado para una navegación y control intuitivos.

Leer más
Desarrollo registro remoto

Ingeniería inversa de la máquina virtual de TikTok: Descifrando webmssdk.js

2025-04-21
Ingeniería inversa de la máquina virtual de TikTok: Descifrando webmssdk.js

Este proyecto detalla la ingeniería inversa de la máquina virtual (VM) personalizada de TikTok que se encuentra en webmssdk.js. La VM es una parte esencial de la ofuscación y seguridad de TikTok. El proyecto incluye herramientas para desofuscar webmssdk.js, descompilar las instrucciones de la VM en código legible, inyectar un script para reemplazar webmssdk.js con la versión desofuscada y generar URLs firmadas para solicitudes autenticadas (como publicar comentarios). El autor superó técnicas significativas de ofuscación, incluyendo la notación de corchetes y las llamadas a funciones disfrazadas, para desofuscar y descompilar con éxito la VM, permitiendo finalmente la generación de firmas para solicitudes autenticadas.

Leer más
Desarrollo

Entrenamiento PyTorch instantáneo: Intercambio en caliente de LLMs sin descargar VRAM

2025-04-21
Entrenamiento PyTorch instantáneo: Intercambio en caliente de LLMs sin descargar VRAM

Los tiempos de carga de los modelos de lenguaje grandes pueden ralentizar significativamente el desarrollo. Este proyecto presenta una solución de intercambio en caliente para el código de entrenamiento de PyTorch. Al mantener el modelo residente en la VRAM mediante un proceso en segundo plano, se logra un inicio casi instantáneo. Incluso después de que finaliza el script, el modelo permanece cargado, listo para su uso inmediato en la siguiente ejecución. Se admite la depuración remota y la integración de la IU Dear ImGui, lo que aumenta la eficiencia del desarrollador. Simplemente reemplace sus llamadas `from_pretrained` para experimentar una ejecución instantánea y una depuración fácil.

Leer más

Prompts Recursivos: Implementando la Recursión con LLMs

2025-04-20
Prompts Recursivos: Implementando la Recursión con LLMs

Este artículo explora un nuevo enfoque para implementar la recursión utilizando Modelos de Lenguaje Grandes (LLMs). Al crear un prompt recursivo que actualiza iterativamente su propio estado interno, el autor demuestra cómo un LLM puede generar una secuencia de prompts que convergen hacia una solución, reflejando el comportamiento de las funciones recursivas en el código. El artículo utiliza la secuencia de Fibonacci como ejemplo, mostrando cómo la solicitud recursiva puede realizar cálculos. También discute los desafíos de manejar imprecisiones en la salida del LLM y aprovechar la base de conocimiento existente del LLM, trazando paralelos con la forma en que los humanos realizan aritmética mental utilizando reglas algebraicas y atómicas memorizadas. El trabajo está conectado con investigaciones relacionadas como ReAct y ACT-R, y aborda estrategias para mitigar errores en los resultados generados por el LLM.

Leer más

Tini: Un init pequeño pero válido para contenedores

2025-04-20
Tini: Un init pequeño pero válido para contenedores

Tini es el sistema init más simple que se pueda imaginar. Lo único que hace es generar un único proceso hijo (Tini está diseñado para ejecutarse en un contenedor), esperar a que este termine, recolectando procesos zombis y reenviando señales. Usar Tini tiene varias ventajas: protege contra software que crea accidentalmente procesos zombis; asegura que los manejadores de señales predeterminados funcionen correctamente; y es completamente transparente. Está incluido en Docker 1.13 o superior, para versiones anteriores se debe instalar manualmente.

Leer más
1 2 22 23 24 26 28 29 30 50 51