Skip to content

feat: merge changes from main, compat with apple sectrust - #1

Merged
Cupertinum merged 12 commits into
Cupertinum:ngtcp2-featurefrom
nktnet1:ngtcp2-feature-patched
Oct 10, 2026
Merged

Cupertinum merged 12 commits into
Cupertinum:ngtcp2-featurefrom
nktnet1:ngtcp2-feature-patched

Conversation

@nktnet1

@nktnet1 nktnet1 commented Oct 6, 2026

Copy link
Copy Markdown

sagebind and others added 10 commits October 5, 2026 21:43
Alex has transferred primary maintainership of curl-rust to me, which
changed the project URL in GitHub. Update the links in the README and
manifests to the new location. Also add myself to the manifest authors
so that it doesn't seem too weird whenever I publish the next version
(see sagebind#672).
Resolve issues in the `bump` branch created by @alexcrichton.

Resolves sagebind#662.

---------

Co-authored-by: Alex Crichton <alex@alexcrichton.com>
Co-authored-by: Stephen M. Coakley <me@stephencoakley.com>
Resolves sagebind#669.

```sh
$ cargo test --features apple-sectrust
   Compiling curl-sys v0.4.90+curl-8.21.0 (/Users/khiettamnguyen/nktnet/forks/curl-rust/curl-sys)
   Compiling curl v0.4.50 (/Users/khiettamnguyen/nktnet/forks/curl-rust)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 7.67s
     Running unittests src/lib.rs (target/debug/deps/curl-6e29ce0a7645e901)

running 4 tests
test easy::handler::double_seconds_to_duration_sub_second1 ... ok
test easy::handler::double_seconds_to_duration_sub_second2 ... ok
test easy::handler::double_seconds_to_duration_whole_second ... ok
test tests::is_initialized_before_main ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/apple_sectrust.rs (target/debug/deps/apple_sectrust-c919398c06f98bc5)

running 1 test
test bundled_build_enables_apple_sectrust ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/atexit.rs (target/debug/deps/atexit-3a96f026124f4a9f)
Finishing...
     Running tests/easy.rs (target/debug/deps/easy-fce254703c9a5ff9)

running 37 tests
test dns_servers ... ok
test check_unix_socket ... ok
test download_zero_size ... ok
test misc ... ok
test noproxy ... ignored
test abort_read ... ok
test custom_headers ... ok
test get_smoke ... ok
test accept_encoding ... ok
test get_path ... ok
test cookie ... ok
test download_nonzero_size ... ok
test getters ... ok
test headers ... ok
test follow_location ... ok
test pause_write_then_resume ... ok
test path_as_is ... ok
test perform_in_perform_is_bad ... ok
test post2 ... ok
test post1 ... ok
test fail_on_error ... ok
test post3 ... ok
test port ... ok
test test_connect_timeout ... ok
test panic_in_callback - should panic ... ok
test progress ... ok
test test_timeout ... ok
test proxy ... ok
test url_encoding ... ok
test resolve ... ok
test put ... ok
test referer ... ok
test upload_nonzero_size ... ok
test upload_zero_size ... ok
test useragent ... ok
test userpass ... ok
test write_callback ... ok

test result: ok. 36 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/multi.rs (target/debug/deps/multi-d9ab970d83882b9d)

running 3 tests
test smoke ... ok
test smoke2 ... ok
test upload_lots ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running tests/post.rs (target/debug/deps/post-8d66756d76e214c9)

running 3 tests
test file ... ok
test custom ... ok
test buffer ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/protocols.rs (target/debug/deps/protocols-6f686c2e1927b2ef)

running 1 test
test static_with_ftp_disabled ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests curl

running 15 tests
test src/easy/handler.rs - easy::handler::Easy2<H>::resolve (line 2083) - compile ... ok
test src/easy/handle.rs - easy::handle::Easy::read_function (line 303) - compile ... ok
test src/easy/handle.rs - easy::handle::Easy::read_function (line 288) - compile ... ok
test src/lib.rs - (line 18) - compile ... ok
test src/easy/handle.rs - easy::handle::Easy (line 41) ... ok
test src/easy/handler.rs - easy::handler::Easy2<H>::http_headers (line 1580) ... ok
test src/easy/handle.rs - easy::handle::Easy::write_function (line 231) ... ok
test src/easy/handle.rs - easy::handle::Easy (line 33) ... ok
test src/easy/handle.rs - easy::handle::Easy::header_function (line 501) ... ok
test src/easy/handle.rs - easy::handle::Easy (line 57) ... ok
test src/easy/handle.rs - easy::handle::Easy::header_function (line 517) ... ok
test src/easy/handle.rs - easy::handle::Easy::write_function (line 217) ... ok
test src/multi.rs - multi::Multi::wait (line 598) ... ok
test src/easy/handler.rs - easy::handler::Easy2 (line 357) ... ok
test src/easy/handler.rs - easy::handler::Handler (line 32) ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.72s

curl-rust(apple-sectrust-tls)$ gs
On branch apple-sectrust-tls
nothing to commit, working tree clean
curl-rust(apple-sectrust-tls)$ gp
Enumerating objects: 26, done.
Counting objects: 100% (26/26), done.
Delta compression using up to 12 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 2.60 KiB | 2.60 MiB/s, done.
Total 16 (delta 12), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (12/12), completed with 9 local objects.
remote: 
remote: Create a pull request for 'apple-sectrust-tls' on GitHub by visiting:
remote:      https://github.com/nktnet1/curl-rust/pull/new/apple-sectrust-tls
remote: 
To github.com:nktnet1/curl-rust.git
 * [new branch]      apple-sectrust-tls -> apple-sectrust-tls
curl-rust(apple-sectrust-tls)$ 
curl-rust(apple-sectrust-tls)$ cargo test --features apple-sectrust
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
     Running unittests src/lib.rs (target/debug/deps/curl-6e29ce0a7645e901)

running 4 tests
test easy::handler::double_seconds_to_duration_sub_second2 ... ok
test easy::handler::double_seconds_to_duration_sub_second1 ... ok
test tests::is_initialized_before_main ... ok
test easy::handler::double_seconds_to_duration_whole_second ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/apple_sectrust.rs (target/debug/deps/apple_sectrust-c919398c06f98bc5)

running 1 test
test bundled_build_enables_apple_sectrust ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/atexit.rs (target/debug/deps/atexit-3a96f026124f4a9f)
Finishing...
     Running tests/easy.rs (target/debug/deps/easy-fce254703c9a5ff9)

running 37 tests
test dns_servers ... ok
test check_unix_socket ... ok
test abort_read ... ok
test custom_headers ... ok
test noproxy ... ignored
test misc ... ok
test download_nonzero_size ... ok
test get_smoke ... ok
test download_zero_size ... ok
test accept_encoding ... ok
test cookie ... ok
test getters ... ok
test get_path ... ok
test headers ... ok
test follow_location ... ok
test path_as_is ... ok
test pause_write_then_resume ... ok
test fail_on_error ... ok
test perform_in_perform_is_bad ... ok
test test_connect_timeout ... ok
test test_timeout ... ok
test panic_in_callback - should panic ... ok
test url_encoding ... ok
test post2 ... ok
test progress ... ok
test port ... ok
test post3 ... ok
test post1 ... ok
test proxy ... ok
test resolve ... ok
test put ... ok
test referer ... ok
test upload_nonzero_size ... ok
test upload_zero_size ... ok
test useragent ... ok
test userpass ... ok
test write_callback ... ok

test result: ok. 36 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/multi.rs (target/debug/deps/multi-d9ab970d83882b9d)

running 3 tests
test smoke ... ok
test smoke2 ... ok
test upload_lots ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running tests/post.rs (target/debug/deps/post-8d66756d76e214c9)

running 3 tests
test buffer ... ok
test custom ... ok
test file ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/protocols.rs (target/debug/deps/protocols-6f686c2e1927b2ef)

running 1 test
test static_with_ftp_disabled ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests curl

running 15 tests
test src/easy/handler.rs - easy::handler::Easy2<H>::resolve (line 2083) - compile ... ok
test src/easy/handle.rs - easy::handle::Easy::read_function (line 303) - compile ... ok
test src/easy/handle.rs - easy::handle::Easy::read_function (line 288) - compile ... ok
test src/lib.rs - (line 18) - compile ... ok
test src/easy/handle.rs - easy::handle::Easy (line 57) ... ok
test src/easy/handler.rs - easy::handler::Easy2<H>::http_headers (line 1580) ... ok
test src/easy/handle.rs - easy::handle::Easy (line 41) ... ok
test src/easy/handle.rs - easy::handle::Easy::write_function (line 231) ... ok
test src/easy/handle.rs - easy::handle::Easy (line 33) ... ok
test src/multi.rs - multi::Multi::wait (line 598) ... ok
test src/easy/handle.rs - easy::handle::Easy::write_function (line 217) ... ok
test src/easy/handle.rs - easy::handle::Easy::header_function (line 501) ... ok
test src/easy/handler.rs - easy::handler::Handler (line 32) ... ok
test src/easy/handle.rs - easy::handle::Easy::header_function (line 517) ... ok
test src/easy/handler.rs - easy::handler::Easy2 (line 357) ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.91s
```
…agebind#595)

Fixes sagebind#589. `RefCell`'s interface cannot be soundly used for this
purpose because libcurl needs a long-lived mutable pointer to the error
buffer.

For users, this PR should not have any visible effect except for slight
changes in performance perhaps. The auto trait implementations
(`Send`/`!Sync`/`Freeze`) of `Easy2` do not change.

Co-authored-by: Stephen M. Coakley <me@stephencoakley.com>
@nktnet1 nktnet1 changed the title feat: merge changes from main, compat with apple sec feat: merge changes from main, compat with apple sectrust Oct 6, 2026
@Cupertinum
Cupertinum merged commit e51173f into Cupertinum:ngtcp2-feature Oct 10, 2026
@Cupertinum

Copy link
Copy Markdown
Owner

lgtm!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants