summaryrefslogtreecommitdiff
path: root/Cargo.toml
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit '98f38dc' (arti!131) into HEADeta2021-11-221-0/+1
|\ | | | | | | | | This commit message totally gives away the cursed way in which I use git. branches? what are those?
| * Initial cut at a typed event framework for arti (arti#230).eta2021-11-221-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements a basic typed event broadcast mechanism, as described in arti#230: consumers of the new `tor-events` crate can emit `TorEvent` events, which others can consume via the `TorEventReceiver`. Under the hood, the crate uses the `async-broadcast` (https://github.com/smol-rs/async-broadcast) crate, and a `futures::mpsc::UnboundedSender` for the event emitters; these are glued together in the `EventReactor`, which must be run in a background thread for things to work. (This is done so event sending is always cheap and non-blocking, since `async-broadcast` senders don't have this functionality.) Additionally, the `TorEventKind` type is used to implement selective event reception / emission: receivers can subscribe to certain event types (and in fact start out receiving nothing), which filters the set of events they receive. Having no subscribers for a given event type means it won't even be emitted in the first place, making things more efficient.
* | Move top-level configuration downwards from `arti` to `arti-config`.Nick Mathewson2021-11-181-1/+2
|/ | | | | | | | To do this at all neatly, I had to split out `tor-config` from `arti-config` again, and putting the lower level stuff (paths, builder errors) into tor-config. I also changed our use of derive_builder to always use a common error type, to avoid error type proliferation.
* Tune the 'profile.release' options for a smaller compile size.Nick Mathewson2021-11-081-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | By enabling link-time optimization, setting 'opt-level=s', and setting compilation-units=1, we can get a much smaller download size, which is one of our objectives. Making these changes reduces the binary size for me (on x86_64) by about 42%. If you also run "strip --strip-debug" on the resulting binary, the resulting size is 55% smaller than the original binary size. These effects persist if you compress the binary. Supposing that we use xz compression, these options make save 32% of compressed binary size. If we also "strip --strip-debug" before compressing, the compressed binary saves 43% from the original binary size. With all of these options applied, on x86_64 linux with xz compression, we're at a nice 1.5 MiB download. If we statically link to openssl and sqlite, we're still only at a 2.8 MiB download. There is a build time cost to these changes: for me, it comes to a 10%-25% build time increase. This is part of arti#172.
* Rename tor_client/arti_tor_client to arti_client.Nick Mathewson2021-10-211-1/+1
| | | | | | Solves a name conflict with the existing tor_client create. Closes #130.
* Initial backend implementation for guard node manager.Nick Mathewson2021-10-071-0/+1
| | | | | | | There are some missing parts here (like persistence and tests) and some incorrect parts (I am 90% sure that the "exploratory circuit" flag is bogus). Also it is not integrated with the circuit manager code.
* Move all crates into a `crates` subdirectory.Nick Mathewson2021-08-271-26/+26
| | | | | This will cause some pain for now, but now is really the best time to do this kind of thing.
* Initial persistent-state-manager code.Nick Mathewson2021-08-061-0/+1
| | | | | | This commit defines a crate (tor-persist) that describes an abstract key-value store using serde, plus an on-disk implementation using Toml and fslock.
* Toposort the workspace members list.arti-v0.0.0Nick Mathewson2021-06-241-1/+4
|
* Remove anyhow dependency from tor-retry, and rename it to retry-errorNick Mathewson2021-06-171-1/+1
| | | | Now RetryError is parameterized on an underlying error type.
* Use macros and types to improve handling of Netdir parameters.Nick Mathewson2021-05-251-0/+1
| | | | (Squashed from typed-netdir-params)
* Switch to v2 feature resolver.Nick Mathewson2021-05-051-0/+2
|
* Split mocking parts of rtcompat into new rtmock crate.Nick Mathewson2021-05-031-0/+1
| | | | | Since these parts are testing-only, let's take steps to make sure we don't ship them in production by accident.
* Replace tor-decompress with async-compression crate.Nick Mathewson2021-04-131-1/+0
| | | | This lets us simplify tor-dirclient a fair bit. Closes #79.
* Move our command-line interface into a new crate called "arti".Nick Mathewson2021-03-171-0/+1
| | | | Closes #106
* Add tor-decompress to top-level Cargo.tomlNick Mathewson2021-03-041-0/+1
|
* Rename client-demo to tor-client.Nick Mathewson2021-02-021-1/+1
|
* Start a 'tor-config' crateNick Mathewson2021-02-011-0/+1
| | | | | | This crate is mainly intended to wrap the config.rs code if necessary, and to give a way for interacting with it on the command line.
* Initial work on client-side consensus diff code.Nick Mathewson2020-12-161-0/+1
|
* Add a "RetryError" to capture the idea of multiple failed attempts.Nick Mathewson2020-12-121-0/+1
| | | | | | When we try to do something a few times and it fails each time, it can be a good idea to remember why the individual failures happened.
* Initial pass on directory-manager code.Nick Mathewson2020-11-191-0/+1
| | | | | | | | This code can now bootstrap from the network, cache the results, and reload from cache. There's lots more work to do here, including a big pile of tidying and refactoring and testing and documentation.
* Start a directory client implementationNick Mathewson2020-11-161-1/+2
| | | | | | | | It can send a GET request on a circuit, get an answer, and decompress it with zlib. It will need documentation and tests eventually, as well as serious refactoring.
* Isolate async_std usage in a new tor_rtcompat crate.Nick Mathewson2020-11-111-0/+1
| | | | | Like tor_llcrypto, this crate is meant to expose only the part of other crates (in this case, a async runtime crate) that we use.
* rename tor_socks -> tor_socksproto.Nick Mathewson2020-11-041-1/+1
|
* Add a SOCKS protocol implementation. Needs tests and docsNick Mathewson2020-11-041-0/+1
|
* Add a new circuit-manager crate and move path selection there.Nick Mathewson2020-11-021-0/+1
|
* Implement a channel-manager type to get or launch channels on request.Nick Mathewson2020-10-301-0/+1
|
* Split the cell-handling parts of tor-proto into a new crate.Nick Mathewson2020-09-261-0/+1
|
* New "linkspec" module to encapsulate info needed to connect/extend.Nick Mathewson2020-09-081-0/+1
|
* Create a stub for a minimal demo client program.Nick Mathewson2020-09-081-0/+1
| | | | | | | | For now, it's set up to just use a chutney network, so I don't cause major drama with the real network. I'll be working on this in parallel with proto and netdir improvements, until it works.
* Start on a 'netdir' crate to wrap netdoc.Nick Mathewson2020-09-071-0/+1
| | | | For now, this assumes an existing Tor cache directory.
* New module with traits for time-bound and signed objectsNick Mathewson2020-09-011-0/+1
| | | | | | | | | | | Too often I've been writing code that defers timeliness checking to an is_valid_at() method [which you'd better call or else whoops] and which does signature checking while parsing [not great for performance]. Instead, let's make return types where you can't get at the interior object without first either checking the signatures/timeliness, or declaring that (dangerously) you don't care.
* Add a new caret_int!() macro for use with integer-wrapping typesNick Mathewson2020-05-151-1/+1
| | | | | | Unlike caret_enum!, these types are for use with things like cell commands or certificate types, where the entire space of integer values is possible, and only some are recognized.
* Add a comment to Cargo.tomlNick Mathewson2020-05-081-0/+2
|
* Fresh git repository for work on "arti"Nick Mathewson2020-05-071-0/+11
Arti is a rust tor implementation. It's project I've been working on for a few months now, in weekends and in spare time. It doesn't speak the tor protocol yet, and it doesn't connect to the network at all. It needs much more documentation and testing, but I'm just about ready to show it to others. See the README.md for a description of what is there and what isn't.