Releases: HashLoad/horse
Releases · HashLoad/horse
Release list
3.3.5
Destaques
- Corrige a compilação do provider padrão no FPC 3.3.1+ para Windows, eliminando o bloco
varvazio produzido pelos condicionais de plataforma. - Aplica
TCP_NODELAYaos sockets aceitos no FPC/Windows por meio deWinSock2.setsockopt, evitando a interação entre Nagle e delayed ACK nas conexões HTTP/1.1 keep-alive reutilizadas (#565, #566). - Adiciona ao CI um teste de regressão real para WebSocket no provider FPC/epoll, cobrindo
EAGAIN, conexão ociosa, envio posterior de frame e encerramento abrupto (#564). - Atualiza a versão interna e o manifesto Boss para 3.3.5.
Validação
- 74/74 combinações de compilação aprovadas em Delphi 10, 11, 12, 13 e FPC/Linux.
- 24/24 combinações DUnitX aprovadas; o cenário Delphi 11/HttpSys que apresentou uma instabilidade transitória passou 207/207 no rerun isolado.
- Regressão WebSocket FPC 3.2.2/epoll: 5/5 verificações aprovadas no Docker.
- FPC trunk 3.3.1/Linux: keep-alive com mediana de 0,153 ms e p95 de 0,274 ms.
- FPC trunk 3.3.1/Win64: compilação cruzada, execução nativa no Windows e keep-alive com mediana de 0,249 ms e p95 de 0,384 ms.
Changelog completo: 3.3.4...3.3.5
3.3.4
Destaques
- Corrige a latência de aproximadamente 44 ms em conexões HTTP/1.1 keep-alive no provider padrão do FPC 3.3.1, aplicando
TCP_NODELAYsem substituir handlers customizados ou TLS. - Adiciona teste de regressão TCP real no FPC 3.3.1 e mantém compatibilidade com FPC 3.2.2.
- Corrige o roteamento HttpSys quando um parâmetro contém barra percent-encoded (
%2F). - Restaura o fallback de
ContentStreamnos adapters self-hosted sem acoplar adapters a Apache, CGI ou ISAPI. - Atualiza a versão interna do Horse e o manifesto Boss para 3.3.4.
Outras mudanças desde 3.3.3
- Roteamento UTF-8 e semântica de paths codificados reforçados (#556).
- Seleção e ciclo de vida do provider nghttp2 ajustados (#555).
- Tratamento correto de
EAGAINe fechamento concorrente no WebSocket/Epoll (#549). - Isolamento de adapters brutos em módulos Apache (#560).
- Matriz de compilação e limpeza da suíte de testes estabilizadas (#563).
Validação
- 74/74 combinações de compilação aprovadas em Delphi 10, 11, 12, 13 e FPC/Linux.
- 24/24 suítes DUnitX aprovadas em Default, Radix, HttpSys e IOCP.
- Integração FPC 3.2.2 e regressão WebSocket/Epoll aprovadas.
- Regressão FPC 3.3.1: mediana keep-alive de 0,088 ms (antes, aproximadamente 44 ms).
Changelog completo: 3.3.3...3.3.4
3.3.3
What's Changed
- feat: Res.Send(S) now writes stream bytes to the response body by @freitasjca in #540
- Fix IOCP connection context lifetime by @regyssilveira in #543
- Corrige compatibilidade do comparador no FPC 3.2.2 e estabiliza a suíte de testes by @regyssilveira in #544
- fix(streaming): exclude HORSE_PROVIDER_NGHTTP2 from the default stream-writer registration by @freitasjca in #552
- fix(websocket): type FeedBytes' parameter as the class, removing an interface-to-class cast that fails on FPC by @freitasjca in #551
- feat(websocket): let providers signal a WebSocket upgrade without the HTTP/1.1 Upgrade header (RFC 8441) by @freitasjca in #550
- perf(epoll): run the HTTP pipeline inline in the worker instead of hopping through TTask.Run by @festerzuki in #553
- fix(cookies): correct minimum compiler version for TCookie.HttpOnly by @fabricio-sisplan in #559
New Contributors
- @festerzuki made their first contribution in #553
- @fabricio-sisplan made their first contribution in #559
Full Changelog: 3.3.2...3.3.3
3.3.2
3.3.1
3.3.0
What's Changed
- Update Horse.Constants.pas by @jcinfoes in #449
- Add compatibility with horse-manipulate-request middleware by @igorbastosib in #450
- Expose private members in THorseCoreParamField by @havrlisan in #456
- fix(tests): modernize test suite for compatibility with Horse 3.x by @ViniAbreu in #457
- Additive changes to support CrossSocket high‑performance provider by @freitasjca in #443
- Follow-on Horse refinements for the CrossSocket provider (post-#443) by @freitasjca in #459
- feat(horse): PATCH-HORSE-2: three-axis defines (Provider × AppType × Host) + bilingual doc tree + integration-test scaffold by @freitasjca in #460
- fix: use correct import for
TRequestby @msbit in #461 - feat: integrate CrossSocket / mORMot transport providers + PATCH-HORSE-2 three-axis defines + bilingual docs by @freitasjca in #462
- Console sample by @ViniAbreu in #463
- Add Patches for CrossSocket and mORMot provider support and patches for Horse core by @freitasjca in #465
- fix: AddCallback middleware no longer trips the duplicate-route guard by @freitasjca in #466
- chore: restore CRLF line endings on Horse.Core.pas by @freitasjca in #467
- fix: duplicate-route guard false positive + session ownership + FPC ServerPort fix by @freitasjca in #468
- Request/Response ownership fixes, duplicate-route guard, and FPC adapter fixes by @freitasjca in #470
- New tests by @ViniAbreu in #471
- Feature/httpsys provider by @regyssilveira in #472
- feat(httpsys): add Lazarus/FPC compatibility on Windows by @regyssilveira in #473
- RFC 6265 cookie support + session/FPC and duplicate-route fixes by @freitasjca in #474
- Feature/provider epoll by @regyssilveira in #475
- Feature/optimize httpsys by @regyssilveira in #476
- Feature/optimize delphi epoll by @regyssilveira in #477
- Perf/epoll zero allocation by @regyssilveira in #478
- Perf/epoll zero allocation by @regyssilveira in #479
- Perf/httpsys optimization by @regyssilveira in #480
- Perf/epoll core optimizations by @regyssilveira in #481
- Fix/routing recursion and method resolution by @regyssilveira in #483
- Sonar issues by @ViniAbreu in #485
- feat: add HORSE_PROVIDER_ICS define guards for OverbyteICS transport provider by @freitasjca in #486
- feat: add HORSE_PROVIDER_ICS define guards for OverbyteICS transport provider by @freitasjca in #487
- Benchmark comparison by @regyssilveira in #488
- Fix issues 411 343 by @regyssilveira in #490
- Feature/issue 366 wildcard routing by @regyssilveira in #491
- Feature/issue 357 group route tests by @regyssilveira in #493
- fix(core): fix compilation error on Delphi 10 Seattle and older (disc… by @regyssilveira in #494
- fix(core): resolve generic route compilation error on FPC 3.2.2 by @regyssilveira in #495
- infra: adicionar docker-compose para testes e atualizar documentacao by @regyssilveira in #497
- fix(fpc): fix callback compatibility with official middlewares (issue… by @regyssilveira in #499
- fix: add missing Allow header on 405 responses (issue #500) by @regyssilveira in #501
- Feature/ai coding skills by @regyssilveira in #502
- Feature/restructure ai skills by @regyssilveira in #504
- fix(core): compatibilidade com compiladores legados (Delphi 10 Seattl… by @regyssilveira in #505
- Feature/iocp provider by @regyssilveira in #506
- Feature/horse core optimization by @regyssilveira in #507
- feat: add MatchedRoute and State support for telemetry by @regyssilveira in #508
- docs: add telemetry section and documents for horse-opentelemetry and… by @regyssilveira in #509
- Fix/epoll iocp headers by @regyssilveira in #510
- Feature/route level middlewares by @regyssilveira in #511
- feat: implement native global error handler (OnError) by @regyssilveira in #512
- docs: sync main READMEs and docs with recent middleware releases by @regyssilveira in #513
- Feature/lifecycle hooks by @regyssilveira in #514
- feat: implement graceful shutdown support in core and console providers by @regyssilveira in #515
- Feature/dependency injection by @regyssilveira in #516
- Feature/multi instance by @regyssilveira in #517
- Feature/server lifecycle by @regyssilveira in #518
- feat(core): centralize and optimize memory buffering using IMemoryBuf… by @regyssilveira in #519
- docs: add horse-dto to third-party middlewares list by @regyssilveira in #520
- Feature/telemetry hooks by @regyssilveira in #521
- Feature/advanced routing by @regyssilveira in #522
- docs: adiciona manuais de banco, seguranca, ssl, arquitetura e atuali… by @regyssilveira in #523
- Fix/issue 524 by @regyssilveira in #525
- Feature/grpc provider by @regyssilveira in #526
- fix(fpc): fix constref incompatibility in IEqualityComparer u… by @regyssilveira in #528
- fix(fpc): acerto para evitar erro ao compilar em linux 64 by @regyssilveira in #530
- Feature/websocket by @regyssilveira in #532
- Feature/streaming by @regyssilveira in #533
- Provider reconciliation: FPC-trunk compat, IOCP/Epoll/HTTP.sys fixes, streaming robustness by @freitasjca in #534
- fix(core): fix Delphi compilation error E2026 caused by FPC_FULLVERSION by @regyssilveira in #537
- fix(routing): fix parameter tag overwriting and add configurable case… by @regyssilveira in #538
New Contributors
- @havrlisan made their first contribution in #456
- @msbit made their first contribution in #461
- @regyssilveira made their first contribution in #472
Full Changelog: 3.2.0...3.3.0
3.2.0
What's Changed
- Add horse-documentation link to README by @weslleycapelari in #437
- Add horse-validator to the README.md list by @weslleycapelari in #444
- Campos personalizados em EHorseException by @daviddev16 in #445
- Update Web.WebConst.pas by @jcinfoes in #447
- Adjust variable declaration and remove FPC directive by @jcinfoes in #448
New Contributors
- @weslleycapelari made their first contribution in #437
- @daviddev16 made their first contribution in #445
- @jcinfoes made their first contribution in #447
Full Changelog: 3.1.9...3.2.0
3.1.9
What's Changed
- Remove alterações PR (#364) by @ViniAbreu in #435
- #434 - fix: Constant HORSE_VERSION by @ViniAbreu in #436
Full Changelog: 3.1.8...3.1.9
3.1.8
3.1.7
What's Changed
- Implementacoes para tratamento de QueryParams como List by @fabiohmribeiro in #391
- Na versão Seattle o Body do Request não esta reconhecendo caracteres especiais by @ds-sampaio in #364
- Added Support for "Delphi 12 Athens" in Update README.md by @ShaunRoselt in #420
- Update LICENSE Copyright to 2025 by @ShaunRoselt in #421
- The HORSE_NOPROVIDER define has been included. It allows packages to … by @mppbg in #423
- Fixed spelling mistake in
HorseConstants.pasby @ShaunRoselt in #432 - Limpeza e reorganização de units by @ViniAbreu in #427
New Contributors
- @fabiohmribeiro made their first contribution in #391
- @ds-sampaio made their first contribution in #364
- @ShaunRoselt made their first contribution in #420
- @mppbg made their first contribution in #423
- @ViniAbreu made their first contribution in #427
Full Changelog: 3.1.6...3.1.7