]>
 
 
piware.de Git - learn-rust.git/log 
 
 
 
 
 
 
summary  | 
shortlog  | log | 
commit  | 
commitdiff  | 
tree 
first ⋅ prev ⋅ next
 
Martin Pitt  [Sun, 6 Nov 2022 10:53:58 +0000  (11:53 +0100)] 
 
warp-server: Move handlers into proper functions 
 
This is easier to follow, and makes it more obvious what the types are. 
 
Martin Pitt  [Tue, 1 Nov 2022 18:22:43 +0000  (19:22 +0100)] 
 
warp-server: Proper websocket error reporting 
 
Martin Pitt  [Tue, 1 Nov 2022 18:03:58 +0000  (19:03 +0100)] 
 
warp-server: Add logging 
 
Martin Pitt  [Tue, 1 Nov 2022 16:46:30 +0000  (17:46 +0100)] 
 
warp-server: Add echo websocket route 
 
Martin Pitt  [Tue, 1 Nov 2022 15:30:53 +0000  (16:30 +0100)] 
 
warp-server: Add User-Agent header filter 
 
Martin Pitt  [Tue, 1 Nov 2022 15:15:39 +0000  (16:15 +0100)] 
 
warp-server: Initial hello world 
 
Martin Pitt  [Tue, 4 Oct 2022 07:27:06 +0000  (09:27 +0200)] 
 
gtk4-hello-world: Drop unnecessary move 
 
Martin Pitt  [Sun, 18 Sep 2022 18:28:53 +0000  (20:28 +0200)] 
 
hyper-server: Initial version 
 
Martin Pitt  [Sun, 18 Sep 2022 18:04:38 +0000  (20:04 +0200)] 
 
tokio-tutorial-mini-redis: Add proper error handling 
 
Keep unwrapping accept() and Mutex failures, these are early/unlikely enough 
to be okay to crash. 
 
Martin Pitt  [Sun, 18 Sep 2022 17:46:12 +0000  (19:46 +0200)] 
 
tokio-tutorial-mini-redis: Add logging 
 
Martin Pitt  [Fri, 16 Sep 2022 12:42:09 +0000  (14:42 +0200)] 
 
tokio-tutorial-mini-redis: Show return value in client 
 
Use an oneshot message sender to deliver the result. 
 
Martin Pitt  [Fri, 16 Sep 2022 12:27:33 +0000  (14:27 +0200)] 
 
tokio-tutorial-mini-redis: Add first client version 
 
Uses message passing instead of mutexes. Does not yet send back values 
from the manager. 
 
Martin Pitt  [Fri, 16 Sep 2022 12:11:19 +0000  (14:11 +0200)] 
 
tokio-tutorial-mini-redis: Rename to server binary 
 
Invoke with 
 
    cargo run --bin server 
 
Martin Pitt  [Fri, 16 Sep 2022 12:02:30 +0000  (14:02 +0200)] 
 
tokio-tutorial-mini-redis: Shared global state 
 
Martin Pitt  [Fri, 16 Sep 2022 11:49:23 +0000  (13:49 +0200)] 
 
tokio-tutorial-mini-redis: Initial protocol 
 
Implement GET/SET, without shared state yet. 
 
Move the original API demo as an example. Run it with 
 
    cargo run --example hello-redis 
 
Martin Pitt  [Fri, 16 Sep 2022 09:56:13 +0000  (11:56 +0200)] 
 
tokio-tutorial-mini-redis: Initial demo 
 
https://tokio.rs/tokio/tutorial/ 
 
Martin Pitt  [Fri, 16 Sep 2022 09:41:27 +0000  (11:41 +0200)] 
 
tokio-tutorial-jbarszczewski: Implement actual balance data handling 
 
Martin Pitt  [Fri, 16 Sep 2022 09:17:26 +0000  (11:17 +0200)] 
 
tokio-tutorial-jbarszczewski: Add GET/POST parsing 
 
Martin Pitt  [Fri, 16 Sep 2022 08:56:43 +0000  (10:56 +0200)] 
 
tokio-tutorial-jbarszczewski: Handle each connection in separate task 
 
Martin Pitt  [Fri, 16 Sep 2022 08:53:18 +0000  (10:53 +0200)] 
 
tokio-tutorial-jbarszczewski: Initial savings balance API 
 
Martin Pitt  [Fri, 16 Sep 2022 08:44:21 +0000  (10:44 +0200)] 
 
tokio-tutorial-jbarszczewski: Hello world 
 
Demonstrating async fn and inline async block 
 
https://jbarszczewski.com/basics-of-asynchronous-rust-with-tokio 
 
Martin Pitt  [Fri, 16 Sep 2022 07:39:05 +0000  (09:39 +0200)] 
 
async-http: Unit test for handle_connection() 
 
Martin Pitt  [Fri, 16 Sep 2022 07:03:46 +0000  (09:03 +0200)] 
 
async-http: Serve requests in parallel in threads 
 
Use async_std::task::spawn to launch a request in a thread. 
 
Now even synchronous sleep does not block other requests, as long as 
they don't exceed the thread pool capacity. 
 
Martin Pitt  [Fri, 16 Sep 2022 06:47:48 +0000  (08:47 +0200)] 
 
async-http: Serve requests concurrently 
 
Move to asyncstd TCPListener and futures Stream, so that the incoming 
loop does not serialize/block requests any more. 
 
This is still single-threaded. That can be demonstrated with replacing 
the async sleep with a sync one (commented out). Then /sleep will block 
other requests again. 
 
Martin Pitt  [Fri, 16 Sep 2022 06:19:15 +0000  (08:19 +0200)] 
 
async-http: Move to async main and handler function 
 
This does not yet handle requests concurrently. Demonstrate with adding 
a /sleep path. 
 
Martin Pitt  [Fri, 16 Sep 2022 06:13:04 +0000  (08:13 +0200)] 
 
async-http: Fix unhandled warning 
 
Martin Pitt  [Fri, 16 Sep 2022 06:12:14 +0000  (08:12 +0200)] 
 
async-http: Add logging 
 
Martin Pitt  [Fri, 16 Sep 2022 06:04:56 +0000  (08:04 +0200)] 
 
async-http: Initial sync version 
 
Martin Pitt  [Mon, 18 Apr 2022 18:34:34 +0000  (20:34 +0200)] 
 
Add GTK 3 hello world 
 
Martin Pitt  [Mon, 18 Apr 2022 09:44:02 +0000  (11:44 +0200)] 
 
Add GTK 4 hello world 
 
https://gtk-rs.org/gtk4-rs/stable/latest/book/introduction.html 
 
Martin Pitt  [Sun, 26 Sep 2021 08:47:26 +0000  (10:47 +0200)] 
 
serde: Show ≥ info logs by default 
 
Martin Pitt  [Sat, 25 Sep 2021 10:42:02 +0000  (12:42 +0200)] 
 
serde: Use log framework 
 
Run with `RUST_LOG=debug` to see the serialized message. 
 
Martin Pitt  [Sat, 25 Sep 2021 10:22:27 +0000  (12:22 +0200)] 
 
serde: Read back from file and deserialize 
 
Martin Pitt  [Sat, 25 Sep 2021 10:12:45 +0000  (12:12 +0200)] 
 
serde: Use error propagation 
 
Martin Pitt  [Sat, 25 Sep 2021 08:20:01 +0000  (10:20 +0200)] 
 
serde: Write JSON to file 
 
Martin Pitt  [Sat, 25 Sep 2021 06:59:37 +0000  (08:59 +0200)] 
 
serde: Data types and initial serialization 
 
Martin Pitt  [Sun, 19 Sep 2021 09:48:51 +0000  (11:48 +0200)] 
 
simple-http: Implement ThreadPool cleanup 
 
Introduce Terminate message. Test this by only accepting two requests 
and then letting `pool` go out of scope. 
 
