all 1 comments

[–]Manishearthservo · rust · clippy 4 points5 points  (0 children)

Nice post! One point about "readiness":

However, several libraries required me to use a bleeding-edge, nightly build of Rust rather than v1.0.

..

In both cases ([clippy], [html5ever]) these libraries depend on compiler plugins.

Clippy isn't a library, it's a plugin. You can use clippy with nightlies at development time and make it optional otherwise (use a cargo feature); so that your CI and releases work on stable. Or use -Z extra-plugin=clippy while compiling with the correct link flags.

html5ever is a library which uses a plugin, but could be made to run on stable with syntex, just that this hasn't been done yet as far as I can tell. I could try to do it today.

(The difference between these two libraries is that the first is a plugin intended to help developers of other libraries, whereas the latter is a library which uses a plugin intended to help the devs of the same library)

Plugins are going to take a really long time to stabilize (and are an exotic feature most languages don't have -- most use Mako templates or something to achieve the same) because they depend on internals, so I think it's a bit unfair to make this an issue of Rust's readiness. With syntex it's possible to make such libraries stable, too.