Porting Java's ConcurrentHashMap to Rust (part 3)
This stream is (probably) the last segment in our journey into porting Java's ConcurrentHashMap to Rust. We start writing some tests for the map, and fix the bugs that they uncover. We also implement the core iterator type for the map, and port a small part of the JDK test suite for ConcurrentHashMap.
The stream starts off with a quick walk-through of TODOs in the code, and then we get into writing some initial tests in 00:16:37. Some intermediate points of interest:
0:00:00 Recap
0:52:04 Why writing a garbage collection test is hard
1:21:37 First concurrent test + pain
2:37:12 Snack time and Q&A
2:47:30 Implementing the iterator
4:59:47 Porting some JDK tests
You can see our progress at https://github.com/jonhoo/flurry. The Java code we were working from is included in that repository, or you can view it at https://hg.openjdk.java.net/jdk/jdk13/file/0368f3a073a9/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java.
You can watch the live version with comments at https://www.youtube.com/watch?v=7OcFds2rN5w
Other Videos By Jon Gjengset
2020-10-23 | Thesis: Partial State in Dataflow-Based Materialized Views |
2020-08-19 | Q&A August #2 2020 |
2020-08-09 | Q&A August 2020 |
2020-08-05 | Crust of Rust: Channels |
2020-07-25 | Thesis Talk: The Evaluation Chapter |
2020-06-17 | Crust of Rust: Smart Pointers and Interior Mutability |
2020-05-27 | Crust of Rust: Iterators |
2020-04-29 | Crust of Rust: Declarative Macros |
2020-04-01 | (Partially) fixing a bug in a Rust research database |
2020-03-06 | Considering Rust |
2020-01-19 | Porting Java's ConcurrentHashMap to Rust (part 3) |
2019-12-14 | Porting Java's ConcurrentHashMap to Rust (part 2) |
2019-11-17 | Why are my videos so damn long‽ |
2019-11-17 | Porting Java's ConcurrentHashMap to Rust (part 1) |
2019-10-19 | Rust open-source contributions stream: Rust tools and std::future |
2019-09-14 | The Why, What, and How of Pinning in Rust |
2019-06-16 | Procedural Macros in Rust (part 2) |
2019-06-02 | Procedural Macros in Rust (part 1) |
2019-05-11 | Implementing TCP in Rust (part 3) |
2019-03-16 | Implementing TCP in Rust (part 2) |
2019-02-23 | Implementing TCP in Rust (part 1) |