Martin Pitt  [Sun, 19 Sep 2021 09:37:29 +0000  (11:37 +0200)] 
 
simple-http: Implement ThreadPool messaging 
 
Martin Pitt  [Sun, 19 Sep 2021 08:38:31 +0000  (10:38 +0200)] 
 
simple-http: Add scaffolding for thread pool implementation 
 
Turn into library crate. Add ThreadPool stub to src/lib. 
 
Martin Pitt  [Sat, 11 Sep 2021 09:36:22 +0000  (11:36 +0200)] 
 
simple-http: Naïve unlimited threads 
 
This introduces a DoS with too many parallel requests. 
 
Martin Pitt  [Sun, 5 Sep 2021 06:09:28 +0000  (08:09 +0200)] 
 
simple-http: Introduce a slow path 
 
Martin Pitt  [Fri, 3 Sep 2021 08:06:07 +0000  (10:06 +0200)] 
 
simple-http: Parse path from request 
 
Martin Pitt  [Wed, 1 Sep 2021 10:17:54 +0000  (12:17 +0200)] 
 
simple-http: Check hardcoded root path, add 404 page 
 
Martin Pitt  [Mon, 30 Aug 2021 17:39:44 +0000  (19:39 +0200)] 
 
simple-http: Initial skeleton 
 
Martin Pitt  [Sun, 29 Aug 2021 14:45:02 +0000  (16:45 +0200)] 
 
concepts: Add alternative Post implementation with states as types 
 
Martin Pitt  [Sun, 29 Aug 2021 14:25:47 +0000  (16:25 +0200)] 
 
concepts: require two Post approvals 
 
Martin Pitt  [Sun, 29 Aug 2021 14:21:01 +0000  (16:21 +0200)] 
 
concepts: Add Post.reject() transition 
 
Martin Pitt  [Sun, 29 Aug 2021 14:12:41 +0000  (16:12 +0200)] 
 
concepts: Rewrite Post without Option 
 
This gets rid of a lot of extra Option handling code, at the price of 
having to rebuild instead of pass through non-changing states. 
 
Martin Pitt  [Sun, 29 Aug 2021 13:55:13 +0000  (15:55 +0200)] 
 
concepts: Dynamic trait objects 
 
Martin Pitt  [Sun, 29 Aug 2021 08:15:43 +0000  (10:15 +0200)] 
 
concepts: Shared memory and mutex between threads 
 
Martin Pitt  [Sun, 29 Aug 2021 07:21:30 +0000  (09:21 +0200)] 
 
concepts: Threads and message passing 
 
Martin Pitt  [Sun, 29 Aug 2021 06:49:44 +0000  (08:49 +0200)] 
 
concepts: Rewrite Cacher tests using RefCell 
 
Avoids an external crate. 
 
Martin Pitt  [Sun, 29 Aug 2021 05:54:59 +0000  (07:54 +0200)] 
 
Move top-level files into concepts/ 
 
As this now contains multiple projects, it was too messy. 
 
Martin Pitt  [Fri, 27 Aug 2021 12:49:22 +0000  (14:49 +0200)] 
 
Call Rust function from C: Complex cases 
 
Add three functions which take/return strings and string arrays. This 
creates some interesting problems how to combine the C semantics of 
returning a char** with the Rust semantics of freeing objects once they 
go out of scope. 
 
This now also relies on the Rust standard library, which needs a few 
system libraries. Link them. 
 
Martin Pitt  [Fri, 27 Aug 2021 09:08:54 +0000  (11:08 +0200)] 
 
Call Rust function from C: Skeleton 
 
Martin Pitt  [Fri, 27 Aug 2021 07:27:37 +0000  (09:27 +0200)] 
 
Implement the rest of c-mounts.c in Rust 
 
Use errno crate for human-readable error formatting. 
 
Martin Pitt  [Fri, 27 Aug 2021 06:43:12 +0000  (08:43 +0200)] 
 
Initial libmount function call from Rust 
 
