{"action":"created","issue":{"url":"https://api.github.com/repos/eris-ltd/lllc-server/issues/33","labels_url":"https://api.github.com/repos/eris-ltd/lllc-server/issues/33/labels{/name}","comments_url":"https://api.github.com/repos/eris-ltd/lllc-server/issues/33/comments","events_url":"https://api.github.com/repos/eris-ltd/lllc-server/issues/33/events","html_url":"https://github.com/eris-ltd/lllc-server/issues/33","id":90080772,"number":33,"title":"Remake for Solidity.","user":{"login":"androlo","id":2809499,"avatar_url":"https://avatars.githubusercontent.com/u/2809499?v=3","gravatar_id":"","url":"https://api.github.com/users/androlo","html_url":"https://github.com/androlo","followers_url":"https://api.github.com/users/androlo/followers","following_url":"https://api.github.com/users/androlo/following{/other_user}","gists_url":"https://api.github.com/users/androlo/gists{/gist_id}","starred_url":"https://api.github.com/users/androlo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/androlo/subscriptions","organizations_url":"https://api.github.com/users/androlo/orgs","repos_url":"https://api.github.com/users/androlo/repos","events_url":"https://api.github.com/users/androlo/events{/privacy}","received_events_url":"https://api.github.com/users/androlo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-06-22T12:05:21Z","updated_at":"2015-07-03T16:26:02Z","closed_at":null,"body":"We need a new LLLC server for Solidity. The new server doesn't have to be more then a simple (but proper server) for solc. Maybe there is one already, somewhere, otherwise I'd (again) suggest writing it in C++ because there's no good reason not to. The server is tiny, and it would get access to libsolidity (and all the other compilers) rather then running os.Exec in Go and parse stdout like it does now. The legacy compiler would still continue to run of course.\r\n\r\nThese are some things that should be done.\r\n\r\n1) We don't need more then an RPC endpoint imo, and only http, but It should implement JSON-RPC properly. We say it does in README, but it does not.\r\n\r\n2) The calling process can be improved by a lot. All you need to run the compiler is a list of files. From what I understand, calling the server requires a bunch of folder and files to be created on the local machine? If that's the case, then that can be gotten rid of. The calling clients only need to pass a parameters object that looks something like this:\r\n\r\n```\r\n[{\"filename\": name, \"source\": source}, {\"filename2\": name, \"source2\": source}, ...]\r\n```\r\n\r\nFlags and such could also be included, and the language field (if it needs to support lll/serpent).\r\n\r\n3) Not really high priority, but we should expose more methods later such as opcodes, ast, asm, and natspec, and optimization flags etc.\r\n\r\n4) Bloat should be reduced. If I'm not mistaken it builds the entire cpp-ethereum library (including the GUIs), and pulls in half of the go stack for the server. A majority of this could be cut out.\r\n\r\nI would do this."},"comment":{"url":"https://api.github.com/repos/eris-ltd/lllc-server/issues/comments/118386908","html_url":"https://github.com/eris-ltd/lllc-server/issues/33#issuecomment-118386908","issue_url":"https://api.github.com/repos/eris-ltd/lllc-server/issues/33","id":118386908,"user":{"login":"androlo","id":2809499,"avatar_url":"https://avatars.githubusercontent.com/u/2809499?v=3","gravatar_id":"","url":"https://api.github.com/users/androlo","html_url":"https://github.com/androlo","followers_url":"https://api.github.com/users/androlo/followers","following_url":"https://api.github.com/users/androlo/following{/other_user}","gists_url":"https://api.github.com/users/androlo/gists{/gist_id}","starred_url":"https://api.github.com/users/androlo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/androlo/subscriptions","organizations_url":"https://api.github.com/users/androlo/orgs","repos_url":"https://api.github.com/users/androlo/repos","events_url":"https://api.github.com/users/androlo/events{/privacy}","received_events_url":"https://api.github.com/users/androlo/received_events","type":"User","site_admin":false},"created_at":"2015-07-03T16:26:02Z","updated_at":"2015-07-03T16:26:02Z","body":"I'm starting to think this will not be enough for long, but will require a lot of patching. The way I normally work with Solidity contracts now is by setting up a proper workspace with sub folders and external dependencies etc. Solc still needs a few things, like adding the -o flag to set an output dir (there's a pt story for that), but other then that it basically supports a normal code-project setup at this point.\r\n\r\nIf we're gonna support remote compiling beyond passing in one file, I think the best way would perhaps  be to have the client compress the entire workspace and send it along with the build instructions. The server would unpack it into a temporary folder (like now), build, then zip up the build folder and return it. A clever build system (like the gulp-based one I am working on for myself) can use a flag to just swap out the solc build command with the call to the server, unpack the files into the local build folder and continue on from there with any post build stuff - as if the build was done locally.\r\n\r\nThis will gradually get more advanced. There will be lots of maintenance work to support these type of setups. I think we should decide if we want the simple system for onboarding or an advanced one."}}