curl

badc compiles the curl 8.11.1 library from source and builds it three ways – a static archive, a shared library, and an executable that links against each – plus a fourth flavour that links a badc-compiled client against the platform’s installed libcurl to prove the frontend matches the OS ABI.

The vendored library is trimmed to no external dependencies: HTTP, file://, and the WebSocket / URL / multi / easy APIs, with the threaded resolver and IPv6 on. HTTPS is provided by BearSSL when the TLS lane is built (USE_BEARSSL); the system-libcurl flavour gets HTTPS from the OS’s own TLS backend. The other protocols (FTP, SMTP, LDAP, …) are compiled out via the CURL_DISABLE_* set.

Layout

setup.py fetches the pinned tarball (vendor-deps mirror, falling back to curl.se) and drops curl’s lib/ tree in src/ and the public headers in include/curl/. Committed alongside:

Build flavours

The smoke builds every flavour at -O0 and -O:

Running

cargo build --release --manifest-path Cargo.toml
python3 demos/curl/smoke.py

Each built driver runs the offline scenarios plus a file:// transfer and an http:// transfer against a loopback HTTP server the harness starts on 127.0.0.1 – no external network, so it is deterministic under CI.

^ To the top