Skip to content
This repository has been archived by the owner on Feb 7, 2018. It is now read-only.

Consolidation of git repos (post Homestead) #251

Closed
bobsummerwill opened this issue Feb 22, 2016 · 6 comments
Closed

Consolidation of git repos (post Homestead) #251

bobsummerwill opened this issue Feb 22, 2016 · 6 comments
Assignees
Milestone

Comments

@bobsummerwill
Copy link
Contributor

Following on from #250, post-Homestead I would like to propose that we consolidate our actual repositories as well.

That will be work, which has a disruptive cost, but should reduce our ongoing maintenance costs, make refactoring easier (because they will no longer span multiple repos), and make it easier for new contributors to get involved.

Possible boundaries (to be discussed and refined here):

  • cpp-ethereum (consolidation of webthree-helpers, libweb3core, webthree, libethereum and alethzero repositories, optionally depends on evmjit). Some decoupling of solidity will be required for that to be feasible.
  • solidity (depends on cpp-ethereum)
  • mix (depends on cpp-ethereum and solidity)
  • evmjit (hopefully depends on nothing)

See http://doublethinkco.github.io/cpp-ethereum-cross/images/target_dependency_graph.svg

@chriseth
Copy link
Contributor

The most complicated thing to do here is that we need a build system that can be run from e.g. the solidity repository and also configure cpp-ethereum correctly. If we have that, we can actually move the code.

@bobsummerwill
Copy link
Contributor Author

Yes. And I think those build-system improvements likely fall on me (which is fine).

Also, some solidity <-> cpp-ethereum dependency cleanup required.

So @chriseth Looking back through the solidity repo history, I think that earlier versions of that repo DID NOT depend on libethereum. Is that true?

@chriseth
Copy link
Contributor

Solidity and the EVM both have a dependency on the instruction set and the gas cost for the instructions. But I think it is fine to copy those, something similar was done for evmjit.
For testing, we can probably remove a link-dependency once we have some way to start the backend node in "testing mode", i.e. both hash verification and timestamp dependency removed. This testing mode is also important for mix.

@bobsummerwill
Copy link
Contributor Author

"But I think it is fine to copy those, something similar was done for evmjit."

Right. Those costs are already going to be redundantly specified across every single EVM implementation anyway, aren't they, and will change very rarely.

"For testing, we can probably remove a link-dependency once we have some way to start the backend node in "testing mode"

Please could you explain to me exactly how the tests depend on the runtime? Are we actually running the EVM, and then exporting JSON from its state? And then that is the data for future regression tests? (across all clients).

@chriseth
Copy link
Contributor

Yes, a lot of the tests just have solidity code, compile and deploy it, then call functions on the code and see that the contract behaves as written in the source. The plan is to perform these via rpc.
Just created an issue for eth to support that: #260

@bobsummerwill
Copy link
Contributor Author

Done.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants