mirah 0.0.7-java → 0.0.8-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. data/History.txt +181 -0
  2. data/README.txt +6 -10
  3. data/Rakefile +86 -9
  4. data/bin/mirah +2 -0
  5. data/bin/mirahc +2 -0
  6. data/bin/mirahp +2 -0
  7. data/{bin/dubyp → examples/interfaces.mirah} +16 -9
  8. data/examples/macros/square.mirah +12 -0
  9. data/examples/macros/square_int.mirah +12 -0
  10. data/examples/macros/string-each-char.mirah +14 -0
  11. data/examples/maven/README.txt +2 -0
  12. data/examples/maven/pom.xml +23 -0
  13. data/examples/maven/src/main/mirah/hello_mirah.mirah +9 -0
  14. data/examples/rosettacode/100-doors.mirah +44 -0
  15. data/examples/rosettacode/99-bottles-of-beer.mirah +13 -0
  16. data/examples/rosettacode/README.txt +9 -0
  17. data/examples/rosettacode/boolean-values.mirah +29 -0
  18. data/examples/rosettacode/comments.mirah +2 -0
  19. data/examples/rosettacode/copy-a-string.mirah +10 -0
  20. data/examples/rosettacode/count-occurrences-of-a-substring.mirah +40 -0
  21. data/examples/rosettacode/create-a-file.mirah +6 -0
  22. data/examples/rosettacode/empty-string.mirah +9 -0
  23. data/examples/rosettacode/factorial.mirah +10 -0
  24. data/examples/rosettacode/fibonacci.mirah +21 -0
  25. data/examples/rosettacode/file-size.mirah +5 -0
  26. data/examples/rosettacode/fizz-buzz.mirah +21 -0
  27. data/examples/rosettacode/flatten-a-list.mirah +24 -0
  28. data/examples/rosettacode/guess-the-number.mirah +21 -0
  29. data/examples/rosettacode/is-string-numeric.mirah +127 -0
  30. data/examples/rosettacode/palindrome.mirah +14 -0
  31. data/examples/rosettacode/repeat-a-string.mirah +9 -0
  32. data/examples/rosettacode/reverse-a-string.mirah +6 -0
  33. data/examples/rosettacode/rot-13.mirah +20 -0
  34. data/examples/rosettacode/user-input.mirah +4 -0
  35. data/examples/sort_closure.mirah +1 -1
  36. data/javalib/dynalink-0.2.jar +0 -0
  37. data/javalib/mirah-bootstrap.jar +0 -0
  38. data/lib/mirah.rb +7 -16
  39. data/lib/mirah/ast.rb +22 -92
  40. data/lib/mirah/ast/call.rb +41 -9
  41. data/lib/mirah/ast/class.rb +34 -6
  42. data/lib/mirah/ast/flow.rb +17 -5
  43. data/lib/mirah/ast/intrinsics.rb +50 -8
  44. data/lib/mirah/ast/literal.rb +7 -0
  45. data/lib/mirah/ast/local.rb +9 -1
  46. data/lib/mirah/ast/method.rb +21 -8
  47. data/lib/mirah/ast/scope.rb +1 -1
  48. data/lib/mirah/ast/structure.rb +81 -15
  49. data/lib/mirah/ast/type.rb +4 -0
  50. data/{bin/dubyc → lib/mirah/commands.rb} +4 -11
  51. data/lib/mirah/commands/base.rb +54 -0
  52. data/lib/mirah/commands/compile.rb +39 -0
  53. data/{examples/wiki/Rakefile → lib/mirah/commands/parse.rb} +18 -17
  54. data/lib/mirah/commands/run.rb +73 -0
  55. data/lib/mirah/compiler.rb +37 -417
  56. data/lib/mirah/compiler/call.rb +45 -0
  57. data/lib/mirah/compiler/class.rb +81 -0
  58. data/lib/mirah/compiler/flow.rb +109 -0
  59. data/lib/mirah/compiler/literal.rb +130 -0
  60. data/lib/mirah/compiler/local.rb +59 -0
  61. data/lib/mirah/compiler/method.rb +44 -0
  62. data/lib/mirah/compiler/structure.rb +65 -0
  63. data/lib/mirah/compiler/type.rb +27 -0
  64. data/lib/mirah/env.rb +4 -6
  65. data/lib/mirah/generator.rb +61 -0
  66. data/lib/mirah/jvm/compiler.rb +8 -867
  67. data/lib/mirah/jvm/compiler/base.rb +270 -0
  68. data/lib/mirah/jvm/compiler/java_source.rb +779 -0
  69. data/lib/mirah/jvm/compiler/jvm_bytecode.rb +851 -0
  70. data/lib/mirah/jvm/method_lookup.rb +21 -2
  71. data/lib/mirah/jvm/source_generator/builder.rb +10 -13
  72. data/lib/mirah/jvm/source_generator/loops.rb +99 -93
  73. data/lib/mirah/jvm/source_generator/precompile.rb +3 -2
  74. data/lib/mirah/jvm/typer.rb +3 -3
  75. data/lib/mirah/jvm/types.rb +10 -426
  76. data/lib/mirah/jvm/types/array_type.rb +62 -0
  77. data/lib/mirah/jvm/types/basic_types.rb +1 -0
  78. data/lib/mirah/jvm/types/dynamic_type.rb +46 -0
  79. data/lib/mirah/jvm/types/factory.rb +23 -5
  80. data/lib/mirah/jvm/types/interface_definition.rb +20 -0
  81. data/lib/mirah/jvm/types/intrinsics.rb +15 -3
  82. data/lib/mirah/jvm/types/meta_type.rb +45 -0
  83. data/lib/mirah/jvm/types/methods.rb +12 -5
  84. data/lib/mirah/jvm/types/null_type.rb +27 -0
  85. data/lib/mirah/jvm/types/primitive_type.rb +38 -0
  86. data/lib/mirah/jvm/types/source_mirror.rb +266 -0
  87. data/lib/mirah/jvm/types/type.rb +173 -0
  88. data/lib/mirah/jvm/types/type_definition.rb +55 -0
  89. data/lib/mirah/jvm/types/unreachable_type.rb +27 -0
  90. data/lib/mirah/jvm/types/void_type.rb +19 -0
  91. data/lib/mirah/parser.rb +90 -0
  92. data/lib/mirah/plugin/gwt.rb +5 -5
  93. data/lib/mirah/plugin/java.rb +1 -1
  94. data/lib/mirah/transform.rb +4 -321
  95. data/lib/mirah/transform/ast_ext.rb +63 -0
  96. data/lib/mirah/transform/error.rb +13 -0
  97. data/lib/mirah/transform/helper.rb +761 -0
  98. data/lib/mirah/transform/transformer.rb +255 -0
  99. data/lib/mirah/typer.rb +2 -383
  100. data/{bin/duby → lib/mirah/typer/base.rb} +12 -10
  101. data/lib/mirah/typer/simple.rb +377 -0
  102. data/lib/mirah/util/argument_processor.rb +114 -0
  103. data/lib/mirah/util/class_loader.rb +37 -0
  104. data/lib/mirah/util/compilation_state.rb +51 -0
  105. data/lib/mirah/util/process_errors.rb +33 -0
  106. data/lib/mirah/version.rb +1 -1
  107. data/lib/mirah_task.rb +3 -2
  108. data/test/{test_ast.rb → core/test_ast.rb} +6 -0
  109. data/test/{test_compilation.rb → core/test_compilation.rb} +0 -0
  110. data/test/{test_env.rb → core/test_env.rb} +24 -25
  111. data/test/{test_macros.rb → core/test_macros.rb} +2 -4
  112. data/test/{test_typer.rb → core/test_typer.rb} +0 -3
  113. data/test/jvm/bytecode_test_helper.rb +181 -0
  114. data/test/{test_javac_compiler.rb → jvm/javac_test_helper.rb} +38 -22
  115. data/test/jvm/test_enumerable.rb +304 -0
  116. data/test/{test_java_typer.rb → jvm/test_java_typer.rb} +2 -4
  117. data/test/{test_jvm_compiler.rb → jvm/test_jvm_compiler.rb} +146 -443
  118. data/test/jvm/test_macros.rb +147 -0
  119. data/test/jvm/test_main_method.rb +15 -0
  120. data/test/{test_gwt.rb → plugins/test_gwt.rb} +0 -2
  121. metadata +103 -91
  122. data/bin/jrubyp +0 -52
  123. data/examples/wiki/src/org/mirah/wiki/MirahWiki.duby +0 -339
  124. data/examples/wiki/src/org/mirah/wiki/edit.eduby.html +0 -42
  125. data/examples/wiki/src/org/mirah/wiki/error.eduby.html +0 -2
  126. data/examples/wiki/src/org/mirah/wiki/layout.eduby.html +0 -69
  127. data/examples/wiki/src/org/mirah/wiki/parser.eduby.html +0 -7
  128. data/examples/wiki/src/org/mirah/wiki/view.eduby.html +0 -15
  129. data/examples/wiki/war/WEB-INF/classes/test/HeredocContext.class +0 -0
  130. data/examples/wiki/war/WEB-INF/classes/test/MirahParser.class +0 -0
  131. data/examples/wiki/war/WEB-INF/lib/appengine-api.jar +0 -0
  132. data/examples/wiki/war/WEB-INF/lib/dubydatastore.jar +0 -0
  133. data/examples/wiki/war/WEB-INF/lib/jmeta-runtime.jar +0 -0
  134. data/examples/wiki/war/WEB-INF/lib/pegdown-stubs.jar +0 -0
  135. data/examples/wiki/war/WEB-INF/pegdown.jar +0 -0
  136. data/examples/wiki/war/app.yaml +0 -21
  137. data/examples/wiki/war/public/favicon.ico +0 -0
  138. data/examples/wiki/war/public/images/appengine_duby.png +0 -0
  139. data/examples/wiki/war/public/images/back.gif +0 -0
  140. data/examples/wiki/war/public/images/dir.gif +0 -0
  141. data/examples/wiki/war/public/images/file.gif +0 -0
  142. data/examples/wiki/war/public/javascripts/prettify.js +0 -61
  143. data/examples/wiki/war/public/robots.txt +0 -0
  144. data/examples/wiki/war/public/stylesheets/main.css +0 -156
  145. data/examples/wiki/war/public/stylesheets/prettify.css +0 -1
  146. data/examples/wiki/war/public/stylesheets/sh_style.css +0 -66
  147. data/examples/wiki/war/public/stylesheets/source.css +0 -21
  148. data/examples/wiki/war/public/wmd/images/bg-fill.png +0 -0
  149. data/examples/wiki/war/public/wmd/images/bg.png +0 -0
  150. data/examples/wiki/war/public/wmd/images/blockquote.png +0 -0
  151. data/examples/wiki/war/public/wmd/images/bold.png +0 -0
  152. data/examples/wiki/war/public/wmd/images/code.png +0 -0
  153. data/examples/wiki/war/public/wmd/images/h1.png +0 -0
  154. data/examples/wiki/war/public/wmd/images/hr.png +0 -0
  155. data/examples/wiki/war/public/wmd/images/img.png +0 -0
  156. data/examples/wiki/war/public/wmd/images/italic.png +0 -0
  157. data/examples/wiki/war/public/wmd/images/link.png +0 -0
  158. data/examples/wiki/war/public/wmd/images/ol.png +0 -0
  159. data/examples/wiki/war/public/wmd/images/redo.png +0 -0
  160. data/examples/wiki/war/public/wmd/images/separator.png +0 -0
  161. data/examples/wiki/war/public/wmd/images/ul.png +0 -0
  162. data/examples/wiki/war/public/wmd/images/undo.png +0 -0
  163. data/examples/wiki/war/public/wmd/images/wmd-on.png +0 -0
  164. data/examples/wiki/war/public/wmd/images/wmd.png +0 -0
  165. data/examples/wiki/war/public/wmd/showdown.js +0 -421
  166. data/examples/wiki/war/public/wmd/wmd-base.js +0 -1799
  167. data/examples/wiki/war/public/wmd/wmd-plus.js +0 -311
  168. data/examples/wiki/war/public/wmd/wmd.js +0 -73
  169. data/examples/wiki/war/src/org/mirah/wiki/MirahWiki.duby +0 -339
  170. data/examples/wiki/war/src/org/mirah/wiki/edit.eduby.html +0 -42
  171. data/examples/wiki/war/src/org/mirah/wiki/error.eduby.html +0 -2
  172. data/examples/wiki/war/src/org/mirah/wiki/layout.eduby.html +0 -69
  173. data/examples/wiki/war/src/org/mirah/wiki/parser.eduby.html +0 -7
  174. data/examples/wiki/war/src/org/mirah/wiki/view.eduby.html +0 -15
  175. data/javalib/dynalink-0.1.jar +0 -0
  176. data/javalib/jsr292-mock.jar +0 -0
  177. data/lib/mirah/class_loader.rb +0 -35
  178. data/lib/mirah/compilation_state.rb +0 -28
  179. data/lib/mirah/impl.rb +0 -273
  180. data/lib/mirah/jvm/base.rb +0 -267
  181. data/lib/mirah/jvm/source_compiler.rb +0 -760
  182. data/lib/mirah/transform2.rb +0 -752
