{"action":"created","issue":{"url":"https://api.github.com/repos/MeteorCode/Pathway/issues/52","labels_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/52/labels{/name}","comments_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/52/comments","events_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/52/events","html_url":"https://github.com/MeteorCode/Pathway/issues/52","id":91073287,"number":52,"title":"Select scripting language for game engine development","user":{"login":"ArcticLight","id":3382729,"avatar_url":"https://avatars.githubusercontent.com/u/3382729?v=3","gravatar_id":"","url":"https://api.github.com/users/ArcticLight","html_url":"https://github.com/ArcticLight","followers_url":"https://api.github.com/users/ArcticLight/followers","following_url":"https://api.github.com/users/ArcticLight/following{/other_user}","gists_url":"https://api.github.com/users/ArcticLight/gists{/gist_id}","starred_url":"https://api.github.com/users/ArcticLight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArcticLight/subscriptions","organizations_url":"https://api.github.com/users/ArcticLight/orgs","repos_url":"https://api.github.com/users/ArcticLight/repos","events_url":"https://api.github.com/users/ArcticLight/events{/privacy}","received_events_url":"https://api.github.com/users/ArcticLight/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MeteorCode/Pathway/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2015-06-25T20:54:14Z","updated_at":"2015-06-27T18:14:10Z","closed_at":null,"body":"We've talked briefly about possibly shelving BeanShell as language of choice, mainly because BeanShell doesn't have great security (it can instantiate anything on the system class loader) and is super old.\r\n\r\nIn the interests of getting ModLoader feature-complete (again) after removing BeanShell, we should select a new implementation language.\r\n\r\nI would suggest Lua or Javascript mainly because they are the most common (and easiest to access because they have implementations that will run on the JVM) but am open to other suggestions.\r\n\r\nUltimately I feel like this one should be Hawk's final choice. I'll happily implement whatever language, but a choice does need to be made."},"comment":{"url":"https://api.github.com/repos/MeteorCode/Pathway/issues/comments/116112708","html_url":"https://github.com/MeteorCode/Pathway/issues/52#issuecomment-116112708","issue_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/52","id":116112708,"user":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"created_at":"2015-06-27T18:14:10Z","updated_at":"2015-06-27T18:14:10Z","body":"Here are some assorted additional thoughts I've had that we might want to consider:\r\n\r\n + What version of ExcemaScript does the Nashorn interpreter support? If it's ES6 compliant, we might want to design our script-facing API with the new features in ES6 in mind.\r\n + What methods are there for optimising the performance of JS running in Nashorn? Can commonly used scripts or hot code paths be precompiled to Java bytecode? Will this be done automagically or do we have to ask Nashorn to do it for us? Does JS running in Nashorn benefit from JVM JIT compilation?\r\n + Are there ways that we can provide Nashorn with more convenient access to specific Java classes and objects? It would be cool to provide less gross syntax for accessing Pathway model components.\r\n + The [Web Resource Optimizer for Java](https://code.google.com/p/wro4j/) (wro4j) is a Java library for managing web assets pipelines. I believe it contains a Java implementation of the CoffeeScript compiler. If we wanted to, I think we could use this to compile CoffeeScript scripts to JS before passing them to Nashorn to interpret. I don't know much about CoffeeScript, but I think @ArcticLight likes it...?"}}