Description
On the policy level, the policy for the example solutions is:
- Must compile without warnings on stable.
- Must compile, but possibly with warnings, on beta.
- Doesn't even need to compile on nightly.
The act of testing all three channels has been here since #85.
The policy on warnings has been here since #107, in response to a time where I introduced warnings in #81 and they were not caught.
On an implementation level, we implement this by having six builds (the product of {stable, beta, nightly} * {normal build, DENYWARNINGS=1 build}) and allowing failures from the appropriate levels.
(We also use a seventh build slot for benchmarks, but they do not figure into this discussion).
Let's discuss: Do we desire any changes to the policy?
I don't think so. I think we desire to continue compiling without warnings on stable, because they usually indicate something worth looking at.
I think the most potentially-contentious point would be whether to allow warnings on beta. I think situations like AsciiExt in #411 mean it is wise to allow them, as a transitionary strategy, but I could be wrong on that. If warnings should be disallowed on beta, please at least propose a solution that would have allowed both 1.22 and 1.23 to pass CI (probably just an allow(unused_imports)
).
Next, let's discuss: Is there a better implementation that implements our desired policy, whatever that may be? For example, perhaps we can combine the normal build and DENYWARNINGS build for stable.
Assuming it doesn't make our test code too hard to understand, I would support an implementation that uses fewer build jobs, since there is a limit to just five jobs running at a time across the entire Exercism organisation (!).
Having DENYWARNINGS separate means we can tell at a glance in Travis CI results whether something failed to compile versus compiled but with warnings, so it seems it's still helpful for both beta and nightly. Thus, we may only be able to save one build slot; maybe not worth whatever extra code it would take.
I'd be glad to hear other ideas.
Appendix: Note that our policy for stubs has very recently changed to indicate that they should always compile without warnings: #478