| OLD | NEW |
| 1 --- | 1 --- |
| 2 layout: default | 2 layout: default |
| 3 title: "Why Not a Bytecode VM?" | 3 title: "Why Not a Bytecode VM?" |
| 4 rel: | 4 rel: |
| 5 author: bob-nystrom | 5 author: bob-nystrom |
| 6 author: florian-loitsch | 6 author: florian-loitsch |
| 7 --- | 7 --- |
| 8 | 8 |
| 9 <section> | 9 <section> |
| 10 <h1>Why Not a Bytecode VM?</h1> | 10 <h1>Why Not a Bytecode VM?</h1> |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 step" is just refreshing the browser. Dart must be equally simple to use. | 129 step" is just refreshing the browser. Dart must be equally simple to use. |
| 130 We want to make | 130 We want to make |
| 131 development in the browser a great experience. Not only do we want to keep the | 131 development in the browser a great experience. Not only do we want to keep the |
| 132 fast 'edit-refresh-view' cycle that JavaScript developers love, but | 132 fast 'edit-refresh-view' cycle that JavaScript developers love, but |
| 133 we also want to introduce web developers to the powerful live editing | 133 we also want to introduce web developers to the powerful live editing |
| 134 features that Smalltalk developers pioneered. | 134 features that Smalltalk developers pioneered. |
| 135 Sure, you may minify or do other obfuscation when you deploy, but your core | 135 Sure, you may minify or do other obfuscation when you deploy, but your core |
| 136 iteration loop is fast and easy because the engine for your language runs it | 136 iteration loop is fast and easy because the engine for your language runs it |
| 137 directly from source.</p> | 137 directly from source.</p> |
| 138 | 138 |
| 139 <aside class="note">You may ask, "but doesn't Dart require an explicit compile s
tep to | 139 <p> |
| 140 You may ask, "but doesn't Dart require an explicit compile step to |
| 140 compile to JavaScript for running in the browser?" Well, yes, but we're talking | 141 compile to JavaScript for running in the browser?" Well, yes, but we're talking |
| 141 specifically about the native Dart VM here. And we <em>are</em> working to make | 142 specifically about the native Dart VM here. And we <em>are</em> working to make |
| 142 the Dart-to-JavaScript side of things as nice of a development experience as we
can. Iteration time matters.</aside> | 143 the Dart-to-JavaScript side of things as nice of a development experience as we
can. Iteration time matters. |
| 144 </p> |
| 143 | 145 |
| 144 <h2>Compiling to source</h2> | 146 <h2>Compiling to source</h2> |
| 145 | 147 |
| 146 <p>Of course, Scala and <a href='http://research.microsoft.com/en-us/um/cambridg
e/projects/fsharp/'>F#</a> show that a new language can be developed | 148 <p>Of course, Scala and <a href='http://research.microsoft.com/en-us/um/cambridg
e/projects/fsharp/'>F#</a> show that a new language can be developed |
| 147 for an existing VM, but it's possible to do that without bytecode: you can compi
le to source. Right now, if you want a new language that runs in the browser, co
mpiling to JavaScript is your only option. <a href="http://jashkenas.github.com/
coffee-script/">CoffeeScript</a> is the most prominent example of this today, bu
t there are <a href="https://github.com/jashkenas/coffee-script/wiki/List-of-lan
guages-that-compile-to-JavaScript">many others</a>. Dart itself compiles to Java
Script to let you use it on browsers that don't support Dart natively.</p> | 149 for an existing VM, but it's possible to do that without bytecode: you can compi
le to source. Right now, if you want a new language that runs in the browser, co
mpiling to JavaScript is your only option. <a href="http://jashkenas.github.com/
coffee-script/">CoffeeScript</a> is the most prominent example of this today, bu
t there are <a href="https://github.com/jashkenas/coffee-script/wiki/List-of-lan
guages-that-compile-to-JavaScript">many others</a>. Dart itself compiles to Java
Script to let you use it on browsers that don't support Dart natively.</p> |
| 148 | 150 |
| 149 <p>Likewise, if you want a new language that runs on Dart's native VM, you could
compile that language to Dart. Doing so will then let your language take advant
age of all of the optimizations that the VM does when it compiles from source to
machine code. In other words, Dart <em>is</em> your (highly specialized) byteco
de.</p> | 151 <p>Likewise, if you want a new language that runs on Dart's native VM, you could
compile that language to Dart. Doing so will then let your language take advant
age of all of the optimizations that the VM does when it compiles from source to
machine code. In other words, Dart <em>is</em> your (highly specialized) byteco
de.</p> |
| 150 | 152 |
| 151 </section> | 153 </section> |
| OLD | NEW |