Foy is the Jakarta Servlet 6.1 implementation of the Vidocq ecosystem. It grafts onto the Chappe HTTP transport and pulls its optional CDI from Vauban. Honour the Servlet contract without paying its historical weight: no classpath, no runtime scan, no hot-path reflection.

Origin of the name

Vincent-Louis-Alphonse Foy (1796-1888), French senior civil servant, director of the French telegraph service from 1833 to 1853. Successor (through Pierre-François Marchal) of the Chappe brothers at the head of the Administration centrale de la télégraphie established by royal ordinance on 24 August 1833. Co-inventor of the Foy-Breguet telegraph (1840s), which reused the Chappe code over electric lines. See French Wikipedia.

The metaphor is direct: Foy inherits the Chappe transport. Just as Alphonse Foy in 1833 took over the Chappe brothers' infrastructure to evolve it without throwing away its codes, the Foy module takes over the Chappe HTTP engine to graft the Servlet 6.1 layer on top — same protocol on the surface, redesigned engineering underneath.

At a glance

Implemented spec

Jakarta Servlet 6.1

Repo

https://codeberg.org/Vidocq/foy

Java

25 (LTS), virtual threads

JPMS modules

io.vidocq.foy.api, io.vidocq.foy.core, io.vidocq.foy.chappe, io.vidocq.foy.cdi.vauban

Runtime dependencies

jakarta.servlet-api, jakarta.cdi-api (static), https://codeberg.org/Vidocq/chappe (transport), https://codeberg.org/Vidocq/vauban (CDI)

TCK

⚠️ partial — about 90 % of the official Jakarta Servlet 6.1 TCK on api.* packages. Details here.

Position in the ecosystem

Foy is the servlet layer: it turns a Chappe HTTP connection into Servlet/Filter/Listener execution and exposes the Vauban BeanManager to application beans.

Diagram

Foy shares the Chappe runtime with Cassini (REST 4.0). The same JVM can serve legacy Servlets (Foy) and JAX-RS resources (Cassini) on the same Chappe connector.

Bugs and benchmarks

  • BUG.md — reproducible bugs, hypotheses, status.

  • BENCH.md — JMH/wrk numbers, deltas vs previous run. No performance numbers inline in this doc.