Transforming coordinates from one coordinate reference system to another is slow, and usually done in bulk, so it’s a great candidate for low-level, multithreaded code, accessed via FFI from higher-level languages to facilitate easy I/O and visualisation. When Rust hit 1.0 last year, I decided to write a library to convert from latitude and longitude coordinates to British National Grid eastings and northings, in order to learn the language. The result is the lonlat_bng crate and the convertbng Python package. This talk will focus on several areas: Experiences from learning a systems programming language for someone coming from dynamic languages Evolving code from single-threaded to multi-threaded, and how to use tests and benchmarks to get there Comparing the performance of the Crossbeam and Rayon libraries for parallel execution Using Perfect Hashing for fast access to large (300K members) HashMaps Detecting numerical instability using Herbie, and using Clippy to catch common mist
Hide player controls
Hide resume playing