[v2] [GSoC 2017] Instrumentation of Rust applications
"Saurav Sachidanand" <[email protected]> Fri, 3 Mar 2017 19:00:07 +0000
| Newsgroups | gmane.comp.sysutils.pcp |
|---|---|
| Message-ID | <[email protected]> |
Sorry about the last mail with bad formatting. Didn't know it had to be plain text. -------- Hello PCP developers, I'm Saurav Sachidanand, and I'm a CS sophomore studying in India. For more than year I've been programming in Rust and have published some personal projects in it (few involving the Rust-C FFI) and have contributed a few patches to Servo (github.com/saurvs). This year, I'm really interested in the GSoC project for implementing a native Rust library that enables instrumentation through PCP. I've begun exploring the PCP tools on Fedora and have started reading up on the developer documentation. I've also cloned the Speed repository and tried out the examples by inspecting them using mmvdump. After reading the project description and skimming through the Speed source code, I'm assuming the following are the deliverables involved with the project - native Rust library to write out metrics as memory mapped values - native Rust library, and command line utility, to dump metrics from memory mapped values - a high-level Rust API to easily expose metrics from an application, following the pattern established in Speed (Client, Registry, Metric, Counter, Gauge etc.) - continuous integration through Travis CI, code coverage through Codecov (coveralls doesn't support Rust) - documentation using rustdoc and host on Github Pages - as a separate library, Rust bindings to libpcp_trace - create Rust examples showing usage of the API, and also embedded this instrumentation capability to popular frameworks like hyper and iron - as a stretch goal, implement a PCP agent in Rust to export metrics directly, similar to parfait-agent A major challenge in this project would be that in Rust there is no universally safe way to deal with memory mapped files, as there are very few, if any at all, compile-time guarantees the Rust compiler can make about reads and writes to an mmapped file. Hence, there's no support for it in the standard library. We'll have to write our own little module around libc::mmap to get only the functionality we need, or use a third party crate like memmap-rs or rust-mmap. Does this outline look good enough to begin writing a proposal? Any feedback/comments on the above will be greatly appreciated. Thanks, Saurav -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#15307): https://groups.io/g/pcp/message/15307 View All Messages In Topic (1): https://groups.io/g/pcp/topic/4461365 Mute This Topic: https://groups.io/mt/4461365?uid=174580 New Topic: https://groups.io/g/pcp/post -=-=- pcp mailing list [email protected] https://groups.io/g/pcp/messages -=-=- Change Your Subscription: https://groups.io/g/pcp/editsub?uid=174580 Group Home: https://groups.io/g/pcp Contact Group Owner: [email protected] Terms of Service: https://groups.io/static/tos Unsubscribe: https://groups.io/g/pcp/leave/354243/563757577/xyzzy -=-=-=-=-=-=-=-=-=-=-=-