This is a bit of a brain dump of my thoughts about Rust 2019. Mainly I work on
my own code coverage tool tarpaulin
, embedded rust and random little tools. So
my perspective will be coloured by this.
So this year tarpaulin found itself needing to be compiled on nightly. This was
because syntex-syntax
is no longer maintained, and as a result, new syntax was
triggering panics. So I moved tarpaulin
over to syn
and due to a reliance
on non-semver compatible features via the procmacro2_semver_exempt
rustflag.
I'm not the only dev tool affected by this so one of my big wishes is that
this issue is closed and
procedural macros will have a stable API.
With working groups, I've been inspired by the Growing Working Groups part of Nick Fitzgerald's Rust 2019 post. One such working group I'd be interested in seeing would be some sort of embedded architectures working group. The current embedded working group has a strong focus on ARM chips, and while I mainly tend towards ARM there are people working on Rust for AVR, Embedded PowerPC, MIPS, and others. With guidance available for new working groups and assistance there's the potential for these groups to add new richness to the language and ecosystem without refocussing the vision of the main working groups. I remember also seeing talks about a GUI and a game development working group during the year on the unofficial discord. By opening up the ability to start new working groups I feel the community stands to benefit a lot.
One of my interests; is computer vision and I haven't seen anything in Rust that makes me consider giving up OpenCV. I've been looking at the Piston Image crate and imageproc and personally I'd prefer a clearer separation of functionality like in OpenCV, but also less monolithic (a difficult problem).
For example Image has JPEG encoding and decoding, however, there's no DCT function which operates on the Image type. The DCT is instead embedded in the JPEG encoder and inverse DCT in the decoder. This means that anyone looking to do a DCT on an image as part of frequency analysis would have to implement it themselves. I'd like to build on the work already done and make computer vision and image analysis more usable in Rust.
One solution to this might be some sort of eigen like library with image processing functionality built over it. I haven't looked into this too deeply yet but intend to during my Christmas break.
Well this was a bit of a braindump so attempting to distill it I think 2019 Rust should go as follows:
- Core team and WG teams work on stabilising what's already started
- Empower the community to increase the breadth of the Rust Ecosystem
- Do this via a mentoring system to make it easier to start working groups