1*6236dae4SAndroid Build Coastguard Worker<!-- 2*6236dae4SAndroid Build Coastguard WorkerCopyright (C) Daniel Stenberg, <[email protected]>, et al. 3*6236dae4SAndroid Build Coastguard Worker 4*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl 5*6236dae4SAndroid Build Coastguard Worker--> 6*6236dae4SAndroid Build Coastguard Worker 7*6236dae4SAndroid Build Coastguard Worker# Experimental 8*6236dae4SAndroid Build Coastguard Worker 9*6236dae4SAndroid Build Coastguard WorkerSome features and functionality in curl and libcurl are considered 10*6236dae4SAndroid Build Coastguard Worker**EXPERIMENTAL**. 11*6236dae4SAndroid Build Coastguard Worker 12*6236dae4SAndroid Build Coastguard WorkerExperimental support in curl means: 13*6236dae4SAndroid Build Coastguard Worker 14*6236dae4SAndroid Build Coastguard Worker1. Experimental features are provided to allow users to try them out and 15*6236dae4SAndroid Build Coastguard Worker provide feedback on functionality and API etc before they ship and get 16*6236dae4SAndroid Build Coastguard Worker "carved in stone". 17*6236dae4SAndroid Build Coastguard Worker2. You must enable the feature when invoking configure as otherwise curl is 18*6236dae4SAndroid Build Coastguard Worker not built with the feature present. 19*6236dae4SAndroid Build Coastguard Worker3. We strongly advise against using this feature in production. 20*6236dae4SAndroid Build Coastguard Worker4. **We reserve the right to change behavior** of the feature without sticking 21*6236dae4SAndroid Build Coastguard Worker to our API/ABI rules as we do for regular features, as long as it is marked 22*6236dae4SAndroid Build Coastguard Worker experimental. 23*6236dae4SAndroid Build Coastguard Worker5. Experimental features are clearly marked so in documentation. Beware. 24*6236dae4SAndroid Build Coastguard Worker 25*6236dae4SAndroid Build Coastguard Worker## Graduation 26*6236dae4SAndroid Build Coastguard Worker 27*6236dae4SAndroid Build Coastguard Worker1. Each experimental feature should have a set of documented requirements of 28*6236dae4SAndroid Build Coastguard Worker what is needed for that feature to graduate. Graduation means being removed 29*6236dae4SAndroid Build Coastguard Worker from the list of experiments. 30*6236dae4SAndroid Build Coastguard Worker2. An experiment should NOT graduate if it needs test cases to be disabled, 31*6236dae4SAndroid Build Coastguard Worker unless they are for minor features that are clearly documented as not 32*6236dae4SAndroid Build Coastguard Worker provided by the experiment and then the disabling should be managed inside 33*6236dae4SAndroid Build Coastguard Worker each affected test case. 34*6236dae4SAndroid Build Coastguard Worker 35*6236dae4SAndroid Build Coastguard Worker## Experimental features right now 36*6236dae4SAndroid Build Coastguard Worker 37*6236dae4SAndroid Build Coastguard Worker### The Hyper HTTP backend 38*6236dae4SAndroid Build Coastguard Worker 39*6236dae4SAndroid Build Coastguard WorkerGraduation requirements: 40*6236dae4SAndroid Build Coastguard Worker 41*6236dae4SAndroid Build Coastguard Worker- HTTP/1 and HTTP/2 support, including multiplexing 42*6236dae4SAndroid Build Coastguard Worker 43*6236dae4SAndroid Build Coastguard Worker(Hyper is marked for deprecation. It cannot graduate.) 44*6236dae4SAndroid Build Coastguard Worker 45*6236dae4SAndroid Build Coastguard Worker### HTTP/3 support (non-ngtcp2 backends) 46*6236dae4SAndroid Build Coastguard Worker 47*6236dae4SAndroid Build Coastguard WorkerGraduation requirements: 48*6236dae4SAndroid Build Coastguard Worker 49*6236dae4SAndroid Build Coastguard Worker- The used libraries should be considered out-of-beta with a reasonable 50*6236dae4SAndroid Build Coastguard Worker expectation of a stable API going forward. 51*6236dae4SAndroid Build Coastguard Worker 52*6236dae4SAndroid Build Coastguard Worker- Using HTTP/3 with the given build should perform without risking busy-loops 53*6236dae4SAndroid Build Coastguard Worker 54*6236dae4SAndroid Build Coastguard Worker### The Rustls backend 55*6236dae4SAndroid Build Coastguard Worker 56*6236dae4SAndroid Build Coastguard WorkerGraduation requirements: 57*6236dae4SAndroid Build Coastguard Worker 58*6236dae4SAndroid Build Coastguard Worker- a reasonable expectation of a stable API going forward. 59*6236dae4SAndroid Build Coastguard Worker 60*6236dae4SAndroid Build Coastguard Worker## ECH 61*6236dae4SAndroid Build Coastguard Worker 62*6236dae4SAndroid Build Coastguard WorkerUse of the HTTPS resource record and Encrypted Client Hello (ECH) when using 63*6236dae4SAndroid Build Coastguard WorkerDoH 64*6236dae4SAndroid Build Coastguard Worker 65*6236dae4SAndroid Build Coastguard WorkerGraduation requirements: 66*6236dae4SAndroid Build Coastguard Worker 67*6236dae4SAndroid Build Coastguard Worker- ECH support exists in at least one widely used TLS library apart from 68*6236dae4SAndroid Build Coastguard Worker BoringSSL and wolfSSL. 69*6236dae4SAndroid Build Coastguard Worker 70*6236dae4SAndroid Build Coastguard Worker- feedback from users saying that ECH works for their use cases 71*6236dae4SAndroid Build Coastguard Worker 72*6236dae4SAndroid Build Coastguard Worker- it has been given time to mature, so no earlier than April 2025 (twelve 73*6236dae4SAndroid Build Coastguard Worker months after being added here) 74