Skip to content

Instantly share code, notes, and snippets.

@xd009642
Last active December 16, 2018 15:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xd009642/083a689c1fe460459d6bc792a626604e to your computer and use it in GitHub Desktop.
Save xd009642/083a689c1fe460459d6bc792a626604e to your computer and use it in GitHub Desktop.

Rust 2019

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.

Stabilising proc-macro

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.

Working Groups

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.

Computer Vision

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.

Conclusion

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment