[webkit-dev] node-jsc: A node.js port to the JavaScriptCore engine and iOS

Yusuke Suzuki yusukesuzuki at slowstart.org
Fri Sep 14 16:50:50 PDT 2018

Really great!

node-jsc sounds very exciting to me. From the users' view, t is nice if we
run app constructed in node.js manner in iOS devices.
In addition, from the JSC developers' view, it is also awesome. It allows
us to easily run node.js libraries / benchmarks / tests on JSC, which is
really great since,

1. We can run tests designed for node.js, it makes our JSC implementation
more solid.
2. We can run benchmarks designed for node.js including JS libraries. JS
libraries distributed in npm are more and more used in both node.js and
browser world.
If we can have a way to run benchmarks in popular libraries on JSC easily,
that offers great opportunities to optimize JSC on them.

On Sat, Sep 15, 2018 at 5:20 AM Filip Pizlo <fpizlo at apple.com> wrote:

> Wow!  That’s pretty cool!
> I think that it would be great for this to be upstreamed. Can you create a
> bug on bugs.webkit.org and post your patches for review?
> -Filip
> On Sep 13, 2018, at 4:02 PM, Koby Boyango <koby.b at mce.systems> wrote:
> Hi,
> I'm Koby Boyango, a senior researcher and developer at mce, and I've
> created node-jsc <https://github.com/mceSystems/node-jsc>, an
> experimental port of node.js to the JavaScriptCore engine and iOS
> specifically.
> node-jsc's core component, "jscshim" (deps/jscshim)
> <https://github.com/mceSystems/node-jsc/tree/master/deps/jscshim>,
> implements (parts of) v8 API on top of JavaScriptCore. It contains a
> stripped down version of WebKit's source code (mainly JSC and WTF). To
> build WebKit, I'm using CMake to build the JSCOnly port, with JSC\WTF
> compiled as static libraries. For iOS I'm using my own build script
> <https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/tools/build_jsc.py>
> with a custom toolchain file
> <https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/tools/ios.toolchain.cmake>.
> I'm really happy to hear that your node-jsc is using JSCOnly ports :)

> The project also includes node-native-script
> <https://github.com/mceSystems/node-native-script>, NativeScript's iOS
> runtime refactored as node-jsc native module, allowing access to native iOS
> APIs directly from javascript.
> So first of all, I wanted to share this project with the WebKit developer
> community.
> It's my first time working with WebKit, and node-jsc has been a great
> opportunity to experiment with it.
> Second, as I needed to make some minor changes\additions, I'm using my
> own fork <https://github.com/mceSystems/webkit>. I would love to discuss
> some of the changes I've made, and offer some patches if you'll find them
> useful.
> "WebKit Fork and Compilation
> <https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/docs/webkit_fork_and_compilation.md>"
> describes WebKit's usage in node-jsc and the major changes\additions I've
> made in my fork (node-jsc's README
> <https://github.com/mceSystems/node-jsc/blob/master/README.md> and jschim's
> documentation
> <https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/docs/jscshim.md>
> contains some more information).
> Great, it is really nice if you have a patch for upstream :)
Looking through the documents, I have one question on LLInt v.s. CLoop.

> Use the optimized assembly version of LLInt (JSC's interpreter), not
cloop. This requires enabling JIT support, although we won't be using the
JIT (but we can omit the FTL jit).

I would like to know how fast LLInt ASM interpreter is when comparing CLoop
If it shows nice speedup, enabling LLInt ASM interpreter without JIT for
major architectures (x64, ARM64) sounds nice.
As a bonus, if we offer this build configuration (using LLInt ASM
interpreter without JIT), we can enable SamplingProfiler for this, which is
disabled for CLoop builds.

Personally, I'm also interested in this thing. I'll set up the environment
to measure it later too :)

> Besides that, I will appreciate any opinions\ideas\insights\suggestions :)

> Koby
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20180915/3885396d/attachment.html>

More information about the webkit-dev mailing list