xref: /aosp_15_r20/external/curl/docs/EXPERIMENTAL.md (revision 6236dae45794135f37c4eb022389c904c8b0090d)
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