Avatar for the aio-libs user
aio-libs
aiohttp
BlogDocsChangelog

Support using system llhttp library (#10759)

#10760
Comparing
mgorny:system-llhttp
(
7ce83ea
) with
master
(
f626aeb
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
58
New
0
Dropped
0
Ignored
6

Benchmarks

Passed

test_resolve_prefix_resources_many_prefix_many_plain[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_prefix_resources_many_prefix_many_plain[pyloop]
CodSpeed Performance Gauge
0%
4.6 ms
4.6 ms
test_one_hundred_get_requests_with_1024_chunked_payload[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_get_requests_with_1024_chunked_payload[pyloop]
CodSpeed Performance Gauge
0%
35.5 ms
35.4 ms
test_simple_web_response
tests/test_benchmarks_web_response.py::test_simple_web_response
CodSpeed Performance Gauge
0%
456 µs
454.8 µs
test_one_hundred_get_requests_with_30000_chunked_payload[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_get_requests_with_30000_chunked_payload[pyloop]
CodSpeed Performance Gauge
0%
40.5 ms
40.4 ms
test_one_hundred_get_requests_with_1024_content_length_payload[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_get_requests_with_1024_content_length_payload[pyloop]
CodSpeed Performance Gauge
0%
34.9 ms
34.8 ms
test_ten_streamed_responses_iter_chunked_65536[pyloop]
tests/test_benchmarks_client.py::test_ten_streamed_responses_iter_chunked_65536[pyloop]
CodSpeed Performance Gauge
0%
23 ms
22.9 ms
test_resolve_dynamic_resource_url_with_many_static_routes[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_dynamic_resource_url_with_many_static_routes[pyloop]
CodSpeed Performance Gauge
0%
3.6 ms
3.6 ms
test_ten_streamed_responses_iter_any[pyloop]
tests/test_benchmarks_client.py::test_ten_streamed_responses_iter_any[pyloop]
CodSpeed Performance Gauge
0%
21.6 ms
21.6 ms
test_send_one_hundred_websocket_compressed_messages[isal.isal_zlib-pyloop]
tests/test_benchmarks_http_websocket.py::test_send_one_hundred_websocket_compressed_messages[isal.isal_zlib-pyloop]
CodSpeed Performance Gauge
0%
4.7 ms
4.7 ms
test_one_hundred_simple_post_requests[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_simple_post_requests[pyloop]
CodSpeed Performance Gauge
0%
36.6 ms
36.5 ms
test_load_cookies_into_temp_cookiejar
tests/test_benchmarks_cookiejar.py::test_load_cookies_into_temp_cookiejar
CodSpeed Performance Gauge
0%
199.5 µs
199.1 µs
test_one_hundred_get_requests_with_30000_content_length_payload[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_get_requests_with_30000_content_length_payload[pyloop]
CodSpeed Performance Gauge
0%
39.1 ms
39 ms
test_one_thousand_round_trip_websocket_binary_messages[pyloop-small]
tests/test_benchmarks_client_ws.py::test_one_thousand_round_trip_websocket_binary_messages[pyloop-small]
CodSpeed Performance Gauge
0%
16.2 ms
16.2 ms
test_create_client_request_with_headers[pyloop]
tests/test_benchmarks_client_request.py::test_create_client_request_with_headers[pyloop]
CodSpeed Performance Gauge
0%
68.8 µs
68.8 µs
test_resolve_dynamic_resource_url_with_many_dynamic_routes[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_dynamic_resource_url_with_many_dynamic_routes[pyloop]
CodSpeed Performance Gauge
0%
3.5 ms
3.5 ms
test_one_hundred_simple_get_requests_multiple_methods_route[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_simple_get_requests_multiple_methods_route[pyloop]
CodSpeed Performance Gauge
0%
31.9 ms
31.9 ms
test_simple_web_file_response[pyloop]
tests/test_benchmarks_web_fileresponse.py::test_simple_web_file_response[pyloop]
CodSpeed Performance Gauge
0%
78 ms
77.9 ms
test_one_hundred_simple_get_requests[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_simple_get_requests[pyloop]
CodSpeed Performance Gauge
0%
32.2 ms
32.2 ms
test_send_one_hundred_websocket_compressed_messages[zlib_ng.zlib_ng-pyloop]
tests/test_benchmarks_http_websocket.py::test_send_one_hundred_websocket_compressed_messages[zlib_ng.zlib_ng-pyloop]
CodSpeed Performance Gauge
0%
2.1 ms
2.1 ms
test_ten_streamed_responses_iter_chunks[pyloop]
tests/test_benchmarks_client.py::test_ten_streamed_responses_iter_chunks[pyloop]
CodSpeed Performance Gauge
0%
16.1 ms
16 ms
test_ten_web_middlewares[pyloop]
tests/test_benchmarks_web_middleware.py::test_ten_web_middlewares[pyloop]
CodSpeed Performance Gauge
0%
35 ms
34.9 ms
test_one_hundred_get_requests_with_512kib_content_length_payload[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_get_requests_with_512kib_content_length_payload[pyloop]
CodSpeed Performance Gauge
0%
164.5 ms
164.4 ms
test_send_one_hundred_large_websocket_text_messages[pyloop]
tests/test_benchmarks_http_websocket.py::test_send_one_hundred_large_websocket_text_messages[pyloop]
CodSpeed Performance Gauge
0%
544.8 µs
544.5 µs
test_ten_streamed_responses_iter_chunked_4096[pyloop]
tests/test_benchmarks_client.py::test_ten_streamed_responses_iter_chunked_4096[pyloop]
CodSpeed Performance Gauge
0%
28 ms
28 ms
test_send_one_hundred_websocket_compressed_messages[zlib-pyloop]
tests/test_benchmarks_http_websocket.py::test_send_one_hundred_websocket_compressed_messages[zlib-pyloop]
CodSpeed Performance Gauge
0%
3.1 ms
3.1 ms
test_get_request_with_251308_compressed_chunked_payload[zlib_ng.zlib_ng-pyloop]
tests/test_benchmarks_client.py::test_get_request_with_251308_compressed_chunked_payload[zlib_ng.zlib_ng-pyloop]
CodSpeed Performance Gauge
0%
236.3 ms
236.3 ms
test_get_request_with_251308_compressed_chunked_payload[isal.isal_zlib-pyloop]
tests/test_benchmarks_client.py::test_get_request_with_251308_compressed_chunked_payload[isal.isal_zlib-pyloop]
CodSpeed Performance Gauge
0%
71 ms
71 ms
test_get_request_with_251308_compressed_chunked_payload[zlib-pyloop]
tests/test_benchmarks_client.py::test_get_request_with_251308_compressed_chunked_payload[zlib-pyloop]
CodSpeed Performance Gauge
0%
426 ms
426 ms
test_read_large_binary_websocket_messages[pyloop]
tests/test_benchmarks_http_websocket.py::test_read_large_binary_websocket_messages[pyloop]
CodSpeed Performance Gauge
0%
9 ms
9 ms
test_one_thousand_round_trip_websocket_binary_messages[pyloop-large]
tests/test_benchmarks_client_ws.py::test_one_thousand_round_trip_websocket_binary_messages[pyloop-large]
CodSpeed Performance Gauge
0%
110.5 ms
110.5 ms
test_one_thousand_large_round_trip_websocket_text_messages[pyloop]
tests/test_benchmarks_client_ws.py::test_one_thousand_large_round_trip_websocket_text_messages[pyloop]
CodSpeed Performance Gauge
0%
21.7 ms
21.7 ms
test_web_response_with_text_body
tests/test_benchmarks_web_response.py::test_web_response_with_text_body
CodSpeed Performance Gauge
0%
670.1 µs
670.2 µs
test_client_receive_large_websocket_compressed_messages[zlib-pyloop]
tests/test_benchmarks_client_ws.py::test_client_receive_large_websocket_compressed_messages[zlib-pyloop]
CodSpeed Performance Gauge
0%
50.3 ms
50.3 ms
test_client_send_large_websocket_compressed_messages[zlib-pyloop]
tests/test_benchmarks_client_ws.py::test_client_send_large_websocket_compressed_messages[zlib-pyloop]
CodSpeed Performance Gauge
0%
53.5 ms
53.5 ms
test_create_client_request_with_cookies[pyloop]
tests/test_benchmarks_client_request.py::test_create_client_request_with_cookies[pyloop]
CodSpeed Performance Gauge
0%
126.4 µs
126.5 µs
test_resolve_single_fixed_url_with_many_routes[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_single_fixed_url_with_many_routes[pyloop]
CodSpeed Performance Gauge
0%
879.3 µs
879.9 µs
test_simple_web_file_response_not_modified[pyloop]
tests/test_benchmarks_web_fileresponse.py::test_simple_web_file_response_not_modified[pyloop]
CodSpeed Performance Gauge
0%
54.9 ms
54.9 ms
test_send_one_hundred_websocket_text_messages[pyloop]
tests/test_benchmarks_http_websocket.py::test_send_one_hundred_websocket_text_messages[pyloop]
CodSpeed Performance Gauge
0%
560.4 µs
560.9 µs
test_send_client_request_one_hundred[pyloop]
tests/test_benchmarks_client_request.py::test_send_client_request_one_hundred[pyloop]
CodSpeed Performance Gauge
0%
2.4 ms
2.4 ms
test_resolve_multiple_fixed_url_with_many_routes[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_multiple_fixed_url_with_many_routes[pyloop]
CodSpeed Performance Gauge
0%
2.2 ms
2.2 ms
test_one_thousand_round_trip_websocket_text_messages[pyloop]
tests/test_benchmarks_client_ws.py::test_one_thousand_round_trip_websocket_text_messages[pyloop]
CodSpeed Performance Gauge
0%
16.6 ms
16.7 ms
test_resolve_multiple_level_fixed_url_with_many_routes[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_multiple_level_fixed_url_with_many_routes[pyloop]
CodSpeed Performance Gauge
0%
8.5 ms
8.5 ms
test_one_hundred_json_post_requests[pyloop]
tests/test_benchmarks_client.py::test_one_hundred_json_post_requests[pyloop]
CodSpeed Performance Gauge
0%
38.3 ms
38.4 ms
test_web_response_with_headers
tests/test_benchmarks_web_response.py::test_web_response_with_headers
CodSpeed Performance Gauge
0%
686.6 µs
688.7 µs
test_resolve_gitapi_root[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_gitapi_root[pyloop]
CodSpeed Performance Gauge
0%
2 ms
2 ms
test_resolve_root_route[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_root_route[pyloop]
CodSpeed Performance Gauge
0%
876.3 µs
879.2 µs
test_simple_web_stream_response
tests/test_benchmarks_web_response.py::test_simple_web_stream_response
CodSpeed Performance Gauge
0%
247.1 µs
248 µs
test_resolve_gitapi_subapps[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_gitapi_subapps[pyloop]
CodSpeed Performance Gauge
0%
294.9 ms
296 ms
test_simple_web_file_sendfile_fallback_response[pyloop]
tests/test_benchmarks_web_fileresponse.py::test_simple_web_file_sendfile_fallback_response[pyloop]
CodSpeed Performance Gauge
0%
83.7 ms
84 ms
test_web_response_with_bytes_body
tests/test_benchmarks_web_response.py::test_web_response_with_bytes_body
CodSpeed Performance Gauge
0%
551.7 µs
554.1 µs
test_resolve_static_root_route[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_static_root_route[pyloop]
CodSpeed Performance Gauge
-1%
974 µs
979.1 µs
test_serialize_headers
tests/test_benchmarks_http_writer.py::test_serialize_headers
CodSpeed Performance Gauge
-1%
850.8 µs
855.7 µs
test_resolve_root_route_with_many_fixed_routes[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_root_route_with_many_fixed_routes[pyloop]
CodSpeed Performance Gauge
-1%
872 µs
877.3 µs
test_client_request_update_cookies[pyloop]
tests/test_benchmarks_client_request.py::test_client_request_update_cookies[pyloop]
CodSpeed Performance Gauge
-1%
167.9 µs
169 µs
test_resolve_gitapi[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_gitapi[pyloop]
CodSpeed Performance Gauge
-1%
291.7 ms
293.8 ms
test_read_one_hundred_websocket_text_messages[pyloop]
tests/test_benchmarks_http_websocket.py::test_read_one_hundred_websocket_text_messages[pyloop]
CodSpeed Performance Gauge
-1%
206.4 µs
207.9 µs
test_resolve_dynamic_resource_url_with_many_dynamic_routes_with_common_prefix[pyloop]
tests/test_benchmarks_web_urldispatcher.py::test_resolve_dynamic_resource_url_with_many_dynamic_routes_with_common_prefix[pyloop]
CodSpeed Performance Gauge
-1%
245.7 ms
247.6 ms
test_send_one_hundred_websocket_text_messages_with_mask[pyloop]
tests/test_benchmarks_http_websocket.py::test_send_one_hundred_websocket_text_messages_with_mask[pyloop]
CodSpeed Performance Gauge
-1%
793.2 µs
799.9 µs

Ignored

test_one_hundred_get_requests_iter_chunks_on_512kib_chunked_payload[pyloop]Ignored
tests/test_benchmarks_client.py::test_one_hundred_get_requests_iter_chunks_on_512kib_chunked_payload[pyloop]
CodSpeed Performance Gauge
0%
96.9 ms
96.8 ms
test_one_hundred_get_requests_with_512kib_chunked_payload[pyloop]Ignored
tests/test_benchmarks_client.py::test_one_hundred_get_requests_with_512kib_chunked_payload[pyloop]
CodSpeed Performance Gauge
0%
166.1 ms
166 ms
test_client_receive_large_websocket_compressed_messages[isal.isal_zlib-pyloop]Ignored
tests/test_benchmarks_client_ws.py::test_client_receive_large_websocket_compressed_messages[isal.isal_zlib-pyloop]
CodSpeed Performance Gauge
0%
19.9 ms
19.9 ms
test_client_receive_large_websocket_compressed_messages[zlib_ng.zlib_ng-pyloop]Ignored
tests/test_benchmarks_client_ws.py::test_client_receive_large_websocket_compressed_messages[zlib_ng.zlib_ng-pyloop]
CodSpeed Performance Gauge
0%
31 ms
31.1 ms
test_client_send_large_websocket_compressed_messages[isal.isal_zlib-pyloop]Ignored
tests/test_benchmarks_client_ws.py::test_client_send_large_websocket_compressed_messages[isal.isal_zlib-pyloop]
CodSpeed Performance Gauge
0%
19.9 ms
19.9 ms
test_client_send_large_websocket_compressed_messages[zlib_ng.zlib_ng-pyloop]Ignored
tests/test_benchmarks_client_ws.py::test_client_send_large_websocket_compressed_messages[zlib_ng.zlib_ng-pyloop]
CodSpeed Performance Gauge
0%
30.7 ms
30.8 ms

Commits

Click on a commit to change the comparison range
Base
master
f626aeb
0%
Support using system llhttp library (#10759) Add a new `USE_SYSTEM_DEPS` environment variable that can be used to enable building against the system install of llhttp library rather than the vendored one. This is implemented using the `pkgconfig` package to query llhttp install via pkg-config. The package is only used when `USE_SYSTEM_DEPS` is enabled, however due to limitations of `pyproject.toml` it is listed unconditionally as a build dependency. That said, flake8 claims that the dependency is not listed and I don't really know how to solve that: ``` setup.py:36:5: I900 'pkgconfig' not listed as a requirement ``` I have also updated `aiohttp/_cparser.pxd` to reference the `llhttp.h` header via its name rather than full path. I have poisoned the system header to confirm that the correct header is used both when building against the system library and the vendored library.
cb9ac7d
16 days ago
by mgorny
0%
Implement review comments
0b7c184
15 days ago
by mgorny
0%
Add a fallback to "generic" USE_SYSTEM_DEPS envvar
9eff9e8
15 days ago
by mgorny
0%
Apply suggestions from code review Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <wk.cvs.github@sydorenko.org.ua>
006048f
14 days ago
by mgorny
0%
Document build-time environment variables
c9d281c
14 days ago
by mgorny
0%
Fix a typo
7ce83ea
14 days ago
by mgorny
© 2025 CodSpeed Technology
Home Terms PrivacyDocs