{"action":"created","issue":{"url":"https://api.github.com/repos/nodejs/roadmap/issues/54","repository_url":"https://api.github.com/repos/nodejs/roadmap","labels_url":"https://api.github.com/repos/nodejs/roadmap/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/nodejs/roadmap/issues/54/comments","events_url":"https://api.github.com/repos/nodejs/roadmap/issues/54/events","html_url":"https://github.com/nodejs/roadmap/issues/54","id":128230993,"number":54,"title":"Should Node.js be VM neutral in the future?","user":{"login":"mikeal","id":579,"avatar_url":"https://avatars.githubusercontent.com/u/579?v=3","gravatar_id":"","url":"https://api.github.com/users/mikeal","html_url":"https://github.com/mikeal","followers_url":"https://api.github.com/users/mikeal/followers","following_url":"https://api.github.com/users/mikeal/following{/other_user}","gists_url":"https://api.github.com/users/mikeal/gists{/gist_id}","starred_url":"https://api.github.com/users/mikeal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikeal/subscriptions","organizations_url":"https://api.github.com/users/mikeal/orgs","repos_url":"https://api.github.com/users/mikeal/repos","events_url":"https://api.github.com/users/mikeal/events{/privacy}","received_events_url":"https://api.github.com/users/mikeal/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":115,"created_at":"2016-01-22T19:52:30Z","updated_at":"2016-04-09T23:46:47Z","closed_at":null,"body":"First and foremost, a bit of a reality check: The \"Node.js Platform\" is already available on a variety of VMs other than the V8 runtime we ship with:\r\n\r\n* Compile-to systems like the early Tessel project and now Samsung's JerryScript/IoT.js.\r\n* Microsoft ships a Node.js on top of Chakra for XBOX, Windows Phone and Windows 10 IoT.\r\n* [Nodyn](nodyn.io) is a Node.js API on top of the JVM.\r\n* JXCore is an \"extended Node.js API\" that can bind to Spidermonkey, V8 and Chakra.\r\n\r\nBecause of Node.js' massive ecosystem of packages, educational materials, and mind-share we should expect that in the future this will continue. Part of Node.js going everywhere is that it may need to be on other VMs in environments V8 can't go. There's not much that we can do to prevent this.\r\n\r\nSo the question becomes: Should Node.js Core move towards being VM neutral and supporting more VMs in the main project?\r\n\r\nSome of the advantages would be:\r\n* Normalization of the Native API (which currently breaks every major release)\r\n* De-facto standard for *any* JS VM to add Node.js support.\r\n* Centralization of test infrastructure would increase stability of non-V8 platforms.\r\n* Standardization of API could allow us to adopt new V8 versions outside of breaking major releases.\r\n\r\nThere's a long discussion about how to do this. Without guarantees from all the target VM vendors that *they* will support this neutral API it could fall on us to make that work. Historically V8 has made drastic API changes that were not supportable through the API `nan` had implemented.\r\n\r\nThere's also an open question about how to structure the tree and build and if we should continue sticking V8 and every supported VM in a vendor directory or pulling it in during build time.\r\n\r\nAnyway, let's have the discussion :)\r\n\r\n@nodejs/ctc "},"comment":{"url":"https://api.github.com/repos/nodejs/roadmap/issues/comments/207885711","html_url":"https://github.com/nodejs/roadmap/issues/54#issuecomment-207885711","issue_url":"https://api.github.com/repos/nodejs/roadmap/issues/54","id":207885711,"user":{"login":"kobalicek","id":6491301,"avatar_url":"https://avatars.githubusercontent.com/u/6491301?v=3","gravatar_id":"","url":"https://api.github.com/users/kobalicek","html_url":"https://github.com/kobalicek","followers_url":"https://api.github.com/users/kobalicek/followers","following_url":"https://api.github.com/users/kobalicek/following{/other_user}","gists_url":"https://api.github.com/users/kobalicek/gists{/gist_id}","starred_url":"https://api.github.com/users/kobalicek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kobalicek/subscriptions","organizations_url":"https://api.github.com/users/kobalicek/orgs","repos_url":"https://api.github.com/users/kobalicek/repos","events_url":"https://api.github.com/users/kobalicek/events{/privacy}","received_events_url":"https://api.github.com/users/kobalicek/received_events","type":"User","site_admin":false},"created_at":"2016-04-09T23:46:47Z","updated_at":"2016-04-09T23:46:47Z","body":"Any progress on JS-engine neutrality?\r\n\r\nI'm asking as I started developing a neutral API for myself, so I may share it when I have some results. But, if there is anybody who developed already something functional I would take a look first. Thanks."}}