|
53 | 53 |
|
54 | 54 | \chapter{Introduction} % FIXME
|
55 | 55 |
|
56 |
| -With the only standardized and widely supported language for the Web being |
57 |
| -JavaScript, it became more common for other languages to support JavaScript as |
58 |
| -a compile target, with developers writing software in those other languages and |
59 |
| -compiling the software to JavaScript to run on the Web. |
| 56 | +The modern Web is based on three primary integrated components: document markup |
| 57 | +using HTML, styling using CSS, and interactivity using the JavaScript |
| 58 | +programming language. |
| 59 | +With JavaScript as the only standardized and widely supported programming |
| 60 | +language for the platform, as the usage of the Web as a universal platform |
| 61 | +continued to expand authors of software projects wished to enable their |
| 62 | +software to be run on the Web but had reasons, some technical and others more |
| 63 | +superficial, requiring the use of different source languages. |
| 64 | +Often, this was a lower-level language used for performance reasons, a stricter |
| 65 | +language for safety reasons, or support for existing libraries or large |
| 66 | +projects in existing languages that cannot easily be ported to JavaScript. |
| 67 | +To enable this, it became common for other programming languages to support |
| 68 | +JavaScript as a compile target, allowing developers to write software to be run |
| 69 | +on the Web without having to write JavaScript directly. |
| 70 | + |
60 | 71 | Some of these source languages were designed intentionally with this goal in
|
61 |
| -mind, such as CoffeeScript. |
62 |
| -The goals of these projects were to provide developers the same distribution |
63 |
| -platform (the Web) but with the freedom of writing their programs in a |
64 |
| -different syntax. |
65 |
| -However, with the usage of the Web as a universal platform continued to expand, |
66 |
| -authors of other projects wished to compile their software to be run on the |
67 |
| -Web, but had strong reasons requiring the use of a different source language. |
68 |
| -Often, this was a lower-level language used for |
69 |
| -performance reasons, a stricter language for safety reasons, or support for |
70 |
| -existing libraries or large projects in existing languages that cannot easily |
71 |
| -be ported to JavaScript. |
72 |
| -Often, this language is C or C++. |
73 |
| - |
74 |
| -The Emscripten project compiles LLVM\footnote{\url{http://llvm.org/}} |
75 |
| -intermediate representation software, which can be generated from C/C++, to |
76 |
| -JavaScript\cite{AboutEmscripten}. |
| 72 | +mind, such as CoffeeScript\cite{CoffeeScript}, while others such as C or C++ |
| 73 | +had the capability added by external alternative compilers. |
| 74 | +The Emscripten\cite{AboutEmscripten} project compiles |
| 75 | +LLVM\footnote{\url{http://llvm.org/}} intermediate representation software, |
| 76 | +which can be generated from C/C++, to JavaScript. |
77 | 77 | The resulting compiled program utilizes a subset of JavaScript's available
|
78 | 78 | syntax and operations, called asm.js, which are heavily optimized by JavaScript
|
79 | 79 | interpreters and just-in-time compilers, as well as the underlying
|
80 | 80 | hardware\cite{AsmJsResig}.
|
81 |
| - |
82 | 81 | While this clever usage of the existing platform provided performance
|
83 |
| -improvements, JavaScript was not designed as a low-level, performant compile |
84 |
| -target, and the resulting benefits of asm.js relied heavily on JavaScript |
85 |
| -runtime implementations. |
| 82 | +improvements and developer satisfaction, JavaScript was not designed as a |
| 83 | +low-level, performant compile target, and the resulting benefits of asm.js |
| 84 | +relied heavily on JavaScript runtime implementations. |
86 | 85 | An attempt to define a formal specification and standardize the platform began
|
87 | 86 | in 2013, but was abandoned shortly thereafter in 2014\cite{AsmJsSpec}.
|
88 |
| - |
89 | 87 | The abandonment of asm.js's formalization coincided with discussions amongst
|
90 | 88 | its project leaders for defining a new ``proper'' bytecode solution for native
|
91 | 89 | code on the Web; followed shortly thereafter by initial discussions between
|
|
0 commit comments