Follow "A little C with your Rust" [1]. 
 
Set up cargo and main.rs skeleton and call one of the simplest possible 
functions from libmount: mnt_get_fstab_path(). 
 
Use bindgen [1] to translate libmount's header file into a Rust 
interface. This requires a few hacks: 
 
 - bindgen does not accept the original header right away, as it can't 
   find stdarg.h. Avoid this by dropping the (unnecessary) stdio.h 
   include. 
 - bindgen does not know about `size_t`. Hack around that with a typedef 
   for now. 
 - Suppress warnings about constant/identifier naming. 
 
[1] https://rust-lang.github.io/rust-bindgen/command-line-usage.html 
[2] https://docs.rust-embedded.org/book/interoperability/c-with-rust.html 
 
Martin Pitt  [Fri, 27 Aug 2021 05:09:50 +0000  (07:09 +0200)] 
 
C from Rust: Reference C programs 
 
Martin Pitt  [Fri, 27 Aug 2021 04:56:44 +0000  (06:56 +0200)] 
 
Add .gitignore 
 
Martin Pitt  [Thu, 26 Aug 2021 16:30:39 +0000  (18:30 +0200)] 
 
Iterators 
 
Martin Pitt  [Thu, 26 Aug 2021 15:23:55 +0000  (17:23 +0200)] 
 
Consistently use into_iter() with collect() 
 
Martin Pitt  [Wed, 25 Aug 2021 06:36:47 +0000  (08:36 +0200)] 
 
Replace unsafe test code with global_counter 
 
https://docs.rs/crate/global_counter 
 
Martin Pitt  [Wed, 25 Aug 2021 06:25:30 +0000  (08:25 +0200)] 
 
Closures and Cacher object 
 
Martin Pitt  [Tue, 24 Aug 2021 07:56:13 +0000  (09:56 +0200)] 
 
Add integration test 
 
Martin Pitt  [Tue, 24 Aug 2021 07:51:38 +0000  (09:51 +0200)] 
 
Move helper functions into src/lib.rs 
 
This enables writing integration tests. Pure binary crates can't have 
them: 
 
https://doc.rust-lang.org/stable/book/ch11-03-test-organization.html#integration-tests-for-binary-crates 
 
Martin Pitt  [Tue, 24 Aug 2021 05:21:03 +0000  (07:21 +0200)] 
 
Generics and Traits 
 
Martin Pitt  [Tue, 24 Aug 2021 04:53:24 +0000  (06:53 +0200)] 
 
Return style fix 
 
Martin Pitt  [Mon, 23 Aug 2021 12:07:13 +0000  (14:07 +0200)] 
 
File reading with standard fs API 
 
Martin Pitt  [Mon, 23 Aug 2021 12:02:33 +0000  (14:02 +0200)] 
 
File reading and error handling using ? 
 
Martin Pitt  [Mon, 23 Aug 2021 11:52:54 +0000  (13:52 +0200)] 
 
File reading and simple error handling 
 
Martin Pitt  [Mon, 23 Aug 2021 11:18:15 +0000  (13:18 +0200)] 
 
Split into functions 
 
Martin Pitt  [Mon, 23 Aug 2021 10:03:33 +0000  (12:03 +0200)] 
 
HashMap 
 
Martin Pitt  [Sun, 22 Aug 2021 14:17:51 +0000  (16:17 +0200)] 
 
test word_utils 
 
Martin Pitt  [Sun, 22 Aug 2021 14:03:34 +0000  (16:03 +0200)] 
 
Vector iteration 
 
Martin Pitt  [Sun, 22 Aug 2021 13:31:47 +0000  (15:31 +0200)] 
 
Move word_utils to separate file 
 
Martin Pitt  [Sun, 22 Aug 2021 13:24:27 +0000  (15:24 +0200)] 
 
Put functions into module 
 
Martin Pitt  [Sun, 22 Aug 2021 13:21:27 +0000  (15:21 +0200)] 
 
References, slices, Option