Skip to content
Node.js Interpreter for iOS 7
Objective-C Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Important: This project is no longer maintained. The code is still available, but please don't regard it as anything but a hack. Please do not open new support tickets.

Interpreter Build Status Gitter chat

This is an example project implementing a Node.JS interpreter as an iOS app, utilising the Nodelike framework.

Nodelike is a project to implement a roughly Node.JS-compatible interface using JavaScriptCore.framework on iOS 7 and OS X Mavericks.

(JavaScriptCore hasn't been available before iOS 7, and on OS X the project makes extensive use of the newly-updated 10.9-only Objective-C API. Previously on 10.8 there existed only a very low-level and very verbose C API.)

This is currently in a very incomplete state. It could, however, become usable over the following weeks.

demo time

The goals

  • to be drop-in compatible with the current nodejs master
  • to be very lightweight
  • to reuse javascript code from node (/lib)
  • to provide the most minimal binding that is possible (via libuv)
  • NOT to achieve Node.js performance (this is meant as a client-side, not a server-side application)
  • NOT to be backwards-compatible (nodejs cutting edge and newest iOS/OS X required)

What's working right now

  • console.log()
  • process: .argv, .env, .exit(), .nextTick()
  • require() for native modules
  • fs
  • net
  • http
  • timers
  • util
  • url
  • events
  • path
  • stream
  • querystring
  • punycode
  • assert

How to compile

  1. You need to have CocoaPods installed. If you do not have already, run sudo gem install cocoapods.
  2. Install the dependencies via pod install.
  3. Open Interpreter.xcworkspace in Xcode and run!

How to use the app

You can enter Javascript code into the TextView and execute that via a tap on the Execute button. After each execution, when the result of the executed script is not undefined, a popover will appear containing that result.

Have fun!

You can’t perform that action at this time.