{"action":"created","issue":{"url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/issues/1318","labels_url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/issues/1318/labels{/name}","comments_url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/issues/1318/comments","events_url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/issues/1318/events","html_url":"https://github.com/fsprojects/VisualFSharpPowerTools/issues/1318","id":126666864,"number":1318,"title":"Restructure VFPT.Core for Out of Process Execution","user":{"login":"cloudRoutine","id":680051,"avatar_url":"https://avatars.githubusercontent.com/u/680051?v=3","gravatar_id":"","url":"https://api.github.com/users/cloudRoutine","html_url":"https://github.com/cloudRoutine","followers_url":"https://api.github.com/users/cloudRoutine/followers","following_url":"https://api.github.com/users/cloudRoutine/following{/other_user}","gists_url":"https://api.github.com/users/cloudRoutine/gists{/gist_id}","starred_url":"https://api.github.com/users/cloudRoutine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cloudRoutine/subscriptions","organizations_url":"https://api.github.com/users/cloudRoutine/orgs","repos_url":"https://api.github.com/users/cloudRoutine/repos","events_url":"https://api.github.com/users/cloudRoutine/events{/privacy}","received_events_url":"https://api.github.com/users/cloudRoutine/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/labels/discussion","name":"discussion","color":"207de5"},{"url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/labels/feature","name":"feature","color":"0052cc"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":24,"created_at":"2016-01-14T14:40:34Z","updated_at":"2016-01-16T13:32:59Z","closed_at":null,"body":"@dungpa  @duckmatt  earlier today @vasily-kirichenko ir and I were discussing how to improve VFPT so that it can handle the load of being employed in a production environment managing Solutions with dozens to hundreds of projects.\r\n\r\nOne way to achieve this is by moving the majority of VFPT's functionality into VFPT.Core Then we can run VFPT.Core as an independent 64bit process and send the results of its computations over sockets via protocol buffers/binary protocol/etc to a much lighter weight VSIX implementation\r\n\r\nWe also discussed building dependency graphs and symbol and reference caches to speed up\r\nrefactoring and to enable jump to anywhere\r\n\r\nThis architecture will also allow VFPT to play a more important role in F# tooling across the \r\nvarious editors. In which case I think it would be prudent to rename at least the core to `FSharpPowerTools.Core`\r\n    \r\n### Information from Core -> Editor\r\n- Outlining Spans `(int * int) list`\r\n- Depth Spans `(int * int) list` (^ often the same but not always)\r\n- Syntax Construct Spans  `(int * int * enum) list`\r\n- Code Generations  `(int * int * string) list`\r\n- Tooltips - `string list`\r\n- XMl Generation ` (int * int * string) list`\r\n- Highlight Usage `(int * int) list`\r\n- Navigate to Position `path * position`\r\n- QuickInfo Sig `string `\r\n- Generation Available\r\n- Refactor Options Available\r\n\r\n\r\n### Information from Editor -> Core\r\n- Editor Events\r\n    - cursor position change\r\n    - active file change\r\n    - build initiated\r\n    - active solution configuration change\r\n    - file open / close\r\n- Commands\r\n    - code gen\r\n    - xml gen / sig gen\r\n    - find references generate\r\n    - do rename\r\n    \r\n### Open Questions\r\n- How will formatting work in this new system?\r\n- Will metada conventions be supported? e.g. TODOs in comments\r\n- The slow speed of compilation is parially do to msbuild making poor evaluations of\r\nwhen things need to be recompiled. Should we take command over this process?"},"comment":{"url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/issues/comments/172207268","html_url":"https://github.com/fsprojects/VisualFSharpPowerTools/issues/1318#issuecomment-172207268","issue_url":"https://api.github.com/repos/fsprojects/VisualFSharpPowerTools/issues/1318","id":172207268,"user":{"login":"vasily-kirichenko","id":873919,"avatar_url":"https://avatars.githubusercontent.com/u/873919?v=3","gravatar_id":"","url":"https://api.github.com/users/vasily-kirichenko","html_url":"https://github.com/vasily-kirichenko","followers_url":"https://api.github.com/users/vasily-kirichenko/followers","following_url":"https://api.github.com/users/vasily-kirichenko/following{/other_user}","gists_url":"https://api.github.com/users/vasily-kirichenko/gists{/gist_id}","starred_url":"https://api.github.com/users/vasily-kirichenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasily-kirichenko/subscriptions","organizations_url":"https://api.github.com/users/vasily-kirichenko/orgs","repos_url":"https://api.github.com/users/vasily-kirichenko/repos","events_url":"https://api.github.com/users/vasily-kirichenko/events{/privacy}","received_events_url":"https://api.github.com/users/vasily-kirichenko/received_events","type":"User","site_admin":false},"created_at":"2016-01-16T13:32:59Z","updated_at":"2016-01-16T13:32:59Z","body":"> So I would more focus on making it usable in easy way from all interested clients.\r\n\r\nI disagree. Any comm layer which impacts overall performance more that say 5% should not be used (in VFPT I mean. If other clients can live with it, plug whatever they want)."}}