|
2 | 2 |
|
3 | 3 | Bytecode DSL is a DSL for automatically generating bytecode interpreters in Truffle. Just as Truffle DSL abstracts away the tricky and tedious details of AST interpreters, the goal of Bytecode DSL is to abstract away the tricky and tedious details of a bytecode interpreter – the bytecode encoding, control flow, quickening, and so on – leaving only the language-specific semantics for the language to implement. |
4 | 4 |
|
| 5 | +This document is the starting point for learning about Bytecode DSL. See the [resources](#resources) section below for more guides and tutorials. |
| 6 | + |
5 | 7 | Note: At the moment, Bytecode DSL is an **experimental feature**. We encourage you to give it a try, but be forewarned that its APIs are still susceptible to change a little bit between releases. |
6 | 8 |
|
7 | 9 | ## Why a bytecode interpreter? |
@@ -101,12 +103,19 @@ Bytecode DSL supports a variety of features, including: |
101 | 103 |
|
102 | 104 | ## Resources |
103 | 105 |
|
104 | | -As a next step, we recommend reading the [Getting Started guide](https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.api.bytecode.test/src/com/oracle/truffle/api/bytecode/test/examples/GettingStarted.java), which introduces Bytecode DSL by implementing a simple interpreter. |
| 106 | +As a next step, we recommend reading the [Getting Started tutorial](https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.api.bytecode.test/src/com/oracle/truffle/api/bytecode/test/examples/GettingStarted.java), which introduces Bytecode DSL by implementing a simple interpreter. |
| 107 | +Afterward, consult the [User guide](UserGuide.md) and [Javadoc](https://www.graalvm.org/truffle/javadoc/com/oracle/truffle/api/bytecode/package-summary.html) for more technical details about Bytecode DSL. |
105 | 108 |
|
106 | | -For more technical details about Bytecode DSL, consult the [User guide](UserGuide.md) and [Javadoc](https://www.graalvm.org/truffle/javadoc/com/oracle/truffle/api/bytecode/package-summary.html). |
107 | | -See also the guides and tutorials on [optimization](Optimization.md), [serialization][serialization], and [continuations][continuations]. |
| 109 | +In addition, there are several guides and tutorials which may be helpful: |
| 110 | +- [Optimization guide](Optimization.md) |
| 111 | +- [Short-circuit operations guide](ShortCircuitOperations.md) |
| 112 | +- [Runtime compilation guide](RuntimeCompilation.md) |
| 113 | +- [Parsing tutorial](https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.api.bytecode.test/src/com/oracle/truffle/api/bytecode/test/examples/ParsingTutorial.java) |
| 114 | +- [Serialization tutorial][serialization] |
| 115 | +- [Continuations tutorial][continuations] |
| 116 | +- [Builtins tutorial](https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.api.bytecode.test/src/com/oracle/truffle/api/bytecode/test/examples/BuiltinTutorial.java) |
108 | 117 |
|
109 | | -The Bytecode DSL implementation for [SimpleLanguage](https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/bytecode/SLBytecodeRootNode.java) may also serve as a useful reference. |
| 118 | +The Bytecode DSL implementation for [SimpleLanguage](https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/bytecode/SLBytecodeRootNode.java) is also a useful reference. |
110 | 119 |
|
111 | 120 |
|
112 | 121 | [serialization]: https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.api.bytecode.test/src/com/oracle/truffle/api/bytecode/test/examples/SerializationTutorial.java |
|
0 commit comments