| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we put the future into the data structure, had the exeuctor
poll it there, and only woke up the subthread when the future was
ready.
Now, instead, we put a new TaskFutureInfo variant into the data
structure, and the executor context switches to the subthread every
time. Then we poll the future on the subthread.
Moving the future into the data structure meant we had to do use a
proxy future to store the return value. Now that's not needed any
more.
Now the future doesn't need to be Send + 'static.
Fixes #1933.
|
| |
|
|
|
|
| |
Eliminate the data_ variable and instead use a block scope.
This seems a bit nicer, and will align slightly better with
forthcoming changes.
|
| | |
|
| | |
|
| |
|
|
| |
We're going to introduce a new call site for this.
|
| |
|
|
| |
Be clearer that `fut` is only `None` during the main loop.
|
| |
|
|
|
|
| |
SubthreadFuture was a type in some early version of this branch, that
it's not in-tree now. subthread_spawn returns impl Future and the
concrete type is a channel receiver.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Done using:
```
for crate in $(./maint/list_crates | rg '^(tor|arti-)'); do
cargo set-version -p $crate 0.29.0
done
```
|
| |
|
|
|
|
|
|
|
| |
In 0.27.0, strum's MSRV was bumped to 1.66.1, but that's okay because
ours is 1.77.
We aren't affected by any of its [breaking changes].
[breaking changes]: https://github.com/Peternator7/strum/blob/master/CHANGELOG.md#0270
|
| |
|
|
|
|
| |
We change `NoUnixAddressSupport` to `NoAfUnixSocketSupport` because it
doesn't make much sense to talk about support for the addresses
separately from support for the sockets.
|
| |
|
|
|
|
| |
(Per discussion at #1774, we think the changes are acceptable.)
This commit won't compile on its own; subsequent commits will fix it.
|
| | |
|
| |
|
|
|
| |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2843#note_3169975
|
| |
|
|
| |
For some reason rustfmt wants to mess with this. Forestall it.
|
| | |
|
| |
|
|
| |
Let's use Tokio terminology here.
|
| |
|
|
| |
This is the TODO we are fixing with this MR.
|
| |
|
|
|
|
|
| |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167975
Also allow ourselves the option of changing this in the future.
|
| | |
|
| |
|
|
|
| |
This will let us call _inner from blocking_io, with a different
precondition. No functional change.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This is going to become a hazard. Let's be explicit.
This means using educe to derive the Default for Data.
We also need to update our educe dependency to 0.4.22, since that's
when Default(expression= "...") started working correctly.
|
| |
|
|
|
|
|
|
| |
execute_until_first_stall is now simply a wrapper which does some
logging. It will do a bit more in a moment.
Giving the inner function a more obvious name is helpful, since the
executor main loop is a thing one is often looking for.
|
| |
|
|
| |
rustfmt.
|
| |
|
|
|
|
|
|
| |
Introduce ToplevelRuntime as an alias, and use it in the top-level
programs.
Now none of the principal protocol implementation code has access to
the executor's toplevel entrypoint, and can't call it by mistake.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Forbid re-entering the executor using ToplevelBlockOn::block_on.
This was always forbidden in the case of MockExecutor, but that meant
that tests using MockExecutor would malfunction if the code under test
needed to re-enter the executor from sync code (since the code under test
would have to use block_on, which wrong). See #1835.
Provide a function which *can* do this, reenter_block_on. The
MockExecutor needs to know the difference, and other runtimes may too.
They are conceptually quite different operations.
Introduce ToplevelRuntime as a convenience alias.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Document the new plan for blocking interaction in the trait-level
docs for the Blocking trait (used to be SpawnBlocking).
Add cross-references (in some cases to not-yet-existing pieces).
* Rename: spawn_blocking to spawn_thread. We're going to distinguish
thread-creation (relatively expensive) from brief entry to sync code
(relatively cheap, but more restricted).
* Rename the SpawnBlocking trait to Blocking, and its ThreadHandle
to ThreadHandle. This trait is going to gain more functionality.
* Add the missing mention of `Blocking` to the docs for `Runtime`.
|
| |
|
|
|
|
|
|
|
|
| |
We're going to distinguish top-level runtime entry, from *re*-entry to
an existing executor. It is most convenient to rename this trait
first. Documentation of the distinction will come later.
(We're going to retain the function name `block_on`, but we want the trait
to be more obviously a top-level only thing, though, so we give it a
name that will hopefully avoid it peroulating throughout the codebase..)
|
| |
|
|
| |
The MockExecutor doesn't have a threadpool.
|
| | |
|
| |
|
|
|
| |
This took a little refactoring, since derive_more::Foo
no longer re-exports std::ops::Foo.
|
| | |
|
| | |
|
| |
|
|
|
| |
This makes it clearer that this is a specific term, which a
definition.
|
| |
|
|
|
| |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2793#note_3161972
|
| |
|
|
|
| |
The rustdocs for a fn in a trait impl are rendered, but are very
unobvious. Put the information in the top-level documentation.
|
| |
|
|
| |
We'll expose this with some new traits in tor_rtmock.
|
| | |
|
| |
|
|
|
|
|
| |
No change to output, but much less open-coding.
Move the doc comment that was on the Debugg impl, to the `DebugTasks`
helper struct.
|
| |
|
|
| |
Show where each test sub-case is started, in stderr output.
|
| |
|
|
| |
We're going to add another call site.
|
| |
|
|
| |
We're going to add another call site.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We're going to want to add a field inside the Arc but not inside the
Mutex, so make the Arc contents into a named-fields struct.
We don't need ArcMutexData any more. Arc<Shared> will do fine.
Previously, we needed to implement .lock() on ArcMutexData but because
Arc<Shared> derefs to Shared, we can implement it on Shared just as
well.
The field in MockExecutor ought to be renamed, but that's textually
intrusive so will come in the next commit.
|
| |
|
|
|
| |
In an earlier version of this code there was a Polling state, but
there isn't now.
|
| |
|
|
|
|
|
|
| |
Right now this will give us `${Xmeta as ... default ...}`, which may
improve things in the future.
The Cargo.toml syntax is precisely that from
https://docs.rs/derive-deftly/1.0.0/derive_deftly/doc_changelog/index.html#t:beta
|
| |
|
|
|
|
|
|
|
| |
This is released now. Prepared with:
cargo upgrade -i -p derive-deftly
There is some new duplication now I think mostly because pwd-grp uses
old derive-deftly.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
See Release.md.
maint/list_crates | grep -P '^tor-|^arti-' | xargs -n1 nailing-cargo -Eu set-version --bump minor -p
This completes the version bumps.
The report of changed crates, before I started the release work, is:
$ maint/changed_crates -v "arti-v$LAST_VERSION"
oneshot-fused-workaround: No change.
slotmap-careful: No change.
test-temp-dir: No change.
fslock-guard: No change.
hashx: No change.
equix: No change.
tor-basic-utils: No change.
caret: No change.
fs-mistrust
safelog: No change.
retry-error: No change.
tor-error
tor-general-addr: No change.
tor-geoip: No change.
tor-rtcompat
tor-rtmock
tor-async-utils
tor-config
tor-config-path
tor-rpc-connect
tor-log-ratelim: No change.
tor-rpcbase
tor-memquota: No change.
tor-units
tor-llcrypto: No change.
tor-protover: No change.
tor-bytes
tor-checkable: No change.
tor-cert
tor-key-forge
tor-hscrypto: No change.
tor-socksproto: No change.
tor-linkspec: No change.
tor-cell: No change.
tor-proto
tor-netdoc: No change.
tor-consdiff: No change.
tor-netdir
tor-relay-selection: No change.
tor-persist
tor-chanmgr
tor-ptmgr: No change.
tor-guardmgr: No change.
tor-circmgr
tor-dirclient: No change.
tor-dirmgr: No change.
tor-keymgr
tor-hsclient
tor-hsservice
tor-hsrproxy: No change.
tor-relay-crypto
arti-client
arti-relay
arti-rpcserver
arti
arti-rpc-client-core
$
|
| | |
|