[llvm-dev] Target Acceptance Policy

Renato Golin via llvm-dev llvm-dev at lists.llvm.org
Wed Jul 27 08:25:29 PDT 2016

Re-cap, after reviews. Main changes:

* Making it clear that the "active community" behaviour is expected to
continue throughout the target's lifetime.
* Making it clear that only a reduced set of violation will be allowed
in the experimental phase, providing the maintainers are taking the
cost to move it to full compliance.
* Trust, but verify: If the target's community doesn't follow these
assumptions, the target will be removed.

Must haves to be accepted upstream as experimental:

1. There must be an active community behind the target. This community
will be the maintainers of the target by providing buildbots, fixing
bugs, answering the LLVM community's questions and making sure the new
target doesn't break any of the other targets, or generic code. This
behaviour is expected to continue throughout the lifetime of the
target's code.

2. The code must be free of contentious issues, for example, large
changes in how the IR behaves or should be formed by the front-ends,
unless agreed by the majority of the community via refactoring of the
(LangRef) *before* the merge of the new target changes, following the
IR backwards compatibility described in the developer's policy

3. The code has a compatible license, patent and copyright statements,
or can be converted to LLVM's own.

4. The target should have either reasonable documentation on how it
works (ISA, ABI, etc.) or a publicly available simulator/hardware
(either free or cheap enough), so that developers can validate
assumptions, understand constraints and review code that can affect
the target. Preferably both.

To be moved as an official target:

5. The target must have been in the tree for at least 6 months, with
active contributions including: adding more tests conforming to the
documents, fixing bugs reported by unrelated/generic changes,
providing support to other members of the community.

6. The target's code must have been completely adapted to the
developers policy as well as the coding standards. Any exceptions that
were made to move into experimental mode must have been fixed to
become official.

7. The test coverage needs to be broad and well written (small tests,
well documented). The build target ``check-all`` must pass with the
new target built, and where applicable, the ``test-suite`` must also
pass without errors, in at least one configuration (publicly
demonstrated, ex.  via buildbots).

8. Public buildbots need to be created and actively maintained, unless
the target requires no additional buildbots (ex. ``check-all`` covers
all tests). The more relevant and public CI infrastructure a target
has, the more the LLVM community will embrace it.

To continue as a supported and official target:

9. The target maintainer must continue following these rules
throughout the lifetime of the target. Violations of the policy will
be treated on a case by case basis, but several and continuous
violations could be met with complete removal of the target from the
code base.

I hope that's better. To me, it feels a bit pushy, but people seemed
to prefer a bit more rigorous text.

We can always change it in the future, of course, and reiterating,
this is not intended to change the behaviour of the community (which
is already good), but to encode it and show others what do we mean by
"target responsibility".


More information about the llvm-dev mailing list