noir-lang/acvm

Restrict the public interface of the ACVM

Closed this issue · 0 comments

Problem

We currently have much of the internals of the ACVM as public. There's no need for users to be able to instantiate the CSATTransformer. Why whould we expose the sorting network used by the Directive::PermutationSort solver?

This causes unnecessary breaking changes if we refactor code.

Happy Case

We should define the main APIs we want to support, keep these public and then make everything else private.

As far as I see it, we want to keep pwg::solve() and compiler::compile() (and anything necessary to call them) but nothing else needs to be exported from the ACVM.

Alternatives Considered

No response

Additional Context

No response

Would you like to submit a PR for this Issue?

No

Support Needs

No response