Microsoft Asks Node.js To Allow ChakraCore (Edge) Alongside Google's V8 Engine (softpedia.com)
campuscodi writes: Microsoft has submitted an official pull request to the Node.js project, through which it's asking the project's maintainers to enable support for ChakraCore, the JavaScript engine packed inside Microsoft's Edge browser, as an alternative to Node's built-in V8 engine, developed by Google. Earlier in December 2015, Microsoft open-sourced ChakraCore. Microsoft has also been one of the biggest companies to adopt Node.js early on, and is also part of the Node.js Foundation's Board o Directors. The main reason to add ChakraCore support in Node.js will help the IoT version of Windows 10 to run JS apps on IoT devices, just like Samsung is also thinking about.
Who sits on the board, and whose thumbs are they gonna twist?
Edge is a lot faster than Chrome in a lot of areas and handily spanks Firefox. Nothing wrong with competition.
Why would this be beneficial to anyone but microsoft?
V8 is already cross platform and open source, what is the need to have alternative engines?
We've been here before. What's the point of Linux when we already have 386BSD?
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Perhaps it is or perhaps it isn't. If it's only marginally better, or not better at all, then why would Node.js want the maintenance headache of two backends with no meaningful differentiation?
V8 doesn't support Windows?
the Node.js Foundation's Board o Directors
Yargh, and it be a fine board too.
systemd is Roko's Basilisk.
support standards instead.
Isn't Google the scarier massive corporation these days?
There's more choice of OS than ever (if you consider mobile, too) - but Google have a lot of power over huge aspects of the Internet that Microsoft has very little influence over
Then you expend those resources. MS is submitting a PR, which means they did the work. If you want them to use V8 and not their own code, convince them.
Improving V8 would be more worthwhile to anyone who doesn't have a crippling case of not-invented-here syndrome.
And I don't get the IoT angle here... no hobbyists care about W10IoT, the Microsoft JS engine doesn't make the bait any better. Linux on RaspberryPi is a full fledged OS, not a glorified app bootloader.
Improving V8 is not on the Node.js agenga. And how is having options a bad thing? Put down the MS hate for a minute and try to form a rational opinion.
Microsoft will quickly add non standard extensions to their engine and suddenly you'll have node.js applications which will only work if engine == ChakraCore.
That's how Microsoft plays. This is not a "good competition", the only winner is MS.
They're pretending to be very nice those days, like a bully that's been ousted from the playground. Because they've been ousted from the playground.
But it's OK, we have new friends now and we don't need you any more Microsoft.
Now, let the MS PR guys down vote my comment into oblivion.
Options are great! I have about half a dozen different JavaScript runtimes on this Linux box alone - V8 for Chrome, several different versions of JavaScript Core bound to webkit embedded in Qt and GTK+ plus SpiderMonkey for iceweasel. So I'm hardly going to drown with one more...
Does the world *need* yet another open source runtime? Well possibly not but if Microsoft are prepared to spend time and money in liberating Node from v8-isms then good luck to them. c.f. Python and Ruby have benefited in terms of multiple runtimes to the extent of portability. The bigger picture may be implementation-independent bindings to not just Node but other use cases above.
And before someone plays the "'brace, 'tend and 'tinguish" card, I'd give Nadella the benefit of the doubt before comparing his era to the dark days of Gates and Balmer.
I think that Microsoft needs to get their engine spread more than what Node.js needs the Microsoft engine.
However I also see a danger here - if Microsoft gets their engine as default into Node.js then they can change the licensing terms and effectively block Node.js from being viable. This has happened before, and will happen again. It smells like bait.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
I know a bunch of you think V8 is cross-platform enough, but really it isn't. It uses way too much memory for many platforms, there's no non-JIT mode (so can't run on iOS), oh and it is a female dog to compile.
Node.js' use cases are not limited to running a Node.js server. Embedding the core inside a bigger application and using it for some types of cross-platform logic, scripting, etc is a real thing. Maximizing compatibility is a must in that case.
Aside from just having options, various engines offer different features you may want to use, and better compatibility with your target platform.
JXCore has done a great job extending Node.js to support mobile, and they support SpiderMonkey and ChakraCore alongside V8. Compatibility wise they're king of the hill already, though they could still add JavaScriptCore and maybe even Duktape for good measure.
"We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile."
As node.js is FOSS, Microsoft is actually being very polite about this. They could've just forked the source code and made their own compatible release. As it stands, I hope the folks at node.js take heart that MS didn't just pull a dick move on them. One of the few times when MS is actually playing fair and even
Because at the time BSD/386 was still the subject of litigation so it was entirely possible that 386BSD might also disappear if the USL v. BSDi law suite had gone the way of USL.
Further while the case was settled in 1993, the terms of the settlement did not become public till 2004, so the potential for further litigation was seen to be a potential possibility as the terms of the settlement where not know.
This produced a window of opportunity for Linux to gain critical mass.
Yes, it does smell like bait. If Microsoft wants Node.js + Chakra then Microsoft should just fork Node.js and add Chakra. That way MS gets expend the labour ($) to maintain their own JavaScript environment (and not someone else).
Yeah ass-wipe and it's called JavaScript. Microsoft didn't support the JavaScript standard and there in created all kinds of problems. Fuck Microsoft. They don't adhere to standards.
The only bait i see here is having lines of products that require Windows to remotely administer or take advantage of all the bells and whistles.
I doubt it is about gaining control of node.js. Think along the lines of activeX plugins and such. A company uses node.js in their lights controller and MS makes a snazzy app for the Windows phone and tablets that use extensions they built into chakra.
I bet that's what it is about. That or they see the momentum and do not want third-party browsers to be required on all Windows devices just to have the best experience.
I think it's about getting control of node.js in order to take it off the market. Not to take control of how it's used on the market.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
Language and compiler design is a tricky, difficult problem and innovation is a good idea. Microsoft has a world-class language/compiler group.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Window sucked very much in 1993. I used Linux then. It was waaaaay better.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
The Windows 8 GUI is much better than the one on 7, and I am a Mac user before you accuse me of being a Windows fanboy.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Finally, a professional engineer who has a reasonable opinion as opposed to the MS hating bunch here. I would also love to use Chakra under node, would be interesting to see. Microsoft's C compiler, for one, runs rings around gcc.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Exactly. Language platforms are not just about the syntax and libraries. It is also about the implementation underneath. And there different implementations have different pros and cons.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Chakracore uses the standard MIT license, afaik.
File under 'M' for 'Manic ranting'
In embedded v8, it is a headache and a half to create custom types that vitally need to perform some task such as releasing used memory held by a native implementation upon cleanup. In v8, if you simply want to have some cleanup code get called, you have to allocate a Persistent along with your data, explicitly invoke SetWeak on that Persistent to specify the finalize callback, and then make sure that you keep the allocated persistent around for the lifetime of your custom object (which means that your finalize callback needs to release the memory allocated for the persistent itself in addition to releasing memory used by your custom type). In Chakracore, it appears that you can pass a finalize method directly to JsCreateExternalObject when you create the javascript value... no messing around with the extra storage that v8 needs for persistent types that are not allocated on the stack.
Also, the ChakraCore API also has an advantage of having a smaller and much simpler C API than v8's C++-only API.
Additionally, I have to say that Microsoft's documentation of Chakra's javascript runtime kicks ass over Google's documentation of v8's.
I haven't had a chance to play with Chakra yet myself, having only perused the API docs so far, and the projects that I'm working on that use embedded v8 are far too v8-entrenched to migrate them to using another javascript engine, but I will strongly consider using it in any future new projects.
File under 'M' for 'Manic ranting'
This request is pointless. It's clear how it's advantageous to Microsoft to have their engine used instead of Google's.
But it has NO advantageous to either the node.js project OR the people who make use of node.js. Please don't even consider it.
Node.js' use cases are not limited to running a Node.js server. Embedding the core inside a bigger application
Ding ding ding!!!
I am working on a project that needed an internal scripting engine. We first looked at nodeJS, but then realized exactly the limitation you point out: we can't "embed" node inside of an app. So I can't make in-process calls to/from JavaScript. There are various other wrappers that allow you to embed V8 into apps, and we went with one of those. But if Node supported that mode of operation, we would have used it. Most other scripting languages work this way: They are in-process libraries that let you call into and out of the language.
When I use node.js I want 100% of node.js available
It would be.
The OP is referring to features of the JavaScript engine, not features of the node environment. Think of it as the difference between the compiler and the platform. I can write C++ code on Windows using gcc, msvc, or llvm. Each compiler offers different features. But either way, 100% of the Windows API is available. Using another platform as an example: I can write C++ code on Linux using gcc or llvm. Both offer different features. But both support 100% of the POSIX APIs.
It seriously wasn't. Linux was horribly difficult to work with, and get work done with, in 1993. Windows 3.1x was also horrid in 1993, and most people ran some version of DOS with memory extenders and various TSR programs (like Norton SideKick)
In 1993 I owned a NeXTstation, and that was indeed a a lot better :-)
You do realize that ChakraCore is more standards compliant than the V8 that node uses, right..? From https://kangax.github.io/compa... es2015 features supported: spidermonkey=73%, v8=60%, ChakraCore=79%, Node 5=54%.
Improvements for non US standard keyboard layouts
VS Code dispatches key bindings based on [keyboard codes](https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85). In keybindings.json and in all the UI, we used to render the key codes with the produced characters under the US standard keyboard layout. We received feedback that this was very confusing, therefore, we created a new Node.js module native-keymap that is used in VS Code to render the key bindings using the system's current keyboard layout.