OLD | NEW |
1 Frog is a dart compiler implemented in dart. It is currently focused on | 1 Frog is a dart compiler implemented in dart. It is currently focused on |
2 compiling dart code to efficient and readable javascript code. However, it | 2 compiling dart code to efficient and readable javascript code. However, it |
3 is ultimately intended to be the basis for future code analysis tools and | 3 is ultimately intended to be the basis for future code analysis tools and |
4 development environments when these can be built in dart as well. Two | 4 development environments when these can be built in dart as well. Two |
5 very early examples of this kind of use are in the samples directory: | 5 very early examples of this kind of use are in the samples directory: |
6 * doc.dart - minimal documentation generator | 6 * doc.dart - minimal documentation generator |
7 * ifrog.dart - minimal command-line REPL for dart | 7 * ifrog.dart - minimal command-line REPL for dart |
8 | 8 |
9 | 9 |
10 | 10 |
11 To use frog: | 11 To use frog: |
12 | 12 |
13 1) Frog is now included in the checkout of the public repo of the bleeding_edge | 13 1) Frog is now included in the checkout of the public repo of the bleeding_edge |
14 branch. The code will be located under dart/frog. | 14 branch. The code will be located under dart/frog. |
15 | 15 |
16 2) Make sure you have 'node' in your path. | 16 2) From the dart/frog directory, run the presubmit script to check your |
17 See http://nodejs.org/ and https://github.com/joyent/node/wiki/Installation | |
18 for how to install. Notes: | |
19 - If using "git clone", use local disk rather than an NFS working dir, | |
20 as NFS will disallow "sudo make install". | |
21 - v0.6 is currently popular. | |
22 # TODO(jimhug): Move this dependency to third_party. | |
23 | |
24 3) From the dart/frog directory, run the presubmit script to check your | |
25 installation is all working. | 17 installation is all working. |
26 frog$ ./presubmit.py | 18 frog$ ./presubmit.py |
27 | 19 |
28 | 20 |
29 BEFORE YOU SUBMIT | 21 BEFORE YOU SUBMIT |
30 | 22 |
31 Before you submit, you should: | 23 Before you submit, you should: |
32 | 24 |
33 1) Run the html tests: | 25 1) Run the html tests: |
34 | 26 |
35 $ ./frog.py --html -- tests/htmltest.dart | 27 $ ./frog.py --html -- tests/htmltest.dart |
36 $ ./frog.py --html -- tests/canvastest.dart | 28 $ ./frog.py --html -- tests/canvastest.dart |
37 | 29 |
38 These will open a browser -- verify in the console that no errors | 30 These will open a browser -- verify in the console that no errors |
39 happened. | 31 happened. |
40 | 32 |
41 2) Run the presubmit script: | 33 2) Run the presubmit script: |
42 | 34 |
43 $ ./presubmit.py | 35 $ ./presubmit.py |
44 | 36 |
45 3) Make sure to include any changes to frogsh in your commit. | |
46 | |
47 Note: | 37 Note: |
48 | 38 |
49 If you make any changes to files under tests, you are expected to ensure that | 39 If you make any changes to files under tests, you are expected to ensure that |
50 you don't break any of the other configurations. If you only change the status
of tests for frog or frogsh, you should be okay. However, if you | 40 you don't break any of the other configurations. If you only change the status
of tests for frog, you should be okay. However, if you |
51 modify any of the tests themselves, please run the tests with both vm and | 41 modify any of the tests themselves, please run the tests with both vm and |
52 dartc configurations before checking in. | 42 dartc configurations before checking in. |
53 | 43 |
54 | 44 |
55 Details: | 45 Details: |
56 | 46 |
57 You can use build.py and test.py (that are run by the presubmit script): | 47 You can use build.py and test.py (that are run by the presubmit script): |
58 | 48 |
59 $ ../tools/build.py --mode=release,debug | 49 $ ../tools/build.py --mode=release,debug |
60 $ ../tools/test.py --report -t 5 -p color --mode=release --component=frog,frog
sh language corelib leg | 50 $ ../tools/test.py --report -t 5 -p color --mode=release --component=frog lang
uage corelib leg |
61 | 51 |
62 The 'frog' component is frog running on the VM. The 'frogsh' | 52 The 'frog' component is frog running on the VM. |
63 component is from running selfhosted on node.js. | |
64 | |
65 To build the self-hosted compiler called frogsh (for frog self-hosted), run: | |
66 | |
67 $ ./frog.py --out=frogsh --compile-only --enable_type_checks frog.dart | |
68 | |
69 You can also build and check the self-hosted compiler from itself by running: | |
70 $ ./frogsh --out=frogsh frog.dart tests/hello.dart | |
71 This should print 'hello world'. | |
72 | |
73 To just run the self-hosted compiler, you can pass it a single dart file: | |
74 | |
75 $ ./frogsh tests/hello.dart | |
76 This should also print 'hello world' - without rebuilding frogsh itself. | |
OLD | NEW |