Closed arnaucube closed 1 month ago
Indeed, that's a good point. This was initially done at https://github.com/privacy-scaling-explorations/sonobe/pull/141 but the issue is that even if a frontend was 'not used' by not using its feature, it's dependencies were still being imported (and the dependencies of the dependencies, taking long minutes and MBs of data), when running tests but also when using Sonobe as external dependency.
With the separation into a different subpackage for the experimental frontends done in this PR, the users of the lib that don't use any of the experimental frontends will not get impacted by those dependencies that are in fact not used in that case, and only in the cases where the experimental frontends are specifically used those dependencies will get used.
As a side note, the recommended frontend is using arkworks (directly implementing the FCircuit trait), as the other experimental frontends add overhead when generating the witness which makes the folding step slower.
oh, okay; now I remember similar issue I had with private repo dependency in a workspace causing problems for every member crate, even for those, that didn't use it (even indirectly); afair a workaround it was to use some dummy patching, but in Sonobe case I totally understand and support your final decision - thanks!
Will wait till https://github.com/privacy-scaling-explorations/sonobe/pull/169 is merged, and then will rebase this PR (#168) to main (once it includes #169) and deal with the git conflicts in this branch (#168).
Let's just merge this @arnaucube as I want to wait for Janabel to confirm that the PR works prev to merge it.
Move the experimental frontends into a separate crate, so that when not using them they don't take several minutes to compile (and indirect dependencies).
This saves several minutes (and MBs of data) on compilation time both when running tests in this repo, but also when using the sonobe lib as a dependency in external repos.
This solution was suggested by @ed255 when talking about this.