+ git clone -n https://github.com/embassy-rs/embassy.git code
Cloning into 'code'...
+ cd code
+ git checkout 93589f9bb53db46baedeec49d74990a106ffbf49
HEAD is now at 93589f9bb Merge pull request #7539 from nullcrimson/synopsys-otg-ep0-status-rearm
+ exec .github/ci/test-nightly.sh
Updating crates.io index
Updating git repository `https://github.com/embassy-rs/unitrait`
Locking 115 packages to highest Rust 1.102.0-nightly compatible versions
Compiling embassy-executor-timer-queue v0.1.1 (/ci/code/embassy-executor-timer-queue)
Compiling embassy-executor v0.10.0 (/ci/code/embassy-executor)
Compiling embassy-sync v0.8.0 (/ci/code/embassy-sync)
Compiling embassy-executor-macros v0.8.0 (/ci/code/embassy-executor-macros)
warning: unused dependency `critical-section`
--> Cargo.toml:111:1
|
111 | critical-section = "1.1"
| ^^^^^^^^^^^^^^^^
|
= note: `cargo::unused_dependencies` is set to `warn` by default
help: consider removing the dependency on `critical-section`
warning: unused dependency `critical-section`
--> Cargo.toml:137:1
|
137 | critical-section = { version = "1.1", features = ["std"] }
| ^^^^^^^^^^^^^^^^
|
help: consider removing the dependency on `critical-section`
warning: `embassy-executor` (manifest) generated 2 warnings
Finished `test` profile [unoptimized + debuginfo] target(s) in 6.66s
Running unittests src/lib.rs (/ci/cache/target/debug/build/embassy-executor/a66764c238a75c69/out/embassy_executor-a66764c238a75c69)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/main_unwind.rs (/ci/cache/target/debug/build/embassy-executor/6bfb2aa8fb045201/out/main_unwind-6bfb2aa8fb045201)
test main_unwind ... ok
Running tests/test.rs (/ci/cache/target/debug/build/embassy-executor/8bd8bad722c4c4e7/out/test-8bd8bad722c4c4e7)
running 10 tests
test executor_noop ... ok
test executor_task_self_wake_twice ... ok
test task_name_arg ... ok
test executor_task_self_wake ... ok
test executor_task_cfg_args ... ok
test waking_after_completion_does_not_poll ... ok
test waking_with_old_waker_after_respawn ... ok
test recursive_task ... ok
test executor_task_rpit ... ok
test executor_task ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/ui.rs (/ci/cache/target/debug/build/embassy-executor/4a85ca4e24e68929/out/ui-4a85ca4e24e68929)
running 1 test
Compiling embassy-executor-timer-queue v0.1.1 (/ci/code/embassy-executor-timer-queue)
Compiling embassy-sync v0.8.0 (/ci/code/embassy-sync)
Compiling embassy-executor v0.10.0 (/ci/code/embassy-executor)
Compiling embassy-executor-macros v0.8.0 (/ci/code/embassy-executor-macros)
Compiling embassy-executor-tests v0.0.0 (/ci/cache/target/tests/trybuild/embassy-executor)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.56s
test tests/ui/abi.rs [should fail to compile] ... ok
test tests/ui/bad_return.rs [should fail to compile] ... ok
test tests/ui/generics.rs [should fail to compile] ... ok
test tests/ui/impl_trait_nested.rs [should fail to compile] ... ok
test tests/ui/impl_trait.rs [should fail to compile] ... ok
test tests/ui/impl_trait_static.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_anon_nested.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_anon.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_elided.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_generic.rs [should fail to compile] ... ok
test tests/ui/nonstatic_struct_anon.rs [should fail to compile] ... ok
test tests/ui/nonstatic_struct_elided_nightly.rs [should fail to compile] ... ok
test tests/ui/nonstatic_struct_generic.rs [should fail to compile] ... ok
test tests/ui/not_async.rs [should fail to compile] ... ok
test tests/ui/spawn_nonsend.rs [should fail to compile] ... ok
test tests/ui/return_impl_future_nonsend.rs [should fail to compile] ... ok
test tests/ui/self_ref.rs [should fail to compile] ... ok
test tests/ui/self.rs [should fail to compile] ... ok
test tests/ui/type_error.rs [should fail to compile] ... ok
test tests/ui/where_clause.rs [should fail to compile] ... ok
test tests/ui/unsafe_op_in_unsafe_task.rs [should fail to compile] ... ok
test tests/ui/task_safety_attribute.rs [should pass] ... ok
test ui ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 26.91s
Doc-tests embassy_executor
running 3 tests
test src/lib.rs - (line 58) ... ignored
test src/lib.rs - (line 69) ... ignored
test src/raw/mod.rs - raw::Executor (line 561) ... ok
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.01s
all doctests ran in 1.29s; merged doctests compilation took 1.27s
Compiling embassy-executor v0.10.0 (/ci/code/embassy-executor)
Compiling embassy-executor-macros v0.8.0 (/ci/code/embassy-executor-macros)
warning: the feature `never_type` has been stable since 1.100.0 and no longer requires an attribute to enable
--> tests/test.rs:2:42
|
2 | #![cfg_attr(feature = "nightly", feature(never_type))]
| ^^^^^^^^^^
|
= note: `#[warn(stable_features)]` on by default
warning: `embassy-executor` (test "test") generated 1 warning
warning: unused dependency `critical-section`
--> Cargo.toml:111:1
|
111 | critical-section = "1.1"
| ^^^^^^^^^^^^^^^^
|
= note: `cargo::unused_dependencies` is set to `warn` by default
help: consider removing the dependency on `critical-section`
warning: unused dependency `critical-section`
--> Cargo.toml:137:1
|
137 | critical-section = { version = "1.1", features = ["std"] }
| ^^^^^^^^^^^^^^^^
|
help: consider removing the dependency on `critical-section`
warning: `embassy-executor` (manifest) generated 2 warnings
Finished `test` profile [unoptimized + debuginfo] target(s) in 3.26s
Running unittests src/lib.rs (/ci/cache/target/debug/build/embassy-executor/c16630b7ce272cb2/out/embassy_executor-c16630b7ce272cb2)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/main_unwind.rs (/ci/cache/target/debug/build/embassy-executor/6c441941f0339f7f/out/main_unwind-6c441941f0339f7f)
test main_unwind ... ok
Running tests/test.rs (/ci/cache/target/debug/build/embassy-executor/16ee57a727b6afd3/out/test-16ee57a727b6afd3)
running 10 tests
test executor_noop ... ok
test executor_task_self_wake_twice ... ok
test executor_task_rpit ... ok
test waking_after_completion_does_not_poll ... ok
test task_name_arg ... ok
test executor_task_self_wake ... ok
test recursive_task ... ok
test executor_task ... ok
test executor_task_cfg_args ... ok
test waking_with_old_waker_after_respawn ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/ui.rs (/ci/cache/target/debug/build/embassy-executor/8c855c634bdceb89/out/ui-8c855c634bdceb89)
running 1 test
Compiling embassy-executor v0.10.0 (/ci/code/embassy-executor)
Compiling embassy-executor-macros v0.8.0 (/ci/code/embassy-executor-macros)
Compiling embassy-executor-tests v0.0.0 (/ci/cache/target/tests/trybuild/embassy-executor)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.34s
test tests/ui/abi.rs [should fail to compile] ... ok
test tests/ui/bad_return.rs [should fail to compile] ... ok
test tests/ui/generics.rs [should fail to compile] ... ok
test tests/ui/impl_trait_nested.rs [should fail to compile] ... ok
test tests/ui/impl_trait.rs [should fail to compile] ... ok
test tests/ui/impl_trait_static.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_anon_nested.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_anon.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_elided.rs [should fail to compile] ... ok
test tests/ui/nonstatic_ref_generic.rs [should fail to compile] ... ok
test tests/ui/nonstatic_struct_anon.rs [should fail to compile] ... ok
test tests/ui/nonstatic_struct_generic.rs [should fail to compile] ... ok
test tests/ui/not_async.rs [should fail to compile] ... ok
test tests/ui/spawn_nonsend.rs [should fail to compile] ... ok
test tests/ui/return_impl_future_nonsend.rs [should fail to compile] ... ok
test tests/ui/bad_return_impl_future_nightly.rs [should fail to compile] ... ok
test tests/ui/return_impl_send_nightly.rs [should fail to compile] ... ok
test tests/ui/self_ref.rs [should fail to compile] ... ok
test tests/ui/self.rs [should fail to compile] ... ok
test tests/ui/type_error.rs [should fail to compile] ... ok
test tests/ui/where_clause.rs [should fail to compile] ... ok
test tests/ui/unsafe_op_in_unsafe_task.rs [should fail to compile] ... ok
test tests/ui/task_safety_attribute.rs [should pass] ... ok
test ui ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 24.96s
Doc-tests embassy_executor
running 3 tests
test src/lib.rs - (line 58) ... ignored
test src/lib.rs - (line 69) ... ignored
test src/raw/mod.rs - raw::Executor (line 561) ... ok
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.01s
all doctests ran in 1.29s; merged doctests compilation took 1.27s
Preparing a sysroot for Miri (target: x86_64-unknown-linux-gnu)... done
Compiling embassy-executor-timer-queue v0.1.1 (/ci/code/embassy-executor-timer-queue)
Compiling embassy-sync v0.8.0 (/ci/code/embassy-sync)
Compiling embassy-executor v0.10.0 (/ci/code/embassy-executor)
Compiling embassy-executor-macros v0.8.0 (/ci/code/embassy-executor-macros)
warning: unused dependency `critical-section`
--> Cargo.toml:111:1
|
111 | critical-section = "1.1"
| ^^^^^^^^^^^^^^^^
|
= note: `cargo::unused_dependencies` is set to `warn` by default
help: consider removing the dependency on `critical-section`
warning: unused dependency `critical-section`
--> Cargo.toml:137:1
|
137 | critical-section = { version = "1.1", features = ["std"] }
| ^^^^^^^^^^^^^^^^
|
help: consider removing the dependency on `critical-section`
warning: `embassy-executor` (manifest) generated 2 warnings
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.64s
Running unittests src/lib.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/d457ea12cbcb022c/out/embassy_executor-d457ea12cbcb022c)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/main_unwind.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/0a8c3f49f855cf73/out/main_unwind-0a8c3f49f855cf73)
Running tests/test.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/f886c36685c86e68/out/test-f886c36685c86e68)
running 10 tests
test executor_noop ... ok
test executor_task ... ok
test executor_task_cfg_args ... ok
test executor_task_rpit ... ok
test executor_task_self_wake ... ok
test executor_task_self_wake_twice ... ok
test recursive_task ... ok
test task_name_arg ... ok
test waking_after_completion_does_not_poll ... ok
test waking_with_old_waker_after_respawn ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.23s
Running tests/ui.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/32d6911944b90c39/out/ui-32d6911944b90c39)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Doc-tests embassy_executor
running 3 tests
test src/lib.rs - (line 58) ... ignored
test src/lib.rs - (line 69) ... ignored
test src/raw/mod.rs - raw::Executor (line 561) ... ok
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.54s
all doctests ran in 0.65s; merged doctests compilation took 0.11s
Compiling embassy-executor v0.10.0 (/ci/code/embassy-executor)
Compiling embassy-executor-macros v0.8.0 (/ci/code/embassy-executor-macros)
warning: unused dependency `critical-section`
--> Cargo.toml:111:1
|
111 | critical-section = "1.1"
| ^^^^^^^^^^^^^^^^
|
= note: `cargo::unused_dependencies` is set to `warn` by default
help: consider removing the dependency on `critical-section`
warning: unused dependency `critical-section`
--> Cargo.toml:137:1
|
137 | critical-section = { version = "1.1", features = ["std"] }
| ^^^^^^^^^^^^^^^^
|
help: consider removing the dependency on `critical-section`
warning: `embassy-executor` (manifest) generated 2 warnings
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.62s
Running unittests src/lib.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/f14245ed9f79e29b/out/embassy_executor-f14245ed9f79e29b)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/main_unwind.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/911aeb3d3c22e9e1/out/main_unwind-911aeb3d3c22e9e1)
Running tests/test.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/cf0fe8bff844433c/out/test-cf0fe8bff844433c)
warning: the feature `never_type` has been stable since 1.100.0 and no longer requires an attribute to enable
--> tests/test.rs:2:42
|
2 | #![cfg_attr(feature = "nightly", feature(never_type))]
| ^^^^^^^^^^
|
= note: `#[warn(stable_features)]` on by default
running 10 tests
test executor_noop ... ok
test executor_task ... ok
test executor_task_cfg_args ... ok
test executor_task_rpit ... ok
test executor_task_self_wake ... ok
test executor_task_self_wake_twice ... ok
test recursive_task ... ok
test task_name_arg ... ok
test waking_after_completion_does_not_poll ... ok
test waking_with_old_waker_after_respawn ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.33s
warning: 1 warning emitted
Running tests/ui.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-executor/85a1ef286f3301f1/out/ui-85a1ef286f3301f1)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Doc-tests embassy_executor
running 3 tests
test src/lib.rs - (line 58) ... ignored
test src/lib.rs - (line 69) ... ignored
test src/raw/mod.rs - raw::Executor (line 561) ... ok
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.64s
all doctests ran in 0.73s; merged doctests compilation took 0.09s
Updating crates.io index
Locking 58 packages to highest Rust 1.102.0-nightly compatible versions
Compiling embassy-sync v0.8.0 (/ci/code/embassy-sync)
Finished `test` profile [unoptimized + debuginfo] target(s) in 4.33s
Running unittests src/lib.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-sync/684cd4cef98f7f2d/out/embassy_sync-684cd4cef98f7f2d)
running 109 tests
test channel::tests::cloning ... ok
test channel::tests::dynamic_dispatch_constructor ... ok
test channel::tests::dynamic_dispatch_into ... ok
test channel::tests::receiver_receives_given_try_send_async ... ok
test channel::tests::receiving_once_with_one_send ... ok
test channel::tests::receiving_when_empty ... ok
test channel::tests::sender_send_completes_if_capacity ... ok
test channel::tests::senders_sends_wait_until_capacity ... ok
test channel::tests::sending_once ... ok
test channel::tests::sending_when_full ... ok
test channel::tests::simple_send_and_receive ... ok
test lazy_lock::tests::test_lazy_drop ... ok
test lazy_lock::tests::test_lazy_lock ... ok
test lazy_lock::tests::test_lazy_lock_into_inner ... ok
test lazy_lock::tests::test_lazy_lock_mutation ... ok
test mutex::tests::mapped_guard_releases_lock_when_dropped ... ok
test once_lock::tests::once_lock ... ok
test once_lock::tests::once_lock_async ... ok
test once_lock::tests::once_lock_get_or_init ... ok
test once_lock::tests::once_lock_into_inner ... ok
test once_lock::tests::once_lock_static ... ok
test once_lock::tests::once_lock_take_init ... ok
test pipe::tests::dynamic_dispatch_pipe ... ok
test pipe::tests::read_buf ... ok
test pipe::tests::receiver_receives_given_try_write_async ... ok
test pipe::tests::receiving_once_with_one_send ... ok
test pipe::tests::receiving_when_empty ... ok
test pipe::tests::sender_send_completes_if_capacity ... ok
test pipe::tests::simple_send_and_receive ... ok
test pipe::tests::write_all_across_rollover ... ok
test pipe::tests::write_read_across_rollover ... ok
test pipe::tests::writer_is_cloneable ... ok
test pipe::tests::writing_once ... ok
test pipe::tests::writing_when_full ... ok
test priority_channel::tests::cloning ... ok
test priority_channel::tests::dynamic_dispatch ... ok
test priority_channel::tests::receiver_receives_given_try_send_async ... ok
test priority_channel::tests::receiving_once_with_one_send ... ok
test priority_channel::tests::receiving_when_empty ... ok
test priority_channel::tests::send_priority ... ok
test priority_channel::tests::sender_send_completes_if_capacity ... ok
test priority_channel::tests::senders_sends_wait_until_capacity ... ok
test priority_channel::tests::sending_once ... ok
test priority_channel::tests::sending_when_full ... ok
test priority_channel::tests::simple_send_and_receive ... ok
test pubsub::tests::all_subscribers_receive ... ok
test pubsub::tests::correct_available ... ok
test pubsub::tests::correct_len ... ok
test pubsub::tests::dyn_pub_sub_works ... ok
test pubsub::tests::empty_channel_when_last_subscriber_is_dropped ... ok
test pubsub::tests::lag_when_queue_full_on_immediate_publish ... ok
test pubsub::tests::limited_subs_and_pubs ... ok
test pubsub::tests::publisher_sink ... ok
test pubsub::tests::publisher_wait_on_full_queue ... ok
test pubsub::tests::send_dyn_are_send_sync ... ok
test pubsub::tests::skip_clone_for_last_message ... ok
test ring_buffer::tests::push_pop ... ok
test rpc_service::tests::basic ... ok
test rpc_service::tests::cancel_after_submit_no_leak ... ok
test rpc_service::tests::cancel_before_acquire_then_next_call ... ok
test rpc_service::tests::concurrent_run_panics - should panic ... ok
test rpc_service::tests::different_return_types ... ok
test rpc_service::tests::drop_glue_on_service_drop ... ok
test rpc_service::tests::poll_after_completion_panics - should panic ... ok
test rpc_service::tests::restart_after_cancel_mid_job ... ok
test rpc_service::tests::restart_many_cycles ... ok
test rpc_service::tests::restart_with_pending_job ... ok
test rpc_service::tests::try_call_immediate ... ok
test rpc_service::tests::zero_sized_return ... ok
test rwlock::tests::read_guard_releases_lock_when_dropped ... ok
test rwlock::tests::write_guard_releases_lock_when_dropped ... ok
test semaphore::tests::fair::acquire ... ok
test semaphore::tests::fair::acquire_all ... ok
test semaphore::tests::fair::cancel_wakes_next_waiter ... ok
test semaphore::tests::fair::contested ... ok
test semaphore::tests::fair::disarm ... ok
test semaphore::tests::fair::fairness ... ok
test semaphore::tests::fair::release ... ok
test semaphore::tests::fair::set ... ok
test semaphore::tests::fair::try_acquire ... ok
test semaphore::tests::fair::try_acquire_all ... ok
test semaphore::tests::fair::wakers ... ok
test semaphore::tests::greedy::acquire ... ok
test semaphore::tests::greedy::acquire_all ... ok
test semaphore::tests::greedy::contested ... ok
test semaphore::tests::greedy::disarm ... ok
test semaphore::tests::greedy::greedy ... ok
test semaphore::tests::greedy::release ... ok
test semaphore::tests::greedy::set ... ok
test semaphore::tests::greedy::try_acquire ... ok
test semaphore::tests::greedy::try_acquire_all ... ok
test waitqueue::atomic_waker::tests::register_from_within_wake_is_not_woken_again ... ok
test waitqueue::atomic_waker::tests::register_same_waker_no_spurious_wakes ... ok
test waitqueue::atomic_waker::tests::register_with_distinct_waker_wakes_evicted ... ok
test waitqueue::atomic_waker::tests::wake_after_register_wakes_registered ... ok
test waitqueue::atomic_waker::tests::wake_with_no_registered_waker_is_noop ... ok
test watch::tests::all_try_get ... ok
test watch::tests::clone_senders ... ok
test watch::tests::contains_value ... ok
test watch::tests::convert_to_dyn ... ok
test watch::tests::dynamic_receiver_count ... ok
test watch::tests::max_receivers_drop ... ok
test watch::tests::multiple_receivers ... ok
test watch::tests::multiple_sends ... ok
test watch::tests::once_lock_like ... ok
test watch::tests::predicate_fn ... ok
test watch::tests::receive_after_create ... ok
test watch::tests::sender_modify ... ok
test watch::tests::use_dynamics ... ok
test result: ok. 109 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 14.68s
Running tests/ui.rs (/ci/cache/target/miri/x86_64-unknown-linux-gnu/debug/build/embassy-sync/4beb45ffdac11e16/out/ui-4beb45ffdac11e16)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Doc-tests embassy_sync
running 10 tests
test src/rpc_service.rs - rpc_service::RpcService (line 403) ... ignored
test src/priority_channel.rs - priority_channel::PriorityChannel<M,T,K,N>::new (line 495) ... ok
test src/pipe.rs - pipe::Pipe<M,N>::new (line 262) ... ok
test src/channel.rs - channel::Channel<M,T,N>::new (line 840) ... ok
test src/lazy_lock.rs - lazy_lock::LazyLock (line 17) ... ok
test src/signal.rs - signal::Signal (line 26) ... ok
test src/channel.rs - channel (line 22) ... ok
test src/once_lock.rs - once_lock::OnceLock (line 25) ... ok
test src/watch.rs - watch::Watch (line 26) ... ok
test src/pubsub/mod.rs - pubsub::PubSubChannel (line 37) ... ok
test result: ok. 9 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.59s
all doctests ran in 1.69s; merged doctests compilation took 0.10s
job memory peak: 1.1 GiB of 12G, swap 0.4 GiB of 2G
job success in 6m53s