{"action":"created","issue":{"url":"https://api.github.com/repos/melt-umn/silver/issues/175","repository_url":"https://api.github.com/repos/melt-umn/silver","labels_url":"https://api.github.com/repos/melt-umn/silver/issues/175/labels{/name}","comments_url":"https://api.github.com/repos/melt-umn/silver/issues/175/comments","events_url":"https://api.github.com/repos/melt-umn/silver/issues/175/events","html_url":"https://github.com/melt-umn/silver/issues/175","id":233659404,"number":175,"title":"lib:langextra (or a better name)","user":{"login":"remexre","id":4196789,"avatar_url":"https://avatars2.githubusercontent.com/u/4196789?v=3","gravatar_id":"","url":"https://api.github.com/users/remexre","html_url":"https://github.com/remexre","followers_url":"https://api.github.com/users/remexre/followers","following_url":"https://api.github.com/users/remexre/following{/other_user}","gists_url":"https://api.github.com/users/remexre/gists{/gist_id}","starred_url":"https://api.github.com/users/remexre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/remexre/subscriptions","organizations_url":"https://api.github.com/users/remexre/orgs","repos_url":"https://api.github.com/users/remexre/repos","events_url":"https://api.github.com/users/remexre/events{/privacy}","received_events_url":"https://api.github.com/users/remexre/received_events","type":"User","site_admin":false},"labels":[{"id":264198267,"url":"https://api.github.com/repos/melt-umn/silver/labels/IDE","name":"IDE","color":"bfe5bf","default":false},{"id":250726240,"url":"https://api.github.com/repos/melt-umn/silver/labels/question","name":"question","color":"cc317c","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2017-06-05T17:41:34Z","updated_at":"2017-06-05T21:33:26Z","closed_at":null,"body":"I'm thinking about refactoring lib:monto a bit before it's merged, to try to put everything that's \"not compilation\" under a single grammar. Tentatively planning:\r\n\r\n * Existing things\r\n   * docgen backend -> `lib:langextra:docgen`\r\n     * By backend, I mean the parts that go `RootSpec -> genFiles`\r\n     * It might also make sense to rework it a bit when it gets moved -- it would make sense to me to only parse comments as Markdown, then generate everything else directly as HTML.\r\n     * The reason why this would be somewhere \"global\" instead of in Silver is mainly for the third bullet point under `lib:langextra:hoogle` below; we probably shouldn't use Jekyll as a documentation generator, but rather something made for that purpose; dumping decls to JSON is a pretty good way to let us change how the actual HTML is generated without needing to do \"annoying\" stuff (i.e. implement Markdown/CommonMark parsing in Silver instead of using an existing implementation).\r\n     * If we're generic over what a decl is, we might be able to reuse this to e.g. act as a compiler-supported documentation generator for ableC. (I'm guessing that e.g. Doxygen isn't happy with getting already preprocessed sources, but I don't know for sure.)\r\n   * `lib:monto` -> `lib:langextra:monto`\r\n     * This would probably get split so everything that's only for the Monto protocol lives in `lib:langextra:monto`, and everything reusable goes in `lib:langextra`.\r\n * \"for the future\"\r\n   * Hoogle backend in `lib:langextra:hoogle`\r\n     * This is just dumping function and type definitions as Haskell values, so it should be relatively easy?\r\n     * See [Roogle](https://github.com/ajtulloch/roogle), which is basically the same thing for Rust -- the first section of its README.md shows the Haskell values needed.\r\n     * Alternatively (this is what Roogle does), have the doc tool dump decls as JSON and then have a separate program (part of the Hoogle/Roogle server) convert the JSON to Haskell values.\r\n   * HTML highlighting in `lib:langextra:html`\r\n     * If it's just wrapping every token in a `<span>` with the lexer classes as HTML/CSS classes, then doing the styling with external CSS, this is almost trivial.\r\n   * LaTeX highlighting in `lib:langextra:latex`\r\n     * This is also theoretically pretty easy; the [minted](https://github.com/gpoore/minted) LaTeX package for syntax highlighting uses Pygments, but allows setting a custom version of that executable with `\\MintedPygmentize`.\r\n     * Making it should just require faking `pygmentize`'s command-line interface.\r\n     * Alternatively, it'd also be reasonably easy to output the actual LaTeX ourselves.\r\n\r\n\r\nAlso, I don't have any strong attachment to `langextra` as a name. I'm also considering `langservices`, but any other suggestions are more than welcome!\r\n\r\n---\r\n\r\nAlso, I'm thinking about trying to convert Silver's `Message` to the langutil one in the `feature/monto-in-silver` branch -- it's a bit unergonomic to need to have two versions of every function that works on messages, one for Silver and one for everything else.\r\n\r\n---\r\n\r\nThoughts?"},"comment":{"url":"https://api.github.com/repos/melt-umn/silver/issues/comments/306316618","html_url":"https://github.com/melt-umn/silver/issues/175#issuecomment-306316618","issue_url":"https://api.github.com/repos/melt-umn/silver/issues/175","id":306316618,"user":{"login":"ericvanwyk","id":3383671,"avatar_url":"https://avatars3.githubusercontent.com/u/3383671?v=3","gravatar_id":"","url":"https://api.github.com/users/ericvanwyk","html_url":"https://github.com/ericvanwyk","followers_url":"https://api.github.com/users/ericvanwyk/followers","following_url":"https://api.github.com/users/ericvanwyk/following{/other_user}","gists_url":"https://api.github.com/users/ericvanwyk/gists{/gist_id}","starred_url":"https://api.github.com/users/ericvanwyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericvanwyk/subscriptions","organizations_url":"https://api.github.com/users/ericvanwyk/orgs","repos_url":"https://api.github.com/users/ericvanwyk/repos","events_url":"https://api.github.com/users/ericvanwyk/events{/privacy}","received_events_url":"https://api.github.com/users/ericvanwyk/received_events","type":"User","site_admin":false},"created_at":"2017-06-05T21:33:26Z","updated_at":"2017-06-05T21:33:26Z","body":"@tedinski: That makes sense.  In the short term everything is still in the Silver repo somewhere under the `silver` name space but in the long term we can split these into different packages (as jars) that get distributed based on the need for specific things.  So, things that come with extra runtime stuff (ZeroMQ jars for Monto for example) naturally live in `silver:support` (or something) and things that don't need runtime support are in `silver:langutil` and are presumably more commonly used.\r\nI think doc-gen and Monto would have similar usage patterns (or let's assume so for the sake of this discussion) and then the different is really about runtime support or not.  Right?"}}
{"actor":{"display_login":"ericvanwyk"}}