• Stars
    star
    685
  • Rank 63,319 (Top 2 %)
  • Language
    C++
  • Created over 11 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Apple's JavaScript Engine, with modified project files for iOS

This Project has been discontinued – Mar. 2016

JSC is now a public library on iOS and tvOS. Ejecta has switched to the JSC library provided by the System. It still has some limitations (no native Typed Array API) as of 2016.03.30, but they are mostly workaroundable.

Also, compiling it for tvOS requires bitcode compilation now, which this fork of JSC does not support. You can read up on the fascinating details in my blog.

JavaScriptCore iOS

The JavaScriptCore library is part of the WebKit project and thus Open Source. However, in the sources you get from the WebKit SVN, the XCode project files are curiously missing an iOS compile target. The sources you get from opensource.apple.com are missing the project files altogether. You can't compile it at all. That's quite the Open Source spirit, Apple!

This repo aims to re-produce the missing iOS targets while staying on a somewhat up-to-date version.

Currently, the Safari-538.11.1 tag is used as the basis. With the current settings, the WTF and JavaScriptCore libraries can be compiled for armv7, armv7s, arm64 and x86 (for the iOS simulator). It will be compiled without Unicode collation support, because Apple claims ICU is a private framework on iOS. It should be AppStore compatible this way.

This version of JSC deprecates the typed-arrays branch of this repository. JSC now supports Typed Arrays natively, without any hacks.

Note however, that the source code of JSC was still modified:

  • It includes some API methods to work with Typed Arrays in native code. Have a look at the API/JSTypedArray.h, it declares three new API functions. The documentation for these functions can be found in this header file as well.
  • Number.MIN_VALUE was fixed to return DBL_MIN instead of 0 when the CPU has not enabled support denormal numbers.

Binaries

A compiled version of the libJavaScriptCore.a for armv7, armv7s, arm64 and the Simulator can be found in the source tree of the Ejecta project.

How to Compile

  1. Run python make.py.
  2. Get coffee! Building this takes a while ;P

You can do python make.py --help for more options.

More Repositories

1

qoi

The “Quite OK Image Format” for fast, lossless image compression
C
6,657
star
2

jsmpeg

MPEG1 Video Decoder in JavaScript
JavaScript
6,222
star
3

Ejecta

A Fast, Open Source JavaScript, Canvas & Audio Implementation for iOS
Objective-C
2,795
star
4

wipeout-rewrite

C
2,449
star
5

jsmpeg-vnc

A low latency, high framerate screen sharing server for Windows and client for browsers
C
2,329
star
6

Impact

HTML5 Game Engine
JavaScript
1,916
star
7

q1k3

A tiny FPS for js13k
JavaScript
1,471
star
8

underrun

Twin stick shooter game in 13kb of JavaScript/WebGL
JavaScript
1,075
star
9

pl_mpeg

Single file C library for decoding MPEG1 Video and MP2 Audio
C
695
star
10

qoa

The “Quite OK Audio Format” for fast, lossy audio compression
C
641
star
11

wipeout

WipEout (PSX) Model Viewer in WebGL/Three.js
JavaScript
520
star
12

voidcall

Real time strategy game in 13kb of JavaScript/WebGL
JavaScript
365
star
13

WebGLImageFilter

Fast image filters for Browsers with WebGL support
JavaScript
322
star
14

js-hqx

hqx Pixel Art Scaling Algorithm in JavaScript
JavaScript
187
star
15

TwoPointFive

3D View Plugin for the Impact HTML5 Game Engine
JavaScript
140
star
16

Quakespasm-Rift

Quake for Oculus Rift
C
138
star
17

Asaph

A micro-blogging system, focusing on collecting links and images
PHP
97
star
18

ttt

Tiny Texture Tumbler – A JS library and an editor to create textures
HTML
78
star
19

pagenode

Pagenode – No Bullshit Content Management
PHP
68
star
20

OculusWeb

A fast and lean HTTP/WebSocket Oculus Rift Tracking Server for Windows and Mac
C
57
star
21

impact-box2d

Box2D Plugin for the Impact Game Engine
JavaScript
51
star
22

JS360

A NET framework for JavaScript on the XBox with XNA.
C#
48
star
23

json-format

JSON Pretty Printer for JavaScript
JavaScript
38
star
24

picturelicious

Social Imaging Platform
PHP
36
star
25

impact-splash-loader

A loading screen for Impact that shows the Impact logo
JavaScript
34
star
26

rectpack

Super Simple Rectangle Packing for JS
JavaScript
13
star
27

arduboy-games

My Arduboy Mini Games
C
12
star
28

jQuery-JSH

Tiny jQuery Plugin for JavaScript SyntaxHighlighting
11
star
29

pagenode-legacy

Older version of Pagenode with a complete admin interface
PHP
2
star