@@ -1,3 +1,184 @@
1
+ === 0.0.8 / 2011-08-31
2
+
3
+ af43b77 Merge pull request #132 from hackergarten/master
4
+ 416e130 readme file
5
+ fbf6ddc fix #129 call next anyway if there is no block arg
6
+ 18cef56 s/duby/mirah/ in a test
7
+ 945558b pull enumerable/loop tests into separate file
8
+ 585856e s/duby/mirah/ in transformer
9
+ f0cc410 adding a couple method docs
10
+ 11dac9a push some code around and do a few s/duby/mirah/ s
11
+ 17b0031 wrap the bodies of blocks passed to macros as well
12
+ 02e5cbe clean up tests some
13
+ 794d61d pull macro tests into separate file
14
+ ae1b942 flatten a list example
15
+ 98ccad9 create a file example
16
+ 9dc8981 file size example
17
+ fddd3e2 count occurrences of a substring examples
18
+ 2297cd7 is string numeric example
19
+ 6ccaf02 empty string
20
+ 4c58e5a fizz buzz example
21
+ e1e107a empty string example
22
+ 643e80a added copy a string sample
23
+ b3c35a5 fibonacci example
24
+ abdf45c factorial example
25
+ cd3eb03 how to do comments
26
+ 9af53ee boolean value examples
27
+ 973ef14 some macro examples
28
+ 121b654 square with strings
29
+ 095773d hahahah guess what
30
+ c8c4465 reading user input
31
+ ddf8eda Palindrome
32
+ df01492 reverse a string
33
+ 186c333 rot 13 example
34
+ 13f4a10 initial version of the 100 doors
35
+ da29d35 removed unneeded parameter
36
+ 09ded03 99 bottles of beer
37
+ f1b490c added repeating a string sample
38
+ ba99754 update issues link on readme
39
+ 785c6c7 further tets helper factorization
40
+ 051854b make javac helper's compile almost the same as bytecode's
41
+ 1d9648b refactor javac tests parsing and infering steps
42
+ ba44c0d default args are evaled on call
43
+ 3ebe9f3 use some of the helper methods defined in bytecode's helper in javac's
44
+ 5c2b47c fix main in files w/ classes of same name contained in them
45
+ 3b69287 file name should also be configurable for javac compilation
46
+ e3d2dc7 pulling out a couple assertion definitions into a helper file
47
+ c0112a4 overall task should fail if any tests failed
48
+ 2da4ca2 annotate new rake tasks
49
+ 5ae27b7 making all tests run even if some fail
50
+ ae6d8e6 fixing up helpers for jvm tests a bit
51
+ 66e87d9 tease apart test #compile method for bytecode
52
+ dbbcf8e split bytecode and javac tests
53
+ aa21dc9 split tests into multiple dirs and tasks
54
+ feb8028 Remove unnecessary, broken 'super' call in BlockArgument.
55
+ 02101c3 Update the bootstrap JAR to incorporate the new loop macro in builtins.mirah
56
+ de68299 test fallout from top level changes, loop test still fails
57
+ 2786cfd sometimes children can be nil
58
+ 1b9b018 Merge in loop macro from techomancy.
59
+ fa13c03 Merge pull request #53 from ashee/master
60
+ be84d53 Merge pull request #82 from baroquebobcat/use_bundler
61
+ 2ba1932 Merge pull request #85 from rdp/mergeable2
62
+ b4e3106 Merge pull request #88 from baroquebobcat/fix_up_env_tests_and_a_typo
63
+ 7212065 Merge pull request #89 from jabr/master
64
+ 71c7c3f Merge pull request #90 from baroquebobcat/test_reorg
65
+ 50d37d5 Merge pull request #91 from baroquebobcat/fix_syntax_error_not_providing_messages
66
+ e206d90 Merge pull request #92 from baroquebobcat/update_compile_ant_class_from_duby
67
+ 4a9d8e2 Merge pull request #93 from szegedi/dynalang-0.2
68
+ 688fe7d Update to use dynalink-0.2.
69
+ 9f96ab0 mirah-ify ant compile task
70
+ b6b92d6 wrap jmeta syntax errors w/ mirah ones
71
+ 2d48ca2 unshift of lib unnecessary as it is put on the path by the test task
72
+ fbae14b modularize assert_include
73
+ b0c05c8 move compile methods out of respective classes and into helper
74
+ a563f4a added test helper for jvm tests
75
+ d4070fe moved jvm tests into subdirectory
76
+ 688c18d Call original create_method_builder in default case when patching the JVM compiler in the GWT plugin.
77
+ f3c7a7d Only generate a main function when we really need it (i.e. not when the source only has imports, class definitions, and interface declarations).
78
+ c001130 Add require 'rubygems' to scripts so bitescript gem can be found.
79
+ 34c19d3 typo s/seperator/separator/
80
+ 0886a72 fix the env tests I broke in ac92625bf76dc00d
81
+ 922d5eb Merge pull request #84 from baroquebobcat/use_1_6_bytecode
82
+ 57dc505 Merge pull request #78 from sd/master
83
+ 10709cd Merge pull request #86 from baroquebobcat/use_file_path_separator_instead_of_rbconfig
84
+ ac92625 use File::PATH_SEPARATOR instead of RbConfig
85
+ 23d77ef use java 1.6 bytecode. the recompiled jar didn't work for me with 1.5
86
+ 10b2b18 warn users instead of outputting "...done" when nothing actually occurs
87
+ 4033268 partial fix for issue #23 don't ICE when parsing after a node verify error
88
+ 6ea2da8 remove rescue around dev bitescript require
89
+ d105b97 use bundler to manage dev dependencies
90
+ 7a3127e use right date formatting
91
+ 7cb39eb try to help them know what is happening better
92
+ 0f5287a make it more explicit what compile mode means
93
+ 8cb8e41 Fix bootstrapping
94
+ 14559d3 Fix method lookup for java.lang.Class objects
95
+ bde76f8 Merge branch 'newast'
96
+ 16db63e Fix bugs with interfaces and error types
97
+ 778ec51 Fix strange transform error
98
+ 7c76776 Merge pull request #80 from baroquebobcat/closure_fix_2
99
+ 7f83fb0 fix closure scope issue, javac issue
100
+ 0c4ea99 Macro enhancement
101
+ 705a907 Macro enhancement
102
+ e395169 Add a class mirror to the NullType
103
+ 4cff3f8 nodes
104
+ 00d223d Fix block return values
105
+ 2fed449 Merge commit '6b3ce537'
106
+ 6b3ce53 test for creating anonymous class method that uses no args and returns a value
107
+ 489d4aa Updates to current invokedynamic logic.
108
+ af717c6 Add an Unreachable JVM type
109
+ 46a1bea Merge branch 'master' of github.com:mirah/mirah
110
+ c4c8afb Fix begin...rescue with no body
111
+ 73172c8 Try to ignore assignments to nil during type inference
112
+ e2e5c56 Fix rescue block inference
113
+ a073480 Fix link to issue tracker.
114
+ 681c274 Add support for rescue - else. Fix bug with rescue when the body always raises an exception but the rescue clauses return a result.
115
+ d486090 More efficient new_hash macro
116
+ b78e3a8 Macro bugfixes.
117
+ fa40e47 Add missing .java parser
118
+ 237f16c Fix line numbers in debug info
119
+ 9b163c0 Add support for circular references between java and mirah files
120
+ 726ad63 Merge branch 'master' of github.com:mirah/mirah
121
+ d974e04 Fix typo
122
+ 8c2bffa Fix #31: mirahc -h regression
123
+ fac6bd5 Fix #44: Failure on 'rake gem'
124
+ ac79807 corrected reference for "jar:bootstrap" in Rakefile
125
+ 1d07018 Present an error when using -j/--java with non-compile commands. Fixes #62.
126
+ 9dc3345 Ensure the JVM type has been initialized before calling methods on it in JVM::Types::Type. Fixes #65.
127
+ 551deac Use catch/throw to terminate the compiler early, since SystemExit bubbles out MirahCommand and makes noise. Fixes #66.
128
+ fb401fa Fix bad call to compile_asts (does not need transformer now).
129
+ 961551d Add missing cast to Integer.
130
+ d43cfc7 Fix -V and error processing
131
+ 4b67a11 Merge
132
+ cf4f2de Small changes to README feature list.
133
+ 1d003c5 clean the pom file
134
+ 521bbd9 Add a trivial example Maven project that uses the Maven plugin.
135
+ 88838bc add maven release process readme
136
+ 8f37529 update pom descriptors to pass maven release requirements
137
+ 5c7a690 Fix a couple vars I missed in mirah.bat and mirahc.bat.
138
+ 59409a1 Add missing .bat files to dist.
139
+ bb39a69 Put .zip contents into a mirah-VERSION directory (d'oh!).
140
+ e12fbe8 Fix references to duby scripts in gemspec and trim out wiki from examples (for size).
141
+ a395dbf Make zip task depend on jar:complete again.
142
+ 4e89a03 Add examples dir to zip distribution.
143
+ 7c06633 Oops. Add missing distbin dir with bin scripts for the zip distribution.
144
+ 690f82b Add zip, gem, and dist targets to Rakefile, to build a zip'ed distribution, gem file, and everything.
145
+ 53d8e16 Restore lost destination when writing compiled output.
146
+ 3b181f5 Back off on overzealous trimming of @state; it's still used a few places I can't eliminate.
147
+ b0c6ce8 Remove out-of-date duby and jrubyp-related commands.
148
+ 963140c Remove duby.gemspec. We're done with this, yes?
149
+ 5b923e5 Move mirah/jvm/base to mirah/jvm/compiler/base
150
+ c89ed22 Move JVMCompilerBase to Base.
151
+ cd1ae11 Move JVM bytecode compiler to appropriate file structure.
152
+ b27a57a Move JVMBytecode and JVMCompilerBase to Mirah::JVM::Compiler namespace.
153
+ ffc2d18 Move Mirah::Compiler::JVM to Mirah::Compiler::JVMBytecode
154
+ 3d510fb Move jvm/source_compiler.rb into jvm/compiler/java_source.rb
155
+ a28852a Move Mirah::Compiler::JavaSource to Mirah::JVM::Compiler::JavaSource
156
+ 8ff25a5 Move Mirah::Typer::JVM to Mirah::JVM::Typer
157
+ 0809140 Refactor jvm/types.rb into jvm/types subdir files.
158
+ 898cb63 Refactor transform and transform2 into transform/{ast_ext,error,helper,transformer}.
159
+ e68eb22 Refactor typer.rb into typer/base and typer/simple.
160
+ a05e503 Forcibly nuke randomly-named xform classes generated during test_javac_compiler.
161
+ 0da5b73 Missed a few ClassLoader and CompilationState references.
162
+ e357957 Move a few more classes under util and clean up some requires.
163
+ fd2f0bf More OO decomposition of Mirah command-line logic and compiler/generator/parser workflow.
164
+ 5762c5d Restructure commands into their own classes and files.
165
+ 3075d8e Reorg main three entry points into Mirah command a bit.
166
+ c129e57 Add .DS_Store to .gitignore
167
+ db7aa1e Restructure compiler.rb into mirah/compiler subdir, mirroring mirah/ast subdir.
168
+ 330a1c2 Add a simple example of declaring an interface.
169
+ 723416f Add covariance for one-dimensional arrays (see #55). Multi-dimensional arrays still need work.
170
+ 356d896 Roll versions to 0.0.8{.dev,-SNAPSHOT).
171
+ 3b6bb81 Fixed an issue with mirah_task
172
+ ebd0ab2 Add casting support to the Call node.
173
+
174
+ === 0.0.7 / 2011-03-20
175
+
176
+ 248368c Fix assignability of dynamic type; only target of Object should be allowed.
177
+ 9734853 Allow abstract interface methods also on Object to use Object impl. Fixes #54.
178
+ 13b84d2 Add some simple logging of compiler phases (not for run mode).
179
+ 7dad0eb Fix recursive examples, since we now do try to infer both branches of an If.
180
+ 27409a0 Reorg mirah.rb into a few additional files under lib/mirah.
181
+
1
182
  === 0.0.6 / 2011-03-20
2
183
 
3
184
  ce9b740 Update dynalink stuff, add JSR292 mock to enable compiling/including invokedynamic logic.
data/README.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  = mirah
2
2
 
3
3
  * http://groups.google.com/group/mirah
4
- * http://kenai.com/projects/duby
4
+ * http://github.com/mirah/mirah/issues
5
5
 
6
6
  == DESCRIPTION:
7
7
 
@@ -10,11 +10,12 @@ local type inference and a heavily Ruby-inspired syntax. Mirah
10
10
  currently includes a typer/compiler backend for the JVM which can
11
11
  output either JVM bytecode or Java source files.
12
12
 
13
- == FEATURES/PROBLEMS:
13
+ == FEATURES:
14
14
 
15
- * Ruby syntax
15
+ * Ruby-like syntax
16
16
  * Compiles to .class or .java
17
17
  * Fast as Java
18
+ * No runtime library
18
19
 
19
20
  == SYNOPSIS:
20
21
 
@@ -38,16 +39,11 @@ $ gem install mirah
38
39
 
39
40
  To build and install from source,
40
41
 
41
- $ git clone http://github.com/headius/bitescript.git
42
42
  $ git clone http://github.com/mirah/mirah.git
43
- $ cd bitescript
44
- $ gem build bitescript.gemspec
45
- $ gem install bitescript-*
46
- $ cd -
47
43
  $ cd mirah
44
+ $ bundle install
48
45
  $ rake gem
49
- $ gem install pkg/mirah-*
50
- $ cd -
46
+ $ gem install pkg/mirah-*.gem
51
47
 
52
48
  == For Java tools:
53
49
 
data/Rakefile CHANGED
@@ -17,9 +17,8 @@ require 'rake'
17
17
  require 'rake/testtask'
18
18
  require 'rubygems'
19
19
  require 'rubygems/package_task'
20
+ require 'bundler/setup'
20
21
  require 'java'
21
- $: << './lib'
22
- require 'mirah'
23
22
  require 'jruby/compiler'
24
23
  require 'ant'
25
24
 
@@ -28,16 +27,69 @@ Gem::PackageTask.new Gem::Specification.load('mirah.gemspec') do |pkg|
28
27
  pkg.need_tar = true
29
28
  end
30
29
 
30
+ bitescript_lib_dir = File.dirname Gem.find_files('bitescript').first
31
+
31
32
  task :gem => 'jar:bootstrap'
32
33
 
33
34
  task :default => :test
35
+ def run_tests tests
36
+ results = tests.map do |name|
37
+ begin
38
+ Rake.application[name].invoke
39
+ rescue Exception
40
+ end
41
+ end
42
+
43
+ tests.zip(results).each do |name, passed|
44
+ unless passed
45
+ puts "Errors in #{name}"
46
+ end
47
+ end
48
+ fail if results.any?{|passed|!passed}
49
+ end
50
+
51
+ desc "run full test suite"
52
+ task :test do
53
+ run_tests [ 'test:core', 'test:plugins', 'test:jvm' ]
54
+ end
55
+ namespace :test do
34
56
 
35
- Rake::TestTask.new :test do |t|
36
- t.libs << "lib"
37
- # This is hacky, I know
38
- t.libs.concat Dir["../bitescript*/lib"]
39
- t.test_files = FileList["test/**/*.rb"]
40
- java.lang.System.set_property("jruby.duby.enabled", "true")
57
+ desc "run the core tests"
58
+ Rake::TestTask.new :core do |t|
59
+ t.test_files = FileList["test/core/**/test*.rb"]
60
+ java.lang.System.set_property("jruby.duby.enabled", "true")
61
+ end
62
+
63
+ desc "run tests for plugins"
64
+ Rake::TestTask.new :plugins do |t|
65
+ t.libs << 'test'
66
+ t.test_files = FileList["test/plugins/**/test*.rb"]
67
+ java.lang.System.set_property("jruby.duby.enabled", "true")
68
+ end
69
+
70
+ desc "run jvm tests, both bytecode and java source"
71
+ task :jvm do
72
+ run_tests ["test:jvm:bytecode", "test:jvm:javac"]
73
+ end
74
+
75
+ namespace :jvm do
76
+ desc "run jvm tests compiling to bytecode"
77
+ Rake::TestTask.new :bytecode do |t|
78
+ t.libs << 'test/jvm'
79
+ t.ruby_opts.concat ["-r", "bytecode_test_helper"]
80
+ t.test_files = FileList["test/jvm/**/test*.rb"]
81
+ java.lang.System.set_property("jruby.duby.enabled", "true")
82
+ end
83
+
84
+ desc "run jvm tests compiling to java source, then bytecode"
85
+ Rake::TestTask.new :javac do |t|
86
+ t.libs << 'test/jvm'
87
+ t.ruby_opts.concat ["-r", "javac_test_helper"]
88
+ t.test_files = FileList["test/jvm/**/test*.rb"]
89
+ java.lang.System.set_property("jruby.duby.enabled", "true")
90
+ end
91
+
92
+ end
41
93
  end
42
94
 
43
95
  task :init do
@@ -52,6 +104,7 @@ task :clean do
52
104
  end
53
105
 
54
106
  task :compile => :init do
107
+ require 'mirah'
55
108
  # build the Ruby sources
56
109
  puts "Compiling Ruby sources"
57
110
  JRuby::Compiler.compile_argv([
@@ -72,6 +125,7 @@ task :compile => :init do
72
125
  Mirah.compile(
73
126
  '-c', classpath,
74
127
  '-d', '../build',
128
+ '--jvm', '1.6',
75
129
  'org/mirah',
76
130
  'duby/lang',
77
131
  'mirah'
@@ -90,7 +144,7 @@ task :jar => :compile do
90
144
  fileset :dir => 'lib'
91
145
  fileset :dir => 'build'
92
146
  fileset :dir => '.', :includes => 'bin/*'
93
- fileset :dir => '../bitescript/lib'
147
+ fileset :dir => bitescript_lib_dir
94
148
  manifest do
95
149
  attribute :name => 'Main-Class', :value => 'org.mirah.MirahCommand'
96
150
  end
@@ -104,6 +158,7 @@ namespace :jar do
104
158
  zipfileset :src => 'dist/mirah.jar'
105
159
  zipfileset :src => 'javalib/jruby-complete.jar'
106
160
  zipfileset :src => 'javalib/mirah-parser.jar'
161
+ zipfileset :src => 'javalib/dynalink-0.2.jar'
107
162
  manifest do
108
163
  attribute :name => 'Main-Class', :value => 'org.mirah.MirahCommand'
109
164
  end
@@ -117,3 +172,25 @@ namespace :jar do
117
172
  end
118
173
  end
119
174
  end
175
+
176
+ desc "Build a distribution zip file"
177
+ task :zip => 'jar:complete' do
178
+ basedir = "tmp/mirah-#{Mirah::VERSION}"
179
+ mkdir_p "#{basedir}/lib"
180
+ mkdir_p "#{basedir}/bin"
181
+ cp 'dist/mirah-complete.jar', "#{basedir}/lib"
182
+ cp 'distbin/mirah.bash', "#{basedir}/bin/mirah"
183
+ cp 'distbin/mirahc.bash', "#{basedir}/bin/mirahc"
184
+ cp Dir['{distbin/*.bat}'], "#{basedir}/bin/"
185
+ cp_r 'examples', "#{basedir}/examples"
186
+ rm_rf "#{basedir}/examples/wiki"
187
+ cp 'README.txt', "#{basedir}"
188
+ cp 'NOTICE', "#{basedir}"
189
+ cp 'LICENSE', "#{basedir}"
190
+ cp 'History.txt', "#{basedir}"
191
+ sh "sh -c 'cd tmp ; zip -r ../dist/mirah-#{Mirah::VERSION}.zip mirah-#{Mirah::VERSION}/*'"
192
+ rm_rf 'tmp'
193
+ end
194
+
195
+ desc "Build all redistributable files"
196
+ task :dist => [:gem, :zip]
data/bin/mirah CHANGED
@@ -15,6 +15,8 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
+ require 'rubygems'
19
+
18
20
  begin
19
21
  require 'mirah'
20
22
  rescue LoadError
data/bin/mirahc CHANGED
@@ -15,6 +15,8 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
+ require 'rubygems'
19
+
18
20
  begin
19
21
  require 'mirah'
20
22
  rescue LoadError
data/bin/mirahp CHANGED
@@ -15,6 +15,8 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
+ require 'rubygems'
19
+
18
20
  begin
19
21
  require 'mirah'
20
22
  rescue LoadError
@@ -1,5 +1,3 @@
1
- #!/usr/bin/env jruby
2
-
3
1
  # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
4
2
  # All contributing project authors may be found in the NOTICE file.
5
3
  #
@@ -15,12 +13,21 @@
15
13
  # See the License for the specific language governing permissions and
16
14
  # limitations under the License.
17
15
 
18
- begin
19
- require 'mirah'
20
- rescue LoadError
21
- $: << File.dirname(File.dirname(__FILE__)) + '/lib'
22
- require 'mirah'
16
+ import java.util.List
17
+
18
+ interface Printer do
19
+ def printAll(a:List)
20
+ returns void
21
+ end
22
+ end
23
+
24
+ class MyPrinter
25
+ implements Printer
26
+ def printAll(a)
27
+ a.each {|element| puts element}
28
+ end
23
29
  end
24
30
 
25
- puts 'WARNING: Duby is now Mirah. Please use the `mirahp` command.'
26
- puts Duby.parse(*ARGV).inspect
31
+ list = ['foo', 'bar', 'baz']
32
+ p = Printer(MyPrinter.new)
33
+ p.printAll(list)
@@ -0,0 +1,12 @@
1
+
2
+
3
+ macro def sqrt(input)
4
+ quote do
5
+ Math.sqrt(Integer.parseInt(`input`))
6
+ end
7
+ end
8
+
9
+ number = '64'
10
+
11
+ puts sqrt '4' # => 2
12
+ puts sqrt number # => 8
@@ -0,0 +1,12 @@
1
+
2
+
3
+ macro def sqrt(input)
4
+ quote do
5
+ Math.sqrt(`input`)
6
+ end
7
+ end
8
+
9
+ number = 64
10
+
11
+ puts sqrt 4 # => 2
12
+ puts sqrt number # => 8