Выпущена версия Gin 1.12.0
Gin v1.12.0
Возможности
- feat(binding): добавлена поддержка encoding.UnmarshalText в привязке uri/query (#4203)
- feat(context): добавлены методы GetError и GetErrorSlice для получения ошибок (#4502)
- feat(context): добавлена поддержка Protocol Buffers для согласования контента (#4423)
- feat(context): реализован метод Delete (#4296)
- feat(gin): добавлена опция использования экранированного пути (#4420)
- feat(logger): цветовая задержка (#4146)
- feat(render): добавлен протокол bson (#4145)
Исправления ошибок
- fix(binding): исправлена ошибка пустого значения (#2169)
- fix(binding): улучшена обработка пустых срезов/массивов при привязке формы (#4380)
- fix(context): исправлена обработка ClientIP при наличии нескольких значений заголовка X-Forwarded-For (#4472)
- fix(debug): исправлено несоответствие версии (#4403)
- fix(gin): закрытие os.File в RunFd для предотвращения утечки ресурсов (#4422)
- fix(gin): исправлены маршруты с буквальным двоеточием, не работающие с engine.Handler() (#4415)
- fix(recover): подавление http.ErrAbortHandler в recovery (#4336)
- fix(render): запись длины контента в Data.Render (#4206)
- fix(response): улучшено поведение hijack для жизненного цикла ответа (#4373)
- fix(tree): исправлена паника в findCaseInsensitivePathRec с RedirectFixedPath (#4535)
- fix: исправлены опечатки, улучшена ясность документации и удален мертвый код (#4511)
Улучшения
- chore(binding): обновлена зависимость bson на mongo-driver v2 (#4549)
- chore(context): всегда доверять заголовкам xff из unix сокета (#3359)
- chore(deps): обновлен golang.org/x/crypto до v0.45.0 (#4449)
- chore(deps): обновлен quic-go до v0.57.1 (#4532)
- chore(logger): разрешить пропускать вывод строки запроса (#4547)
- chore(response): предотвращение паники Flush() при наличии http.Flusher (#4479)
Рефакторинг
- refactor(binding): использован maps.Copy для более чистой работы с картами (#4352)
- refactor(context): опущены имена возвращаемых значений (#4395)
- refactor(context): заменены жестко закодированные IP-адреса localhost на константы (#4481)
- refactor(context): использование maps.Clone (#4333)
- refactor(ginS): использован sync.OnceValue для упрощения функции engine (#4314)
- refactor(recovery): умное сравнение ошибок (#4142)
- refactor(utils): перемещены утилит-функции в utils.go (#4467)
- refactor: цикл for можно модернизировать с помощью range по int (#4392)
- refactor: заменены магические числа названными константами в bodyAllowedForStatus (#4529)
- refactor: использован b.Loop() для упрощения кода и улучшения производительности (#4389, #4432)
Обновления процесса сборки / CI
- ci(bot): увеличена частота и сгруппированы обновления зависимостей (#4367)
- ci(lint): рефакторированы утверждения тестов и конфигурация linter (#4436)
- ci(sec): улучшена типобезопасность и организация сервера в HTTP middleware (#4437)
- ci(sec): запланировано запуск сканирования безопасности Trivy ежедневно в полночь UTC (#4439)
- ci: заменен рабочий процесс сканирования уязвимостей на интеграцию Trivy (#4421)
- ci: обновлены рабочие процессы CI и стандартизированы кавычки конфигурации Trivy (#4531)
- ci: обновлена поддержка версии Go на 1.25+ во всех CI и документации (#4550)
Обновления документации
- docs(README): добавлен значок сканирования безопасности Trivy (#4426)
- docs(context): добавлены примеры комментариев для методов ShouldBind* (#4428)
- docs(context): исправлены некоторые комментарии (#4396)
- docs(context): исправлено неправильное имя функции в комментарии (#4382)
- docs(readme): переработана и расширена документация для большей ясности и полноты (#4362)
- docs: объявлен выпуск Gin 1.11.0 со ссылкой на блог (#4363)
- docs: задокументирован и завершен выпуск Gin v1.12.0 (#4551)
- docs: переработаны шаблоны вкладов GitHub и поддержки (#4364)
- docs: переработаны рекомендации по внесению вклада с подробными инструкциями (#4365)
- docs: обновлена документация для отражения изменений версии Go (#4552)
- docs: обновлены инструкции документации функции для исправления неработающей ссылки (#4508)
Производительность
- perf(path): замена регулярного выражения на пользовательские функции в redirectTrailingSlash (#4414)
- perf(recovery): оптимизация чтения строк в функции stack (#4466)
- perf(tree): оптимизация синтаксического анализа пути с использованием strings.Count (#4246)
- perf(tree): сокращение распределений в findCaseInsensitivePath (#4417)
Тесты
- test(benchmarks): исправлено неправильное имя функции (#4375)
- test(bytesconv): добавлены тесты для пустых/nil случаев (#4454)
- test(context): использована константа http.StatusContinue вместо магического числа 100 (#4542)
- test(debug): улучшено покрытие тестами debug.go до 100% (#4404)
- test(gin): добавлено полное покрытие тестами пакета ginS (#4442)
- test(gin): разрешены гонки условий в интеграционных тестах (#4453)
- test(render): добавлены полные тесты обработки ошибок (#4541)
- test(render): добавлены полные тесты для рендеринга MsgPack (#4537)