Sobre el proyecto

Iris es un framework web para el lenguaje Go. El README está escrito en inglés y cubre la línea actual v12, además de un avance del lanzamiento planeado de la v14. Capacidades principales descritas para v12: - Soporte HTTP/2, incluyendo server push y datos embebidos. - Un enrutador que acepta parámetros de ruta dinámicos con tipos estándar como :uuid, :string e :int, y permite definir tipos de parámetros personalizados. - Middleware integrado como access log, basic auth, CORS, gRPC, verificaciones anti-bot hCaptcha y reCaptcha, JWT, method override, monitor, pprof, rate limit, recovery, request ID y rewrite. - Versionado de API, Modelo-Vista-Controlador (paquete mvc) e inyección de dependencias para MVC, manejadores y enrutadores de API. - WebSockets, gRPC y HTTPS automático. - Soporte integrado de ngrok para exponer una aplicación local a internet. - Compresión de respuestas (gzip, deflate, brotli, snappy, s2) y un middleware de Compresión. - Motores de vista que incluyen HTML, Django, Handlebars y Pug/Jade. - Servidores de archivos personalizados y un servidor WebDAV. - Caché, internacionalización (i18n, sitemap), sesiones y una suite de pruebas. - Respuestas enriquecidas: HTML, texto, Markdown, XML, YAML, binario, JSON, JSONP, Protocol Buffers, MessagePack, negociación de contenido, streaming y eventos enviados por el servidor. - Vinculación de solicitudes enriquecida: consulta de URL, encabezados, formulario, texto, XML, YAML, binario, JSON, validación, Protocol Buffers y MessagePack. - El código de ejemplo en el README muestra una aplicación mínima creada con iris.New(), una ruta registrada mediante app.Get y app.Listen(":8080"). El README indica que hay 285 ejemplos disponibles en el directorio _examples y enlaza a chats comunitarios y páginas de donaciones. v14 planeada (descrita como el lanzamiento más grande en la historia del proyecto, sin fecha de lanzamiento pública y con una nueva ruta de importación para que el código de v12 no se vea afectado): - Un constructor de aplicaciones verificado en compilación (iris.NewBuilder) que conecta CORS, compresión, registro de acceso, endpoint de salud, mapeo de errores, servicios y grupos de API en una sola cadena con orden de pasos forzado. - Ayudantes de rest como rest.ReadJSON[T], rest.OK, rest.NoContent, rest.Count, rest.Created y rest.Paginated que trasladan la decodificación, validación y renderizado de errores fuera de los cuerpos de los manejadores. - Un paquete rest/errors para declarar mapeos de error de dominio a respuesta HTTP una sola vez, con colectores opcionales para registro y renderizado como JSON o una vista. - Inyección de dependencias disponible más allá de MVC, con un hook Init(ctx) que se ejecuta durante Build() y recursos cerrables que se cierran al apagar; el paquete hero es reemplazado por dep y rest. - Movimientos de paquetes: sessions, cache, websocket, i18n, view y versioning se convierten en middleware; mvc se mueve bajo controller junto con los controladores de fileserver, sitemap y apigraph; las implementaciones del motor de vista se mueven a iris-contrib/views. - Aproximadamente treinta middleware integrados, incluyendo nuevos como httpcost (tiempo, memoria y CPU por solicitud), bodylimit, compress, counter, referrer, geolocation, ipaccess y servertiming. - Configuración a través de literales parciales de iris.Options, con Bind cargando YAML desde la variable de entorno SERVER_CONFIG o un archivo. - Renombramientos como Party a Router y ctx.URLParam a ctx.Query().Get, documentados en una guía de migración. - Cookies de sesión seguras por defecto (Secure, SameSite=Lax), límites de cuerpo de solicitud en cada ruta de lectura y correcciones para problemas descritos previamente en rate limiting y Logout. - Documentación planeada como un libro de 23 capítulos en el repositorio, un tutorial de inicio rápido, una guía de migración de v12 y una wiki generada. El README presenta a Iris como rápido, simple pero completo, y enfatiza el soporte comunitario a largo plazo; también enlaza a páginas externas de benchmarks y testimonios en lugar de reportar mediciones por sí mismo.