opal 0.9.4 → 0.10.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.gitignore +2 -3
  4. data/.gitmodules +5 -2
  5. data/.jshintrc +1 -8
  6. data/.rspec +1 -1
  7. data/.travis.yml +15 -23
  8. data/CHANGELOG.md +511 -326
  9. data/CODE_OF_CONDUCT.md +13 -15
  10. data/CONTRIBUTING.md +26 -216
  11. data/Gemfile +20 -12
  12. data/Guardfile +2 -2
  13. data/HACKING.md +230 -0
  14. data/README.md +6 -7
  15. data/bin/opal-mspec +1 -1
  16. data/config.ru +2 -2
  17. data/docs/faq.md +1 -1
  18. data/docs/source_maps.md +1 -1
  19. data/lib/opal.rb +1 -0
  20. data/lib/opal/builder.rb +1 -1
  21. data/lib/opal/cli.rb +30 -28
  22. data/lib/opal/cli_options.rb +3 -0
  23. data/lib/opal/cli_runners.rb +14 -1
  24. data/lib/opal/cli_runners/{apple_script.rb → applescript.rb} +3 -3
  25. data/lib/opal/cli_runners/nashorn.rb +2 -2
  26. data/lib/opal/cli_runners/nodejs.rb +2 -2
  27. data/lib/opal/cli_runners/phantom.js +24 -0
  28. data/lib/opal/cli_runners/phantomjs.rb +10 -10
  29. data/lib/opal/cli_runners/server.rb +3 -3
  30. data/lib/opal/compiler.rb +43 -4
  31. data/lib/opal/config.rb +3 -1
  32. data/lib/opal/errors.rb +13 -0
  33. data/lib/opal/fragment.rb +0 -13
  34. data/lib/opal/nodes.rb +10 -0
  35. data/lib/opal/nodes/args/initialize_kwargs.rb +28 -0
  36. data/lib/opal/nodes/args/kwarg.rb +29 -0
  37. data/lib/opal/nodes/args/kwoptarg.rb +29 -0
  38. data/lib/opal/nodes/args/kwrestarg.rb +39 -0
  39. data/lib/opal/nodes/args/mlhsarg.rb +79 -0
  40. data/lib/opal/nodes/args/normarg.rb +26 -0
  41. data/lib/opal/nodes/args/optarg.rb +27 -0
  42. data/lib/opal/nodes/args/post_args.rb +200 -0
  43. data/lib/opal/nodes/args/post_kwargs.rb +31 -0
  44. data/lib/opal/nodes/args/restarg.rb +33 -0
  45. data/lib/opal/nodes/base.rb +12 -0
  46. data/lib/opal/nodes/call.rb +92 -33
  47. data/lib/opal/nodes/def.rb +26 -169
  48. data/lib/opal/nodes/hash.rb +10 -4
  49. data/lib/opal/nodes/helpers.rb +6 -3
  50. data/lib/opal/nodes/inline_args.rb +61 -0
  51. data/lib/opal/nodes/iter.rb +73 -82
  52. data/lib/opal/nodes/logic.rb +12 -2
  53. data/lib/opal/nodes/masgn.rb +1 -2
  54. data/lib/opal/nodes/node_with_args.rb +141 -0
  55. data/lib/opal/nodes/rescue.rb +121 -43
  56. data/lib/opal/nodes/scope.rb +24 -5
  57. data/lib/opal/nodes/super.rb +122 -54
  58. data/lib/opal/nodes/top.rb +0 -12
  59. data/lib/opal/nodes/yield.rb +2 -13
  60. data/lib/opal/parser.rb +67 -39
  61. data/lib/opal/parser/grammar.rb +3319 -2961
  62. data/lib/opal/parser/grammar.y +234 -46
  63. data/lib/opal/parser/lexer.rb +105 -17
  64. data/lib/opal/parser/sexp.rb +4 -0
  65. data/lib/opal/paths.rb +4 -0
  66. data/lib/opal/regexp_anchors.rb +19 -1
  67. data/lib/opal/sprockets.rb +21 -18
  68. data/lib/opal/sprockets/environment.rb +0 -8
  69. data/lib/opal/sprockets/processor.rb +13 -16
  70. data/lib/opal/sprockets/server.rb +6 -12
  71. data/lib/opal/version.rb +1 -1
  72. data/opal.gemspec +1 -0
  73. data/opal/corelib/array.rb +209 -131
  74. data/opal/corelib/basic_object.rb +7 -3
  75. data/opal/corelib/class.rb +11 -17
  76. data/opal/corelib/constants.rb +2 -2
  77. data/opal/corelib/enumerable.rb +178 -355
  78. data/opal/corelib/enumerator.rb +3 -46
  79. data/opal/corelib/error.rb +2 -2
  80. data/opal/corelib/file.rb +13 -1
  81. data/opal/corelib/hash.rb +26 -56
  82. data/opal/corelib/helpers.rb +10 -0
  83. data/opal/corelib/kernel.rb +6 -3
  84. data/opal/corelib/module.rb +62 -31
  85. data/opal/corelib/number.rb +7 -16
  86. data/opal/corelib/proc.rb +24 -9
  87. data/opal/corelib/range.rb +4 -13
  88. data/opal/corelib/runtime.js +515 -378
  89. data/opal/corelib/string.rb +21 -49
  90. data/opal/corelib/struct.rb +50 -35
  91. data/opal/corelib/unsupported.rb +18 -30
  92. data/opal/opal.rb +0 -1
  93. data/opal/opal/mini.rb +1 -0
  94. data/spec/README.md +6 -4
  95. data/spec/filters/bugs/array.rb +0 -42
  96. data/spec/filters/bugs/basicobject.rb +0 -2
  97. data/spec/filters/bugs/bigdecimal.rb +160 -0
  98. data/spec/filters/bugs/class.rb +0 -5
  99. data/spec/filters/bugs/date.rb +1 -48
  100. data/spec/filters/bugs/enumerable.rb +4 -12
  101. data/spec/filters/bugs/enumerator.rb +0 -1
  102. data/spec/filters/bugs/exception.rb +4 -3
  103. data/spec/filters/bugs/float.rb +4 -2
  104. data/spec/filters/bugs/kernel.rb +25 -10
  105. data/spec/filters/bugs/language.rb +119 -68
  106. data/spec/filters/bugs/method.rb +135 -0
  107. data/spec/filters/bugs/module.rb +13 -28
  108. data/spec/filters/bugs/proc.rb +18 -8
  109. data/spec/filters/bugs/range.rb +0 -3
  110. data/spec/filters/bugs/rational.rb +4 -0
  111. data/spec/filters/bugs/regexp.rb +68 -36
  112. data/spec/filters/bugs/string.rb +1 -1
  113. data/spec/filters/bugs/struct.rb +0 -12
  114. data/spec/filters/bugs/time.rb +1 -0
  115. data/spec/filters/bugs/unboundmethod.rb +2 -1
  116. data/spec/filters/unsupported/freeze.rb +3 -1
  117. data/spec/filters/unsupported/language.rb +0 -7
  118. data/spec/filters/unsupported/privacy.rb +7 -6
  119. data/spec/filters/unsupported/string.rb +10 -0
  120. data/spec/filters/unsupported/struct.rb +3 -0
  121. data/spec/filters/unsupported/symbol.rb +9 -0
  122. data/spec/filters/unsupported/taint.rb +0 -3
  123. data/spec/filters/unsupported/thread.rb +1 -0
  124. data/spec/lib/cli_runners/phantomjs_spec.rb +39 -0
  125. data/spec/lib/cli_spec.rb +42 -1
  126. data/spec/lib/compiler/call_spec.rb +700 -0
  127. data/spec/lib/compiler_spec.rb +46 -28
  128. data/spec/lib/config_spec.rb +13 -0
  129. data/spec/lib/parser/call_spec.rb +18 -0
  130. data/spec/lib/parser/def_spec.rb +29 -0
  131. data/spec/lib/parser/iter_spec.rb +15 -15
  132. data/spec/lib/parser/lambda_spec.rb +153 -12
  133. data/spec/lib/parser/string_spec.rb +5 -0
  134. data/spec/lib/parser/undef_spec.rb +1 -1
  135. data/spec/lib/parser/variables_spec.rb +24 -0
  136. data/spec/lib/paths_spec.rb +12 -5
  137. data/spec/lib/spec_helper.rb +5 -0
  138. data/spec/lib/sprockets/processor_spec.rb +6 -5
  139. data/spec/lib/sprockets_spec.rb +8 -0
  140. data/spec/mspec-opal/formatters.rb +188 -0
  141. data/spec/mspec-opal/runner.rb +193 -0
  142. data/spec/opal/core/enumerator/with_index_spec.rb +6 -0
  143. data/spec/opal/core/kernel/define_singleton_method_spec.rb +1 -1
  144. data/spec/opal/core/kernel/instance_variables_spec.rb +14 -0
  145. data/spec/opal/core/kernel/loop_spec.rb +1 -1
  146. data/spec/opal/core/kernel/raise_spec.rb +1 -1
  147. data/spec/opal/core/language/heredoc_spec.rb +42 -0
  148. data/spec/opal/core/language/rescue_spec.rb +18 -0
  149. data/spec/opal/core/language_spec.rb +22 -0
  150. data/spec/opal/core/module/const_defined_spec.rb +1 -2
  151. data/spec/opal/core/module/name_spec.rb +6 -0
  152. data/spec/opal/core/runtime/bridged_classes_spec.rb +14 -2
  153. data/spec/opal/core/runtime/rescue_spec.rb +12 -2
  154. data/spec/opal/core/runtime/super_spec.rb +1 -0
  155. data/spec/opal/core/string_spec.rb +21 -0
  156. data/spec/opal/stdlib/js_spec.rb +1 -1
  157. data/spec/opal/stdlib/native/hash_spec.rb +7 -0
  158. data/spec/opal/stdlib/promise/always_spec.rb +24 -5
  159. data/spec/opal/stdlib/promise/rescue_spec.rb +15 -6
  160. data/spec/opal/stdlib/promise/then_spec.rb +13 -5
  161. data/spec/opal/stdlib/promise/trace_spec.rb +5 -6
  162. data/spec/opal/stdlib/strscan/scan_spec.rb +1 -1
  163. data/spec/ruby_specs +122 -0
  164. data/spec/spec_helper.rb +3 -15
  165. data/stdlib/base64.rb +51 -121
  166. data/stdlib/bigdecimal.rb +231 -0
  167. data/stdlib/bigdecimal/bignumber.js.rb +11 -0
  168. data/stdlib/bigdecimal/kernel.rb +5 -0
  169. data/stdlib/date.rb +252 -10
  170. data/stdlib/native.rb +38 -38
  171. data/stdlib/nodejs/dir.rb +8 -6
  172. data/stdlib/nodejs/file.rb +28 -3
  173. data/stdlib/nodejs/node_modules/.bin/js-yaml +1 -0
  174. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +1 -0
  175. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +1 -0
  176. data/stdlib/nodejs/require.rb +1 -1
  177. data/stdlib/nodejs/yaml.rb +3 -2
  178. data/stdlib/opal-parser.rb +7 -2
  179. data/stdlib/pathname.rb +23 -1
  180. data/stdlib/phantomjs.rb +10 -0
  181. data/stdlib/promise.rb +38 -23
  182. data/tasks/building.rake +3 -3
  183. data/tasks/testing.rake +27 -14
  184. data/tasks/testing/mspec_special_calls.rb +1 -1
  185. data/tasks/testing/sprockets-phantomjs.js +4 -0
  186. data/test/opal/test_keyword.rb +110 -110
  187. data/test/opal/unsupported_and_bugs.rb +30 -0
  188. data/vendored-minitest/minitest/assertions.rb +1 -1
  189. metadata +65 -15
  190. data/.spectator +0 -2
  191. data/.spectator-mspec +0 -3
  192. data/opal/corelib/array/inheritance.rb +0 -127
  193. data/spec/rubyspecs +0 -139
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c674884b0569a99765292e7d078ccc2fd9fa7d52
4
- data.tar.gz: 7fffb1b4f862d31c2538b8a22bc27479211cd925
3
+ metadata.gz: 85f0110e658c1cefc27cccb2781d3a23e92531f0
4
+ data.tar.gz: 46e3e241849788fa527985c5e5ad52837d315c02
5
5
  SHA512:
6
- metadata.gz: 3fd6657317e5edea8e3ac22ecb606a8e61da1614090d91eddab90ae2123d7448cd3d0e479a8c7489dfaf4550548c0af59e0c8ac69e4fee69db1d1d877e839b0d
7
- data.tar.gz: 95ebfaeec61a9b6a3b61a27a1936e193cec30df821798ae932f3b946d83f02329e7f4d96aeadb57d7c73e888ec88a378cf44d1ed69168102a72f327bd56f88e0
6
+ metadata.gz: bd22ed6d034471bce5dfaee1b3b76f91aaf16ead1a0465c247d006f00901d90c96854bc8a4774d3b3ec34980c0b009675b6a6c8b63c64877801340cfd1f82eef
7
+ data.tar.gz: ccb284eac1e8fe124ef80a3a0b7ad2fada35204eb141f252893d7babfc84b2a8a7143e12430219290bd771225a94723a080179fd0313003647b57bef3284cb94
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ CHANGELOG.md merge=union
data/.gitignore CHANGED
@@ -12,9 +12,8 @@ build/
12
12
  .ruby-gemset
13
13
  .ruby-version
14
14
  .rvmrc
15
+ .rspec-local
16
+ /coverage
15
17
 
16
18
  # Ignore the location of the older (0.8 and below) rubyspec submodule location
17
19
  spec/corelib
18
- # Ignore the location of newer stuff
19
- spec/mspec
20
- spec/ruby
data/.gitmodules CHANGED
@@ -1,7 +1,10 @@
1
1
  [submodule "spec/rubyspec"]
2
- path = spec/rubyspec
3
- url = https://github.com/ruby/rubyspec.git
2
+ path = spec/ruby
3
+ url = https://github.com/ruby/spec.git
4
4
  [submodule "test/cruby"]
5
5
  path = test/cruby
6
6
  url = https://github.com/ruby/ruby.git
7
7
  branch = ruby_2_2
8
+ [submodule "spec/mspec"]
9
+ path = spec/mspec
10
+ url = https://github.com/ruby/mspec.git
data/.jshintrc CHANGED
@@ -10,14 +10,7 @@
10
10
  "undef" : true, // Prohibit the use of explicitly undeclared variables
11
11
  "unused" : true, // Warn when you define and never use your variables
12
12
 
13
- "globals": {
14
- "Opal": true,
15
- "OpalNode": true,
16
- "callPhantom": true,
17
- "JSON": true,
18
- "Pippo": true,
19
- "Java": true
20
- },
13
+ "predef" : ["Opal", "JSON", "Java", "callPhantom", "OpalNode"],
21
14
 
22
15
  "browser": true,
23
16
  "node": true,
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
1
  --color
2
2
  --format progress
3
- --pattern spec/cli/**/*_spec.rb
3
+ --pattern spec/lib/**/*_spec.rb
data/.travis.yml CHANGED
@@ -11,55 +11,48 @@ matrix:
11
11
  fast_finish: true
12
12
 
13
13
  include:
14
- - rvm: 2.2
14
+ - rvm: 2.3.0
15
15
  env: RUN=jshint SUITE=core
16
16
 
17
- - rvm: 2.2
17
+ - rvm: 2.3.0
18
18
  env: RUN=jshint SUITE=stdlib
19
19
 
20
- - rvm: 2.2
20
+ - rvm: 2.3.0
21
21
  env: RUN=mspec_opal_nodejs
22
22
 
23
- - rvm: 2.2
24
- env: RUN=mspec_rubyspec_nodejs TZ="/usr/share/zoneinfo/Pacific/Fiji"
23
+ - rvm: 2.3.0
24
+ env: RUN=mspec_ruby_nodejs TZ="/usr/share/zoneinfo/Pacific/Fiji"
25
25
 
26
- - rvm: 2.2.3
27
- env: RUN=mspec_rubyspec_sprockets_phantomjs
26
+ - rvm: 2.3.0
27
+ env: RUN=mspec_ruby_sprockets_phantomjs
28
28
 
29
- - rvm: 2.2
30
- env: RUN=rspec TILT_VERSION=2.0.1
29
+ - rvm: 2.3.0
30
+ env: RUN=rspec RACK_VERSION='2.0.0.alpha' CHECK_COVERAGE=true
31
31
 
32
32
  - rvm: ruby-head
33
33
  env: RUN=rspec
34
34
 
35
- - rvm: 2.1
36
- env: RUN=rspec
35
+ - rvm: 2.2.4
36
+ env: RUN=rspec TILT_VERSION=2.0.1
37
37
 
38
- - rvm: 2.0
38
+ - rvm: 2.1.8
39
39
  env: RUN=rspec
40
40
 
41
- - rvm: 1.9.3
42
- env: RUN=rspec
41
+ - rvm: 2.0.0
42
+ env: RUN="rspec mspec_opal_nodejs"
43
43
 
44
44
  - rvm: rbx
45
45
  env: RUN=rspec
46
46
 
47
- - rvm: jruby
47
+ - rvm: jruby-9.0.5.0
48
48
  env: RUN=rspec
49
49
 
50
50
  - rvm: jruby-head
51
51
  env: RUN=rspec
52
52
 
53
53
  allow_failures:
54
- - rvm: 2.2
55
- env: RUN=jshint SUITE=stdlib
56
-
57
- - rvm: 1.9.3
58
- - rvm: 2.1
59
- - rvm: 2.0
60
54
  - rvm: ruby-head
61
55
  - rvm: rbx
62
- - rvm: jruby
63
56
  - rvm: jruby-head
64
57
 
65
58
 
@@ -79,4 +72,3 @@ notifications:
79
72
  webhooks:
80
73
  urls:
81
74
  - https://webhooks.gitter.im/e/2ea12333adebda0c2289
82
-
data/CHANGELOG.md CHANGED
@@ -1,357 +1,461 @@
1
- ## 0.9.4 2016-06-21
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
+
6
+ Changes are grouped as follows:
7
+ - **Added** for new features.
8
+ - **Changed** for changes in existing functionality.
9
+ - **Deprecated** for once-stable features removed in upcoming releases.
10
+ - **Removed** for deprecated features removed in this release.
11
+ - **Fixed** for any bug fixes.
12
+ - **Security** to invite users to upgrade in case of vulnerabilities.
13
+
14
+ <!--
15
+ Whitespace conventions:
16
+ - 4 spaces before ## titles
17
+ - 2 spaces before ### titles
18
+ - 1 spaces before normal text
19
+ -->
2
20
 
3
- * Rebuilt the gem with Rubygems 2.4.8 as building with 2.5.1+ would make the gem un-installable
4
21
 
5
- * Removed all symlinks from `node_module` directories to avoid further issues building the gem
6
22
 
7
- ## 0.9.3 2016-06-06
8
23
 
9
- * `Hash#initialize` now accepts JS `null` as well as `undefined`, restoring its 0.8 behavior
24
+ ## [0.10.0] - Unreleased
10
25
 
11
- ## 0.9.2 2016-01-10
12
26
 
13
- * Rebuilt the gem with Ruby 2.2 as building with 2.3 would make the gem un-installable
27
+ ### Added
14
28
 
15
- ## 0.9.1 2016-01-09
29
+ - `Module#included_modules` works
30
+ - Internal runtime cleanup (#1241)
31
+ - Make it easier to add custom runners for the CLI (#1261)
32
+ - Add Rack v2 compatibility (#1260)
33
+ - Newly compliant with the Ruby Spec Suite:
34
+ * `Array#slice!`
35
+ * `Array#repeated_combination`
36
+ * `Array#repeated_permutation`
37
+ * `Array#sort_by!`
38
+ * `Enumerable#sort`
39
+ * `Enumerable#max`
40
+ * `Enumerable#each_entry` (#1303)
41
+ * `Module#const_set`
42
+ - Add `-L` / `--library` option to compile only the code of the library (#1281)
43
+ - Implement `Kernel.open` method (#1218)
44
+ - Generate meaningful names for functions representing Ruby methods
45
+ - Implement `Pathname#join` and `Pathname#+` methods (#1301)
46
+ - Added support for `begin;rescue;else;end`.
47
+ - Implement `File.extname` method (#1219)
48
+ - Implement File.extname method (#1219)
49
+ - Added support for keyword arguments as lambda parameters.
50
+ - Super works with define_method blocks
51
+ - Added support for kwsplats.
52
+ - Added support for squiggly heredoc.
16
53
 
17
- * Backport rack2 compatibility (#1260)
18
54
 
19
- * Fixed issue with JS nil return paths being treated as true (#1274)
55
+ ### Changed
20
56
 
21
- * Fix using more than two `rescue` in sequence (#1269)
57
+ - Remove deprecation of `Opal::Environment` after popular request
58
+ - Setting `Opal::Config.dynamic_require_severity` will no longer affect `Opal.dynamic_require_severity` which now needs to be explicitly set if it differs from the default value of `"warning"` (See also the `Opal.dynamic_require_severity` rename below).
59
+ - The new default for `Opal::Config.dynamic_require_severity` is now `:warning`
60
+ - `Opal.dynamic_require_severity` and `OPAL_CONFIG` are now merged into `Opal.config.missing_require_severity` (defaults to `error`, the expected ruby behavior) and `Opal.config.unsupported_features_severity` (defaults to `warning`, e.g. a one-time heads up that freezing isn't supported)
61
+ - `Hash` instances should now list the string map (`$$smap`) as the first key, making debugging easier (most hashes will just have keys there).
22
62
 
23
63
 
24
- ## 0.9.0 2015-12-20
64
+ ### Deprecated
25
65
 
26
- * Fixed usage of JS keywords as instance variable names for:
27
- * `Kernel#instance_variable_set`
28
- * `Kernel#instance_variable_get`
29
- * `Kernel#instance_variables`
66
+ - `Opal::Processor.stubbed_files` and `Opal::Processor.stub_file` in favor of `Opal::Config.stubbed_files`
30
67
 
31
- * Renamed:
32
- * `Hash.keys` => `Hash.$$keys`
33
- * `Hash.map` => `Hash.$$map`
34
- * `Hash.smap` => `Hash.$$smap`
35
68
 
36
- * A `console` wrapper has been added to the stdlib, requiring it will make available the `$console` global variable.
69
+ ### Removed
37
70
 
38
- * `Kernel#pp` no longer forwards arguments directly to `console.log`, this behavior has been replaced by stdlib's own `console.rb` (see above).
71
+ - Removed the previously deprecated `Opal::Fragment#to_code`
72
+ - Removed the previously deprecated `Opal::Processor.load_asset_code`
73
+ - Removed the previously deprecated acceptance of a boolean as single argument to `Opal::Server.new`
39
74
 
40
- * `method_added`, `method_removed` and `method_undefined` reflection now works.
41
75
 
42
- * `singleton_method_added`, `singleton_method_removed` and `singleton_method_undefined` reflection now works.
76
+ ### Fixed
43
77
 
44
- * Now you can bridge a native class to a Ruby class that inherits from another Ruby class
78
+ - `super` works properly with overwritten alias methods (#1384)
79
+ - `NoMethodError` does not need a name to be instantiated
80
+ - `method_added` fix for singleton class cases
81
+ - Super now works properly with blocks (#1237)
82
+ - Fix using more than two `rescue` in sequence (#1269)
83
+ - Fixed inheritance for `Array` subclasses.
84
+ - Always populate all stub_subscribers with all method stubs, as a side effect of this now `method_missing` on bridged classes now works reliably (#1273)
85
+ - Fix `Hash#instance_variables` to not return `#default` and `#default_proc` (#1258)
86
+ - Fix `Module#name` when constant was created using `Opal.cdecl` (constant declare) like `ChildClass = Class.new(BaseClass)` (#1259)
87
+ - Fix issue with JavaScript `nil` return paths being treated as true (#1274)
88
+ - Fix `Array#to_n`, `Hash#to_n`, `Struct#to_n` when the object contains native objects (#1249, #1256)
89
+ - `break` semantics are now correct, except for the case in which a lambda containing a `break` is passed to a `yield` (#1250)
90
+ - Avoid double "/" when `Opal::Sprockets.javascript_include_tag` receives a prefix with a trailing slash.
91
+ - Fixed context of evaluation for `Kernel#eval` and `BasicObject#instance_eval`
92
+ - Fix `Module#===` to use all ancestors of the passed object (#1284)
93
+ - Fix `Struct.new` to be almost compatible with Rubyspec (#1251)
94
+ - Fix `Enumerator#with_index` to return the result of the previously called method.
95
+ - Improved `Date.parse` to cover most date formatting cases.
96
+ - Fixed `Module#const_get` for dynamically created constants.
97
+ - Fixed `File.dirname` to return joined String instead of Array.
98
+ - Fixed multiple assignment for constants, i.e., allowing `A, B = 1, 2`.
99
+ - Fixed `Number#[]` with negative number. Now `(-1)[1]` returns 1.
100
+ - Fixed parsing of pre-defined `$-?` global variables.
101
+ - Fixed parsing of unicode constants.
102
+ - Fixed parsing of quoted heredoc identifier.
103
+ - Fixed parsing of mass assignment of method call without parentheses.
104
+ - Fixed parsing of `%I{}` lists.
105
+ - Fixed parsing of `%{}` lists when list item contains same brackets.
106
+ - Fixed an issue with `"-"` inside the second arg of `String#tr`
107
+ - Fixed Base64 and enabled specs
45
108
 
46
- * `Numeric` semantics are now compliant with Ruby.
47
109
 
48
- * `Complex` has been fully implemented.
110
+ ### Removed
49
111
 
50
- * `Rational` has been fully implemented.
112
+ - Remove support for configuring Opal via `Opal::Processor`, the correct place is `Opal::Config`
113
+ - Remove `Opal.process` which used to be an alias to `Sprockets::Environment#[]`
51
114
 
52
- * `Opal::Sprockets.javascript_include_tag` has been add to allow easy debug mode (i.e. with source maps) when including a sprockets asset into an HTML page.
53
115
 
54
- * `Opal::Processor.load_asset_code(sprockets, name)` has been deprecated in favor of `Opal::Sprockets.load_asset(name, sprockets)`.
55
116
 
56
- * `Struct#hash` now works properly based on struct contents
57
117
 
58
- * No longer crashes when calling a method with an opt arg followed by an optional kwarg when called without the kwarg
118
+ ## [0.9.2] - 2016-01-10
119
+
120
+
121
+ ### Fixed
122
+ - Rebuilt the gem with Ruby 2.2 as building with 2.3 would make the gem un-installable
123
+
124
+
125
+
126
+
127
+ ## [0.9.1] - 2016-01-09
128
+
129
+
130
+ ### Fixed
131
+ - Backport rack2 compatibility (#1260)
132
+ - Fixed issue with JS nil return paths being treated as true (#1274)
133
+ - Fix using more than two `rescue` in sequence (#1269)
59
134
 
60
- * Newly compliant with RubySpec:
61
- * `Enumerable#chunk`
62
- * `Enumerable#each_cons`
63
- * `Enumerable#minmax`
64
- * `Range#to_a` (#1246)
65
- * `Module` comparison methods: `#<` `#<=` `#<=>` `#>` `#>=`
66
135
 
67
- * Operator methods (e.g. `+`, `<`, etc.) can be handled by `method_missing`
68
136
 
69
- * `OpenStruct` - fixed `#method missing`, `#inspect`, `#to_s`, `#delete_field`. Fully compliant except for frozen and marshal behavior.
70
137
 
71
- * Fix issue where passing a block after a parameter and a hash was causing block to not be passed (e.g. `method1 some_param, 'a' => 1, &block`)
138
+ ## [0.9.0] - 2015-12-20
72
139
 
73
- * `Kernel#raise` now properly re-raises exceptions (regardless of how many levels deep you are) and works properly if supplied a class that has an exception method.
74
140
 
75
- * `Exception#exception`, `Exception::exception`, `Exception#message`, and `Exception#to_s` are fully implemented
141
+ ### Added
76
142
 
77
- * Method defs issued inside `Module#instance_eval` and `Class#instance_eval`, and the respective `exec` now create class methods
143
+ - A `console` wrapper has been added to the stdlib, requiring it will make available the `$console` global variable.
144
+ - `method_added`, `method_removed` and `method_undefined` reflection now works.
145
+ - `singleton_method_added`, `singleton_method_removed` and `singleton_method_undefined` reflection now works.
146
+ - Now you can bridge a native class to a Ruby class that inherits from another Ruby class
147
+ - `Numeric` semantics are now compliant with Ruby.
148
+ - `Complex` has been fully implemented.
149
+ - `Rational` has been fully implemented.
150
+ - `Kernel#raise` now properly re-raises exceptions (regardless of how many levels deep you are) and works properly if supplied a class that has an exception method.
151
+ - `Exception#exception`, `Exception::exception`, `Exception#message`, and `Exception#to_s` are fully implemented
152
+ - You can make direct JavaScript method calls on using the `recv.JS.method`syntax. Has support for method calls, final callback (as a block), property getter and setter (via `#[]` and `#[]=`), splats, JavaScript keywords (via the `::JS` module) and global functions (after `require "js"`).
153
+ - `Set#superset?`, `Set#subset?`, and the respective `proper_` variant of each are now implemented
154
+ - `NameError` and `NoMethodError` - add `#name` and `#args` attributes
155
+ - `RegExp#match` now works correctly in multiline mode with white space
156
+ - `BasicObject#instance_eval` now can accept a string argument (after `require "opal-parser"`)
157
+ - Adds Nashorn (Java 8+ Javascript engine) runner `bundle exec bin/opal -R nashorn -r nashorn hello.rb`
78
158
 
79
- * You can make direct JavaScript method calls on using the `recv.JS.method`syntax. Has support for method calls, final callback (as a block), property getter and setter (via `#[]` and `#[]=`), splats, JavaScript keywords (via the `::JS` module) and global functions (after `require "js"`).
159
+ - Newly compliant with the Ruby Spec Suite:
160
+ * `Enumerable#chunk`
161
+ * `Enumerable#each_cons`
162
+ * `Enumerable#minmax`
163
+ * `Range#to_a` (#1246)
164
+ * `Module` comparison methods: `#<` `#<=` `#<=>` `#>` `#>=`
165
+ - `OpenStruct#method_missing`
166
+ - `OpenStruct#inspect`
167
+ - `OpenStruct#to_s`
168
+ - `OpenStruct#delete_field`
80
169
 
81
- * `Set#superset?`, `Set#subset?`, and the respective 'proper_' variant of each are now implemented
82
170
 
83
- * Now with enabled arity checks calling a method with more arguments than those supported by its signature raises an `ArgumentError` as well.
171
+ ### Changed
84
172
 
85
- * `NameError` and `NoMethodError` - add `#name` and `#args` attributes
173
+ - Renamed:
174
+ - `Hash.keys` => `Hash.$$keys`
175
+ - `Hash.map` => `Hash.$$map`
176
+ - `Hash.smap` => `Hash.$$smap`
177
+ - `Kernel#pp` no longer forwards arguments directly to `console.log`, this behavior has been replaced by stdlib's own `console.rb` (see above).
178
+ - `Opal::Sprockets.javascript_include_tag` has been added to allow easy debug mode (i.e. with source maps) when including a sprockets asset into an HTML page.
86
179
 
87
- * Previously arity checks would raise an error without clearing the block for a method, the could lead to strange bugs in case the error was rescued.
88
180
 
89
- * `RegExp#match` now works correctly in multiline mode with white space
181
+ ### Deprecated
90
182
 
91
- * `Regexp#===` returns false when the right hand side of the expression cannot be coereced to a string (instead of throwing a TypeError)
183
+ - `Opal::Processor.load_asset_code(sprockets, name)` has been deprecated in favor of `Opal::Sprockets.load_asset(name, sprockets)`.
92
184
 
93
- * `Regexp#options` has been optimized and correctly returns 0 when called on a Regexp literal without any options (e.g. //)
94
185
 
95
- * Fix `Kernel#exit` to allow exit inside `#at_exit`
186
+ ### Fixed
96
187
 
97
- * `BasicObject#instance_eval` now compliant with a string argument (needs `require "opal-parser"`)
188
+ - Fixed usage of JavaScript keywords as instance variable names for:
189
+ - `Kernel#instance_variable_set`
190
+ - `Kernel#instance_variable_get`
191
+ - `Kernel#instance_variables`
192
+ - `Struct#hash` now works properly based on struct contents
193
+ - No longer crashes when calling a method with an opt arg followed by an optional kwarg when called without the kwarg
194
+ - Operator methods (e.g. `+`, `<`, etc.) can be handled by `method_missing`
195
+ - Fix issue where passing a block after a parameter and a hash was causing block to not be passed (e.g. `method1 some_param, 'a' => 1, &block`)
196
+ - Method defs issued inside `Module#instance_eval` and `Class#instance_eval`, and the respective `exec` now create class methods
197
+ - Now with enabled arity checks calling a method with more arguments than those supported by its signature raises an `ArgumentError` as well.
198
+ - Previously arity checks would raise an error without clearing the block for a method, that could lead to strange bugs in case the error was rescued.
199
+ - `Regexp#===` returns false when the right hand side of the expression cannot be coereced to a string (instead of throwing a `TypeError`)
200
+ - `Regexp#options` has been optimized and correctly returns 0 when called on a Regexp literal without any options (e.g. `//`)
201
+ - Fix `Kernel#exit` to allow exit inside `#at_exit`
202
+ - Fixed a number of syntax errors (e.g. #1224 #1225 #1227 #1231 #1233 #1226)
203
+ - Fixed `Native()` when used with `Array` instances containing native objects (which weren't wrapped properly) – #1212
204
+ - Fix `Array#to_n`, `Hash#to_n`, `Struct#to_n` when the object contains native objects (#1249)
205
+ - Internal cleanup and lots of bugs!
98
206
 
99
- * Fixed `Native()` when used with `Array` instances containing native objects (which weren't wrapped properly) – #1212
100
207
 
101
- * Adds Nashorn (Java 8+ Javascript engine) runner `bundle exec bin/opal -R nashorn -r nashorn hello.rb`
102
208
 
103
- * Fixed a number of syntax errors (e.g. #1224 #1225 #1227 #1231 #1233 #1226)
104
209
 
105
- * Fix `Array#to_n`, `Hash#to_n`, `Struct#to_n` when the object contains native objects (#1249)
210
+ ## [0.8.1] - 2015-10-12
106
211
 
107
- * Internal cleanup and lots of bugs!
108
212
 
109
- ## 0.8.1 2015-10-12
213
+ ### Removed
110
214
 
111
- * Use official Sprockets processor cache keys API:
215
+ - Use official Sprockets processor cache keys API:
112
216
  The old cache key hack has been removed.
113
217
  Add `Opal::Processor.cache_key` and `Opal::Processor.reset_cache_key!` to
114
218
  reset it as it’s cached but should change whenever `Opal::Config` changes.
115
219
 
116
- * Fix an issue for which a Pathname was passed instead of a String to Sprockets.
220
+ ### Fixed
117
221
 
118
- ## 0.8.0 2015-07-16
222
+ - Fix an issue for which a Pathname was passed instead of a String to Sprockets.
119
223
 
120
- * Update to Sprockets v3.0.
121
224
 
122
- * Delegate dependency management directly to Sprockets (when used) making sourcemaps swift again.
123
- This means code generated by sprockets will always need to be bootstrapped via `Opal.load` or `Opal.require`.
124
- Luckily `Opal::Processor.load_asset_code(sprockets, name)` does just that in the right way.
125
225
 
126
- * Enable operator inlining by default in the compiler.
127
226
 
128
- * Fix `Promise#always`.
227
+ ## [0.8.0] - 2015-07-16
129
228
 
130
- * Update to Sprockets v3.0.
131
229
 
132
- * Delegate dependency management directly to Sprockets (when used) making sourcemaps swift again.
133
- This means code generated by sprockets will always need to be bootstrapped via `Opal.load` or `Opal.require`.
134
- Luckily `Opal::Processor.load_asset_code(sprockets, name)` does just that in the right way.
230
+ ### Added
231
+
232
+ - `Hash[]` implementation fully compliant with rubyspec
135
233
 
136
- * Enable operator inlining by default in the compiler.
234
+ - Newly compliant with the Ruby Spec Suite:
235
+ - `Array#bsearch`
236
+ - `Array#combination`
237
+ - `Array#permutation`
238
+ - `Array#product`
239
+ - `Array#rotate!`
240
+ - `Array#rotate`
241
+ - `Array#sample`
242
+ - `Array#to_h`
243
+ - `Array#values_at`
244
+ - `Array#zip`
245
+ - `Enumerator#with_index`
246
+ - `Kernel#===`
247
+ - `Kernel#Array`
248
+ - `Kernel#Float`
249
+ - `Kernel#Hash`
250
+ - `Kernel#Integer`
251
+ - `Kernel#String`
252
+ - `Kernel#format`
253
+ - `Kernel#sprintf`
254
+ - `MatchData#==`
255
+ - `MatchData#eql?`
256
+ - `MatchData#values_at`
257
+ - `Module#instance_methods`
258
+ - `Regexp#match`
259
+ - `String#%`
260
+ - `String#===`
261
+ - `String#==`
262
+ - `String#[]`
263
+ - `String#each_line`
264
+ - `String#eql?`
265
+ - `String#index`
266
+ - `String#inspect`
267
+ - `String#lines`
268
+ - `String#match`
269
+ - `String#next`
270
+ - `String#oct`
271
+ - `String#scan`
272
+ - `String#slice`
273
+ - `String#split`
274
+ - `String#succ`
275
+ - `String#to_i`
276
+ - `String#try_convert`
137
277
 
138
- * Fix `Promise#always`.
139
278
 
140
- * Fix `String#split` when no match is found and a limit is provided
279
+ ### Changed
141
280
 
142
- * Fix `require_tree(".")` when used from file at the root of the assets paths
281
+ - Updated to Sprockets v3.0.
282
+ - Enable operator inlining by default in the compiler.
143
283
 
144
- * `Hash[]` implementation fully compliant with rubyspec
145
284
 
146
- * Removed `minitest` from stdlib. It's not part of MRI and it never belonged there, checkout the `opal-minitest` gem instead.
285
+ ### Removed
147
286
 
148
- * Parser: Allow trailing comma in paren arglists, after normal args as
149
- well as assoc args.
287
+ - Removed `minitest` from stdlib. It's not part of MRI and it never belonged there, checkout the `opal-minitest` gem instead.
150
288
 
151
- * Parser: Fix parsing of parens following divide operator without a
152
- space.
153
289
 
154
- * Parser: Fix bug where keyword arguments could not be parsed if
155
- method definition did not have parens around arguments.
290
+ ### Fixed
291
+
292
+ - Delegate dependency management directly to Sprockets (when used) making sourcemaps swift again.
293
+ This means code generated by sprockets will always need to be bootstrapped via `Opal.load` or `Opal.require`.
294
+ Luckily `Opal::Processor.load_asset_code(sprockets, name)` does just that in the right way.
295
+ - Fix `Promise#always`.
296
+ - Fix `String#split` when no match is found and a limit is provided
297
+ - Fix `require_tree(".")` when used from file at the root of the assets paths
298
+ - Parser: Allow trailing comma in paren arglists, after normal args as well as assoc args.
299
+ - Parser: Fix parsing of parens following divide operator without a space.
300
+ - Parser: Fix bug where keyword arguments could not be parsed if method definition did not have parens around arguments.
301
+ - `Module#const_get` now accepts a scoped constant name
302
+ - `Regexp#===` sets global match data vars
156
303
 
157
- * Newly compliant with RubySpec:
158
- * `Array#bsearch`
159
- * `Array#combination`
160
- * `Array#permutation`
161
- * `Array#product`
162
- * `Array#rotate!`
163
- * `Array#rotate`
164
- * `Array#sample`
165
- * `Array#to_h`
166
- * `Array#values_at`
167
- * `Array#zip`
168
- * `Enumerator#with_index`
169
- * `Kernel#===`
170
- * `Kernel#Array`
171
- * `Kernel#Float`
172
- * `Kernel#Hash`
173
- * `Kernel#Integer`
174
- * `Kernel#String`
175
- * `Kernel#format`
176
- * `Kernel#sprintf`
177
- * `MatchData#==`
178
- * `MatchData#eql?`
179
- * `MatchData#values_at`
180
- * `Module#instance_methods`
181
- * `Regexp#match`
182
- * `String#%`
183
- * `String#===`
184
- * `String#==`
185
- * `String#[]`
186
- * `String#each_line`
187
- * `String#eql?`
188
- * `String#index`
189
- * `String#inspect`
190
- * `String#lines`
191
- * `String#match`
192
- * `String#next`
193
- * `String#oct`
194
- * `String#scan`
195
- * `String#slice`
196
- * `String#split`
197
- * `String#succ`
198
- * `String#to_i`
199
- * `String#try_convert`
200
304
 
201
- * Misc corelib fixes:
202
- * `Module#const_get` accepts a scoped constant name
203
- * `Regexp#===` sets global match data vars
204
305
 
205
- ## 0.7.2 2015-04-23
206
306
 
207
- * Remove Sprockets 3.0 support (focus moved to upcoming 0.8)
208
307
 
209
- * Fix version number consistency.
308
+ ## [0.7.2] - 2015-04-23
210
309
 
211
- ## 0.7.1 2015-02-14
310
+ - Remove Sprockets 3.0 support (focus moved to upcoming 0.8)
311
+ - Fix version number consistency.
212
312
 
213
- * CLI options `-d` and `-v` now set respectively `$DEBUG` and `$VERBOSE`
214
313
 
215
- * Fixed a bug that would make the `-v` CLI option wait for STDIN input
314
+ ## [0.7.1] - 2015-02-14
216
315
 
217
- * Add the `-E` / `--no-exit` CLI option to skip implicit `Kernel#exit` call
316
+ - CLI options `-d` and `-v` now set respectively `$DEBUG` and `$VERBOSE`
317
+ - Fixed a bug that would make the `-v` CLI option wait for STDIN input
318
+ - Add the `-E` / `--no-exit` CLI option to skip implicit `Kernel#exit` call
319
+ - Now the CLI implicitly calls `Kernel#exit` at the end of the script, thus making `at_exit` blocks be respected.
218
320
 
219
- * Now the CLI implicitly calls `Kernel#exit` at the end of the script, thus making `at_exit` blocks be respected.
220
321
 
221
- ## 0.7.0 2015-02-01
322
+ ## [0.7.0] - 2015-02-01
222
323
 
223
- * Stop keyword-arg variable names leaking to global javascript scope
324
+ - Stop keyword-arg variable names leaking to global javascript scope
224
325
 
225
- * `Class#native_class` now also exposes `MyClass.new` (Ruby) as `Opal.global.MyClass.new()` (JS)
326
+ - `Class#native_class` now also exposes `MyClass.new` (Ruby) as `Opal.global.MyClass.new()` (JS)
226
327
 
227
- * Add CRuby (MRI) tests harness to start checking Opal against them too.
328
+ - Add CRuby (MRI) tests harness to start checking Opal against them too.
228
329
 
229
- * Add Minitest to the stdlib.
330
+ - Add Minitest to the stdlib.
230
331
 
231
- * Add `Date#<=>` with specs.
332
+ - Add `Date#<=>` with specs.
232
333
 
233
- * Show extended info and context upon parsing, compiling and building errors.
334
+ - Show extended info and context upon parsing, compiling and building errors.
234
335
 
235
- * Support keyword arguments in method calls and definitions.
336
+ - Support keyword arguments in method calls and definitions.
236
337
 
237
- * Fix `begin`/`rescue` blocks to evaluate to last expression.
338
+ - Fix `begin`/`rescue` blocks to evaluate to last expression.
238
339
 
239
- * Add support for `RUBY_ENGINE/RUBY_PLATFORM != "opal"` pre-processor directives.
340
+ - Add support for `RUBY_ENGINE/RUBY_PLATFORM != "opal"` pre-processor directives.
240
341
 
241
342
  if RUBY_ENGINE != "opal"
242
343
  # this code never compiles
243
344
  end
244
345
 
245
- * Fix donating methods defined in modules. This ensures that if a class includes more than one module, then the methods defined on the class respect the order in which the modules are included.
346
+ - Fix donating methods defined in modules. This ensures that if a class includes more than one module, then the methods defined on the class respect the order in which the modules are included.
246
347
 
247
- * Improved support for recursive `Hash` for both `#inspect` and `#hash`.
348
+ - Improved support for recursive `Hash` for both `#inspect` and `#hash`.
248
349
 
249
- * Optimized `Hash` implementation for `String` and `Symbol`, they have a separate hash-table in which they're used as both keys and hashes.
350
+ - Optimized `Hash` implementation for `String` and `Symbol`, they have a separate hash-table in which they're used as both keys and hashes.
250
351
 
251
- * Added real `#hash` / `eql?` support, previously was relying on `.toString()`.
352
+ - Added real `#hash` / `eql?` support, previously was relying on `.toString()`.
252
353
 
253
- * `String#to_proc` now uses `__send__` instead of `send` for calling
354
+ - `String#to_proc` now uses `__send__` instead of `send` for calling
254
355
  methods on receivers.
255
356
 
256
- * Deprecated `Opal::Sprockets::Environment`. It can easily be replaced by `Opal::Server` or by appending `Opal.paths` to a `Sprockets::Environment`:
357
+ - Deprecated `Opal::Sprockets::Environment`. It can easily be replaced by `Opal::Server` or by appending `Opal.paths` to a `Sprockets::Environment`:
257
358
 
258
359
  Sprockets::Environment.new.tap { |e| Opal.paths.each {|p| e.append_path(p)} }
259
360
 
260
- * Add `Set` methods `#classify`, `#collect!`, `#map!`, `#subtract` `#replace`,
361
+ - Add `Set` methods `#classify`, `#collect!`, `#map!`, `#subtract` `#replace`,
261
362
  `#difference` and `#eql?`
262
363
 
263
- * Support `module_function` without args to toggle module functions.
364
+ - Support `module_function` without args to toggle module functions.
264
365
 
265
- * Fix bug where command calls with no space and sym arg were incorrectly parsed.
366
+ - Fix bug where command calls with no space and sym arg were incorrectly parsed.
266
367
 
267
- * Add some `StringScanner` methods.
368
+ - Add some `StringScanner` methods.
268
369
 
269
- * Add `Date#<<` and `Date#>>` implementations.
370
+ - Add `Date#<<` and `Date#>>` implementations.
270
371
 
271
- * Support nested directories using `require_tree` directive.
372
+ - Support nested directories using `require_tree` directive.
272
373
 
273
- * Fix bug where Exception subclasses could not have methods defined on them.
374
+ - Fix bug where Exception subclasses could not have methods defined on them.
274
375
 
275
- * Fix symbols with interpolations `:"#{foo}"`
376
+ - Fix symbols with interpolations `:"#{foo}"`
276
377
 
277
- * Implement $1..N matchers and rewrite support for $~, $', $& and $\`.
378
+ - Implement $1..N matchers and rewrite support for $~, $', $& and $\`.
278
379
 
279
- * Implement `Regexp.last_match`.
380
+ - Implement `Regexp.last_match`.
280
381
 
281
- * Fixed `-@` unary op. precedence with a numeric and followed by a method call (e.g. `-1.foo` was parsed as `-(1.foo)`)
382
+ - Fixed `-@` unary op. precedence with a numeric and followed by a method call (e.g. `-1.foo` was parsed as `-(1.foo)`)
282
383
 
283
- * `require_relative` (with strings) is now preprocessed, expanded and added to `Compiler#requires`
384
+ - `require_relative` (with strings) is now preprocessed, expanded and added to `Compiler#requires`
284
385
 
285
- * Rewritten the require system to respect requires position (previously all the requires were stacked up at the top of the file)
386
+ - Rewritten the require system to respect requires position (previously all the requires were stacked up at the top of the file)
286
387
 
287
- * Implement for-loop syntax
388
+ - Implement for-loop syntax
288
389
 
289
- * Add Array#|
390
+ - Add Array#|
290
391
 
291
- * Fix Range.new to raise `ArgumentError` on contructor values that cannot
392
+ - Fix Range.new to raise `ArgumentError` on contructor values that cannot
292
393
  be compared
293
394
 
294
- * Fix compiler bug where Contiguous strings were not getting concatenated.
395
+ - Fix compiler bug where Contiguous strings were not getting concatenated.
295
396
 
296
- * Cleanup generated code for constant access. All constant lookups now go through `$scope.get('CONST_NAME')` to produce cleaner code and a unified place for const missing dispatch.
397
+ - Cleanup generated code for constant access. All constant lookups now go through `$scope.get('CONST_NAME')` to produce cleaner code and a unified place for const missing dispatch.
297
398
 
298
- * Remove `const_missing` option from compiler. All constant lookups are now strict.
399
+ - Remove `const_missing` option from compiler. All constant lookups are now strict.
299
400
 
300
- * Add initial support for Module#autoload.
401
+ - Add initial support for Module#autoload.
301
402
 
302
- * Fix `Enumerator#with_index`, `Numeric#round`.
403
+ - Fix `Enumerator#with_index`, `Numeric#round`.
303
404
 
304
- ## 0.6.2 2014-04-25
305
405
 
306
- * Added Range#size
406
+ ## [0.6.2] - 2014-04-25
307
407
 
308
- * `opal` executable now reads STDIN when no file or `-e` are passed
408
+ - Added Range#size
309
409
 
310
- * `opal` executable doesn't exit after showing version on `-v` if other options are passed
410
+ - `opal` executable now reads STDIN when no file or `-e` are passed
311
411
 
312
- * (Internal) improved the mspec runner
412
+ - `opal` executable doesn't exit after showing version on `-v` if other options are passed
313
413
 
314
- ## 0.6.1 2014-04-15
414
+ - (Internal) improved the mspec runner
315
415
 
316
- * Updated RubySpecs to master and added `rubysl-*` specs. Thanks to Mike Owens (@mieko)
317
416
 
318
- * Added `Kernel#require_remote(url)` in `opal-parser` that requires files with basic synchronous ajax
417
+ ## [0.6.1] - 2014-04-15
418
+
419
+ - Updated RubySpec to master and added `rubysl-*` specs. Thanks to Mike Owens (@mieko)
420
+
421
+ - Added `Kernel#require_remote(url)` in `opal-parser` that requires files with basic synchronous ajax
319
422
  GET requests. It is used to load `<scripts type="text/ruby" src="…url…">`.
320
423
 
321
- * Various parsing fixes (Hash parsing, `def` returns method name, cleanup `core/util`, Enumerator fixes)
424
+ - Various parsing fixes (Hash parsing, `def` returns method name, cleanup `core/util`, Enumerator fixes)
322
425
 
323
- * Added `#native_reader`, `#native_writer` and `#native_accessor`as class methods
426
+ - Added `#native_reader`, `#native_writer` and `#native_accessor`as class methods
324
427
  donated by `include Native`
325
428
 
326
- * Added specs for Sprockets' processors (both .js.rb and .opalerb), backported from `opal-rails`
429
+ - Added specs for Sprockets' processors (both .js.rb and .opalerb), backported from `opal-rails`
327
430
 
328
- * Set 2.1.1 as RUBY_VERSION
431
+ - Set 2.1.1 as RUBY_VERSION
329
432
 
330
- * Add `opal-build` command utility to easily build libraries to js
433
+ - Add `opal-build` command utility to easily build libraries to js
331
434
 
332
- * Add `opal-repl` to gemspec executables,
435
+ - Add `opal-repl` to gemspec executables,
333
436
  previously was only available by using Opal from source
334
437
 
335
- * Fix parsing `=>` in hash literals where it would sometimes incorrectly
438
+ - Fix parsing `=>` in hash literals where it would sometimes incorrectly
336
439
  parse as a key name.
337
440
 
338
- ## 0.6.0 2014-03-05
339
441
 
340
- * Fix parsing of escapes in single-strings ('foo\n'). Only ' and \
442
+ ## [0.6.0] - 2014-03-05
443
+
444
+ - Fix parsing of escapes in single-strings ('foo\n'). Only ' and \
341
445
  characters now get escaped in single quoted strings. Also, more escape
342
446
  sequences in double-quoted strings are now supported: `\a`, `\v`, `\f`,
343
447
  `\e`, `\s`, octal (`\314`), hex (`\xff`) and unicode (`\u1234`).
344
448
 
345
- * Sourcemaps revamp. Lexer now tracks column and line info for every token to
449
+ - Sourcemaps revamp. Lexer now tracks column and line info for every token to
346
450
  produce much more accurate sourcemaps. All method calls are now located on
347
451
  the correct source line, and multi-line xstrings are now split to generate
348
452
  a map line-to-line for long inline javascript parts.
349
453
 
350
- * Merged sprockets support from `opal-sprockets` directly into Opal. For the
454
+ - Merged sprockets support from `opal-sprockets` directly into Opal. For the
351
455
  next release, the exernal `opal-sprockets` gem is no longer needed. This
352
456
  commit adds `Opal::Processor`, `Opal::Server` and `Opal::Environment`.
353
457
 
354
- * Introduce pre-processed if directives to hide code from Opal. Two special
458
+ - Introduce pre-processed if directives to hide code from Opal. Two special
355
459
  constant checks now take place in the compiler. Either `RUBY_ENGINE` or
356
460
  `RUBY_PLATFORM` when `== "opal"`. Both if and unless statements can pick
357
461
  up these logic checks:
@@ -371,316 +475,397 @@
371
475
  This is particularly useful for avoiding `require()` statements being
372
476
  picked up, which are included at compile time.
373
477
 
374
- * Add special `debugger` method to compiler. Compiles down to javascript
478
+ - Add special `debugger` method to compiler. Compiles down to javascript
375
479
  `debugger` keyword to start in-browser debug console.
376
480
 
377
- * Add missing string escapes to `read_escape` in lexer. Now most ruby escape
481
+ - Add missing string escapes to `read_escape` in lexer. Now most ruby escape
378
482
  sequences are properly detected and handled in string parsing.
379
483
 
380
- * Disable escapes inside x-strings. This means no more double escaping all
484
+ - Disable escapes inside x-strings. This means no more double escaping all
381
485
  characters in x-strings and backticks. (`\n` => `\n`).
382
486
 
383
- * Add `time.rb` to stdlib and moved `Time.parse()` and `Time.iso8601()`
487
+ - Add `time.rb` to stdlib and moved `Time.parse()` and `Time.iso8601()`
384
488
  methods there.
385
489
 
386
- * `!` is now treated as an unary method call on the object. Opal now parsed
490
+ - `!` is now treated as an unary method call on the object. Opal now parsed
387
491
  `!` as a def method name, and implements the method on `BasicObject`,
388
492
  `NilClass` and `Boolean`.
389
493
 
390
- * Fixed bug where true/false as object literals from javascript were not
494
+ - Fixed bug where true/false as object literals from javascript were not
391
495
  correctly being detected as truthy/falsy respectively. This is due to the
392
496
  javascript "feature" where `new Boolean(false) !== false`.
393
497
 
394
- * Moved `native.rb` to stdlib. Native support must now be explicitly required
498
+ - Moved `native.rb` to stdlib. Native support must now be explicitly required
395
499
  into Opal. `Native` is also now a module, instead of a top level class.
396
500
  Also added `Native::Object#respond_to?`.
397
501
 
398
- * Remove all core `#as_json()` methods from `json.rb`. Added them externally
502
+ - Remove all core `#as_json()` methods from `json.rb`. Added them externally
399
503
  to `opal-activesupport`.
400
504
 
401
- * `Kernel#respond_to?` now calls `#respond_to_missing?` for compliance.
505
+ - `Kernel#respond_to?` now calls `#respond_to_missing?` for compliance.
402
506
 
403
- * Fix various `String` methods and add relevant rubyspecs for them. `#chars`,
507
+ - Fix various `String` methods and add relevant rubyspecs for them. `#chars`,
404
508
  `#to_f`, `#clone`, `#split`.
405
509
 
406
- * Fix `Array` method compliance: `#first`, `#fetch`, `#insert`, `#delete_at`,
510
+ - Fix `Array` method compliance: `#first`, `#fetch`, `#insert`, `#delete_at`,
407
511
  `#last`, `#splice`, `.try_convert`.
408
512
 
409
- * Fix compliance of `Kernel#extend` and ensure it calls `#extended()` hook.
513
+ - Fix compliance of `Kernel#extend` and ensure it calls `#extended()` hook.
410
514
 
411
- * Fix bug where sometimes the wrong regexp flags would be generated in the
515
+ - Fix bug where sometimes the wrong regexp flags would be generated in the
412
516
  output javascript.
413
517
 
414
- * Support parsing `__END__` constructs in ruby code, inside the lexer. The
518
+ - Support parsing `__END__` constructs in ruby code, inside the lexer. The
415
519
  content is gathered up by use of the parser. The special constant `DATA`
416
520
  is then available inside the ruby code to read the content.
417
521
 
418
- * Support single character strings (using ? prefix) with escaped characters.
522
+ - Support single character strings (using ? prefix) with escaped characters.
419
523
 
420
- * Fix lexer to detect dereferencing on local variables even when whitespace
524
+ - Fix lexer to detect dereferencing on local variables even when whitespace
421
525
  is present (`a = 0; a [0]` parses as a deference on a).
422
526
 
423
- * Fix various `Struct` methods. Fixed `#each` and `#each_pair` to return
527
+ - Fix various `Struct` methods. Fixed `#each` and `#each_pair` to return
424
528
  self. Add `Struct.[]` as synonym for `Struct.new`.
425
529
 
426
- * Implemented some `Enumerable` methods: `#collect_concat`, `#flat_map`,
530
+ - Implemented some `Enumerable` methods: `#collect_concat`, `#flat_map`,
427
531
  `#reject`, `#reverse_each`, `#partition` and `#zip`.
428
532
 
429
- * Support any Tilt template for `index_path` in `Opal::Server`. All index
533
+ - Support any Tilt template for `index_path` in `Opal::Server`. All index
430
534
  files are now run through `Tilt` (now supports haml etc).
431
535
 
432
- * Fix code generation of `op_asgn_1` calls (`foo[val] += 10`).
536
+ - Fix code generation of `op_asgn_1` calls (`foo[val] += 10`).
433
537
 
434
- * Add `base64` to stdlib.
538
+ - Add `base64` to stdlib.
435
539
 
436
- * Add promises implementation to stdlib.
540
+ - Add promises implementation to stdlib.
437
541
 
438
- * Add `Math` module to corelib.
542
+ - Add `Math` module to corelib.
439
543
 
440
- * Use `//#` instead of `//@` deprecated syntax for sourceMappingURL.
544
+ - Use `//#` instead of `//@` deprecated syntax for sourceMappingURL.
441
545
 
442
- * Implicitly require `erb` from stdlib when including erb templates.
546
+ - Implicitly require `erb` from stdlib when including erb templates.
443
547
 
444
- * Fix `Regexp.escape` to also escape '(' character.
548
+ - Fix `Regexp.escape` to also escape '(' character.
445
549
 
446
- * Support '<' and '>' as matching pairs in string boundrys `%q<hi>`.
550
+ - Support '<' and '>' as matching pairs in string boundrys `%q<hi>`.
447
551
 
448
- * `Opal::Server` no longer searches for an index file if not specified.
552
+ - `Opal::Server` no longer searches for an index file if not specified.
449
553
 
450
- * Move `Math` and `Encoding` to stdlib. Can be required using
554
+ - Move `Math` and `Encoding` to stdlib. Can be required using
451
555
  `require 'math'`, etc.
452
556
 
453
- * Fix some stdlib `Date` methods.
557
+ - Fix some stdlib `Date` methods.
558
+
559
+ - Fix `Regexp.escape` to properly escape \n, \t, \r, \f characters.
454
560
 
455
- * Fix `Regexp.escape` to properly escape \n, \t, \r, \f characters.
561
+ - Add `Regexp.quote` as an alias of `escape`.
456
562
 
457
- * Add `Regexp.quote` as an alias of `escape`.
458
563
 
459
- ## 0.5.5 2013-11-25
564
+ ## [0.5.5] - 2013-11-25
460
565
 
461
- * Fix regression: add `%i[foo bar]` style words back to lexer
566
+ - Fix regression: add `%i[foo bar]` style words back to lexer
462
567
 
463
- * Move corelib from `opal/core` to `opal/corelib`. This stops files in
568
+ - Move corelib from `opal/core` to `opal/corelib`. This stops files in
464
569
  `core/` clashing with user files.
465
570
 
466
- ## 0.5.4 2013-11-20
467
571
 
468
- * Reverted `RUBY_VERSION` to `1.9.3`. Opal `0.6.0` will be the first release
572
+ ## [0.5.4] - 2013-11-20
573
+
574
+ - Reverted `RUBY_VERSION` to `1.9.3`. Opal `0.6.0` will be the first release
469
575
  for `2.0.0`.
470
576
 
471
- ## 0.5.3 2013-11-12
472
577
 
473
- * Opal now targets ruby 2.0.0
578
+ ## [0.5.3] - 2013-11-12
579
+
580
+ - Opal now targets ruby 2.0.0
474
581
 
475
- * Named function inside class body now generates with `$` prefix, e.g.
582
+ - Named function inside class body now generates with `$` prefix, e.g.
476
583
  `$MyClass`. This makes it easier to wrap/bridge native functions.
477
584
 
478
- * Support Array subclasses
585
+ - Support Array subclasses
586
+
587
+ - Various fixes to `String`, `Kernel` and other core classes
479
588
 
480
- * Various fixes to `String`, `Kernel` and other core classes
589
+ - Fix `Method#call` to use correct receiver
481
590
 
482
- * Fix `Method#call` to use correct receiver
591
+ - Fix `Module#define_method` to call `#to_proc` on explicit argument
483
592
 
484
- * Fix `Module#define_method` to call `#to_proc` on explicit argument
593
+ - Fix `super()` dispatches on class methods
485
594
 
486
- * Fix `super()` dispatches on class methods
595
+ - Support `yield()` calls from inside a block (inside a method)
487
596
 
488
- * Support `yield()` calls from inside a block (inside a method)
597
+ - Cleanup string parsing inside lexer
489
598
 
490
- * Cleanup string parsing inside lexer
599
+ - Cleanup parser/lexer to use `t` and `k` prefixes for all tokens
491
600
 
492
- * Cleanup parser/lexer to use `t` and `k` prefixes for all tokens
493
601
 
494
- ## 0.5.2 2013-11-11
602
+ ## [0.5.2] - 2013-11-11
495
603
 
496
- * Include native into corelib for 0.5.x
604
+ - Include native into corelib for 0.5.x
497
605
 
498
- ## 0.5.1 2013-11-10
499
606
 
500
- * Move all corelib under `core/` directory to prevent filename clashes with
607
+ ## [0.5.1] - 2013-11-10
608
+
609
+ - Move all corelib under `core/` directory to prevent filename clashes with
501
610
  `require`
502
611
 
503
- * Move `native.rb` into stdlib - must now be explicitly required
612
+ - Move `native.rb` into stdlib - must now be explicitly required
613
+
614
+ - Implement `BasicObject#__id__`
615
+
616
+ - Cleanup and fix various `Enumerable` methods
504
617
 
505
- * Implement `BasicObject#__id__`
506
618
 
507
- * Cleanup and fix various `Enumerable` methods
619
+ ## [0.5.0] - 2013-11-03
508
620
 
509
- ## 0.5.0 2013-11-03
621
+ - WIP: https://gist.github.com/elia/7747460
510
622
 
511
- * WIP: https://gist.github.com/elia/7747460
512
623
 
513
- ## 0.4.2 2013-07-03
624
+ ## [0.4.2] - 2013-07-03
514
625
 
515
- * Added `Kernel#rand`. (fntzr)
626
+ - Added `Kernel#rand`. (fntzr)
516
627
 
517
- * Restored the `bin/opal` executable in gemspec.
628
+ - Restored the `bin/opal` executable in gemspec.
518
629
 
519
- * Now `.valueOf()` is used in `#to_n` of Boolean, Numeric, Regexp and String
630
+ - Now `.valueOf()` is used in `#to_n` of Boolean, Numeric, Regexp and String
520
631
  to return the naked JavaScript value instead of a wrapping object.
521
632
 
522
- * Parser now wraps or-ops in paranthesis to stop variable order from
633
+ - Parser now wraps or-ops in paranthesis to stop variable order from
523
634
  leaking out when minified by uglify. We now have code in this
524
635
  format: `(((tmp = lhs) !== false || !==nil) ? tmp : rhs)`.
525
636
 
526
- ## 0.4.1 2013-06-16
527
637
 
528
- * Move sprockets logic out to external opal-sprockets gem. That now
638
+ ## [0.4.1] - 2013-06-16
639
+
640
+ - Move sprockets logic out to external opal-sprockets gem. That now
529
641
  handles the compiling and loading of opal files in sprockets.
530
642
 
531
- ## 0.4.0 2013-06-15
532
643
 
533
- * Added fragments to parser. All parser methods now generate one or
644
+ ## [0.4.0] - 2013-06-15
645
+
646
+ - Added fragments to parser. All parser methods now generate one or
534
647
  more Fragments which store the original sexp. This allows us to
535
648
  enumerate over them after parsing to map generated lines back to
536
649
  original line numbers.
537
650
 
538
- * Reverted `null` for `nil`. Too buggy at this time.
651
+ - Reverted `null` for `nil`. Too buggy at this time.
539
652
 
540
- * Add Opal::SprocketsParser as Parser subclass for handling parsing
653
+ - Add Opal::SprocketsParser as Parser subclass for handling parsing
541
654
  for sprockets environment. This subclass handles require statements
542
655
  and stores them for sprockets to use.
543
656
 
544
- * Add :irb option to parser to keep top level lvars stored inside
657
+ - Add :irb option to parser to keep top level lvars stored inside
545
658
  opal runtime so that an irb session can be persisted and maintain
546
659
  access to local variables.
547
660
 
548
- * Add Opal::Environment#use_gem() helper to add a gem to opals load
661
+ - Add Opal::Environment#use_gem() helper to add a gem to opals load
549
662
  path.
550
663
 
551
- * Stop pre-setting ivars to `nil`. This is no longer needed as `nil`
664
+ - Stop pre-setting ivars to `nil`. This is no longer needed as `nil`
552
665
  is now `null` or `undefined`.
553
666
 
554
- * Use `null` as `nil` in opal. This allows us to send methods to
667
+ - Use `null` as `nil` in opal. This allows us to send methods to
555
668
  `null` and `undefined`, and both act as `nil`. This makes opal a
556
669
  much better javascript citizen. **REVERTED**
557
670
 
558
- * Add Enumerable#none? with specs.
671
+ - Add Enumerable#none? with specs.
559
672
 
560
- * Add Opal.block_send() runtime helper for sending methods to an
673
+ - Add Opal.block_send() runtime helper for sending methods to an
561
674
  object which uses a block.
562
675
 
563
- * Remove \_klass variable for denoting ruby classes, and use
676
+ - Remove \_klass variable for denoting ruby classes, and use
564
677
  constructor instead. constructor is a javascript property used for
565
678
  the same purpose, and this makes opal fit in as a better js citizen.
566
679
 
567
- * Add Class.bridge\_class method to bridge a native constructor into an
680
+ - Add Class.bridge\_class method to bridge a native constructor into an
568
681
  opal class which will set it up with all methods from Object, as
569
682
  well as giving it a scope and name.
570
683
 
571
- * Added native #[]= and #to_h methods, for setting properties and
684
+ - Added native #[]= and #to_h methods, for setting properties and
572
685
  converting to a hash respectivaly.
573
686
 
574
- * Fix bug where '::' was parsed as :colon2 instead of :colon3 when in
687
+ - Fix bug where '::' was parsed as :colon2 instead of :colon3 when in
575
688
  an args scope. Fixes #213
576
689
 
577
- * Remove lots of properties added to opal classes. This makes normal
690
+ - Remove lots of properties added to opal classes. This makes normal
578
691
  js constructors a lot closer to opal classes, making is easier to
579
692
  treat js classes as opal classes.
580
693
 
581
- * Merge Hash.from_native into Hash.new
694
+ - Merge Hash.from_native into Hash.new
695
+
582
696
 
583
- ## 0.3.44 2013-05-31
697
+ ## [0.3.44] - 2013-05-31
584
698
 
585
- * Cleanup runtime, and remove various flags and functions from opal
699
+ - Cleanup runtime, and remove various flags and functions from opal
586
700
  objects and classes (moving them to runtime methods).
587
701
 
588
- * Remove some activesupport methods into external lib.
702
+ - Remove some activesupport methods into external lib.
589
703
 
590
- * Add/fix lots of String methods, with specs.
704
+ - Add/fix lots of String methods, with specs.
591
705
 
592
- * Add more methods to MatchData class.
706
+ - Add more methods to MatchData class.
593
707
 
594
- * Implement $' and $` variables.
708
+ - Implement $' and $` variables.
595
709
 
596
- * Opal can now call methods on all native objects, via method missing
710
+ - Opal can now call methods on all native objects, via method missing
597
711
  dispatcher.
598
712
 
599
- * Add Opal::Environment as custom sprockets subclass which adds all
713
+ - Add Opal::Environment as custom sprockets subclass which adds all
600
714
  opal load paths automatically.
601
715
 
602
- ## 0.3.43 2013-05-02
603
716
 
604
- * Stop inlining respond_to? inside the parser. This now fully respects
717
+ ## [0.3.43] - 2013-05-02
718
+
719
+ - Stop inlining respond_to? inside the parser. This now fully respects
605
720
  an object overriding respond_to?.
606
721
 
607
- * Expose `Opal.eval()` function when parser is loaded for parsing
722
+ - Expose `Opal.eval()` function when parser is loaded for parsing
608
723
  and running strings of ruby code.
609
724
 
610
- * Add erb to corelib (as well as compiler to gem lib). ERB files with
725
+ - Add erb to corelib (as well as compiler to gem lib). ERB files with
611
726
  .opalerb extension will automatically be compiled into Template
612
727
  constant.
613
728
 
614
- * Added some examples into examples/ dir.
729
+ - Added some examples into examples/ dir.
615
730
 
616
- * Add Opal.send() javascript function for sending methods to ruby
731
+ - Add Opal.send() javascript function for sending methods to ruby
617
732
  objects.
618
733
 
619
- * Native class for wrapping and interacting with native objects and
734
+ - Native class for wrapping and interacting with native objects and
620
735
  function calls.
621
736
 
622
- * Add local_storage to stdlib as a basic wrapper around localStorage.
737
+ - Add local_storage to stdlib as a basic wrapper around localStorage.
623
738
 
624
- * Make method_missing more performant by reusing same dispatch function
739
+ - Make method_missing more performant by reusing same dispatch function
625
740
  instead of reallocating one for each run.
626
741
 
627
- * Fix Kernel#format to work in firefox. String.prototype.replace() had
742
+ - Fix Kernel#format to work in firefox. String.prototype.replace() had
628
743
  different semantics for empty matching groups which was breaking
629
744
  Kernel#format.
630
745
 
631
- ## 0.3.42 2013-03-21
632
746
 
633
- * Fix/add lots of language specs.
747
+ ## [0.3.42] - 2013-03-21
748
+
749
+ - Fix/add lots of language specs.
634
750
 
635
- * Seperate sprockets support out to opal-sprockets gem.
751
+ - Seperate sprockets support out to opal-sprockets gem.
636
752
 
637
- * Support %r[foo] style regexps.
753
+ - Support %r[foo] style regexps.
638
754
 
639
- * Use mspec to run specs on corelib and runtime. Rubyspecs are now
755
+ - Use mspec to run specs on corelib and runtime. Rubyspecs are now
640
756
  used, where possible to be as compliant as possible.
641
757
 
642
- ## 0.3.41 2013-02-26
643
758
 
644
- * Remove bin/opal - no longer required for building sources.
759
+ ## [0.3.41] - 2013-02-26
760
+
761
+ - Remove bin/opal - no longer required for building sources.
645
762
 
646
- * Depreceate Opal::Environment. The Opal::Server class provides a better
763
+ - Depreceate Opal::Environment. The Opal::Server class provides a better
647
764
  method of using the opal load paths. Opal.paths still stores a list of
648
765
  load paths for generic sprockets based apps to use.
649
766
 
650
- ## 0.3.40 2013-02-23
651
767
 
652
- * Add Opal::Server as an easy to configure rack server for testing and
768
+ ## [0.3.40] - 2013-02-23
769
+
770
+ - Add Opal::Server as an easy to configure rack server for testing and
653
771
  running Opal based apps.
654
772
 
655
- * Added optional arity check mode for parser. When turned on, every method
773
+ - Added optional arity check mode for parser. When turned on, every method
656
774
  will have code which checks the argument arity. Off by default.
657
775
 
658
- * Exception subclasses now relfect their name in webkit/firefox debuggers
776
+ - Exception subclasses now relfect their name in webkit/firefox debuggers
659
777
  to show both their class name and message.
660
778
 
661
- * Add Class#const_set. Trying to access undefined constants by a literal
779
+ - Add Class#const_set. Trying to access undefined constants by a literal
662
780
  constant will now also raise a NameError.
663
781
 
664
- ## 0.3.39 2013-02-20
665
782
 
666
- * Fix bug where methods defined on a parent class after subclass was defined
783
+ ## [0.3.39] - 2013-02-20
784
+
785
+ - Fix bug where methods defined on a parent class after subclass was defined
667
786
  would not given subclass access to method. Subclasses are now also tracked
668
787
  by superclass, by a private '_inherited' property.
669
788
 
670
- * Fix bug where classes defined by `Class.new` did not have a constant scope.
671
-
672
- * Move Date out of opal.rb loading, as it is part of stdlib not corelib.
673
-
674
- * Fix for defining methods inside metaclass, or singleton_class scopes.
675
-
676
- ## 0.3.38 2013-02-13
677
-
678
- * Add Native module used for wrapping objects to forward calls as native
679
- calls.
680
-
681
- * Support method_missing for all objects. Feature can be enabled/disabled on
682
- Opal::Processor.
683
-
684
- * Hash can now use any ruby object as a key.
685
-
686
- * Move to Sprockets based building via `Opal::Processor`.
789
+ - Fix bug where classes defined by `Class.new` did not have a constant scope.
790
+
791
+ - Move Date out of opal.rb loading, as it is part of stdlib not corelib.
792
+
793
+ - Fix for defining methods inside metaclass, or singleton_class scopes.
794
+
795
+
796
+ ## [0.3.38] - 2013-02-13
797
+
798
+ - Add Native module used for wrapping objects to forward calls as native calls.
799
+
800
+ - Support method_missing for all objects. Feature can be enabled/disabled on `Opal::Processor`.
801
+
802
+ - Hash can now use any ruby object as a key.
803
+
804
+ - Move to Sprockets based building via `Opal::Processor`.
805
+
806
+
807
+
808
+
809
+ [0.10.0]: https://github.com/opal/opal/compare/v0.9.2...HEAD
810
+ [0.9.2]: https://github.com/opal/opal/compare/v0.9.1...v0.9.2
811
+ [0.9.1]: https://github.com/opal/opal/compare/v0.9.0...v0.9.1
812
+ [0.9.0]: https://github.com/opal/opal/compare/v0.8.1...v0.9.0
813
+ [0.8.1]: https://github.com/opal/opal/compare/v0.8.0...v0.8.1
814
+ [0.8.0]: https://github.com/opal/opal/compare/v0.7.2...v0.8.0
815
+ [0.7.2]: https://github.com/opal/opal/compare/v0.7.1...v0.7.2
816
+ [0.7.1]: https://github.com/opal/opal/compare/v0.7.0...v0.7.1
817
+ [0.7.0]: https://github.com/opal/opal/compare/v0.6.3...v0.7.0
818
+ [0.6.3]: https://github.com/opal/opal/compare/v0.6.2...v0.6.3
819
+ [0.6.2]: https://github.com/opal/opal/compare/v0.6.1...v0.6.2
820
+ [0.6.1]: https://github.com/opal/opal/compare/v0.6.0...v0.6.1
821
+ [0.6.0]: https://github.com/opal/opal/compare/v0.5.5...v0.6.0
822
+ [0.5.5]: https://github.com/opal/opal/compare/v0.5.4...v0.5.5
823
+ [0.5.4]: https://github.com/opal/opal/compare/v0.5.3...v0.5.4
824
+ [0.5.3]: https://github.com/opal/opal/compare/v0.5.2...v0.5.3
825
+ [0.5.2]: https://github.com/opal/opal/compare/v0.5.1...v0.5.2
826
+ [0.5.1]: https://github.com/opal/opal/compare/v0.5.0...v0.5.1
827
+ [0.5.0]: https://github.com/opal/opal/compare/v0.4.4...v0.5.0
828
+ [0.4.4]: https://github.com/opal/opal/compare/v0.4.3...v0.4.4
829
+ [0.4.3]: https://github.com/opal/opal/compare/v0.4.2...v0.4.3
830
+ [0.4.2]: https://github.com/opal/opal/compare/v0.4.1...v0.4.2
831
+ [0.4.1]: https://github.com/opal/opal/compare/v0.4.0...v0.4.1
832
+ [0.4.0]: https://github.com/opal/opal/compare/v0.3.8...v0.4.0
833
+ [0.3.8]: https://github.com/opal/opal/compare/v0.3.7...v0.3.8
834
+ [0.3.7]: https://github.com/opal/opal/compare/v0.3.6...v0.3.7
835
+ [0.3.6]: https://github.com/opal/opal/compare/v0.3.5...v0.3.6
836
+ [0.3.5]: https://github.com/opal/opal/compare/v0.3.44...v0.3.5
837
+ [0.3.44]: https://github.com/opal/opal/compare/v0.3.43...v0.3.44
838
+ [0.3.43]: https://github.com/opal/opal/compare/v0.3.42...v0.3.43
839
+ [0.3.42]: https://github.com/opal/opal/compare/v0.3.41...v0.3.42
840
+ [0.3.41]: https://github.com/opal/opal/compare/v0.3.40...v0.3.41
841
+ [0.3.40]: https://github.com/opal/opal/compare/v0.3.4...v0.3.40
842
+ [0.3.4]: https://github.com/opal/opal/compare/v0.3.39...v0.3.4
843
+ [0.3.39]: https://github.com/opal/opal/compare/v0.3.38...v0.3.39
844
+ [0.3.38]: https://github.com/opal/opal/compare/v0.3.37...v0.3.38
845
+ [0.3.37]: https://github.com/opal/opal/compare/v0.3.36...v0.3.37
846
+ [0.3.36]: https://github.com/opal/opal/compare/v0.3.35...v0.3.36
847
+ [0.3.35]: https://github.com/opal/opal/compare/v0.3.34...v0.3.35
848
+ [0.3.34]: https://github.com/opal/opal/compare/v0.3.33...v0.3.34
849
+ [0.3.33]: https://github.com/opal/opal/compare/v0.3.32...v0.3.33
850
+ [0.3.32]: https://github.com/opal/opal/compare/v0.3.31...v0.3.32
851
+ [0.3.31]: https://github.com/opal/opal/compare/v0.3.30...v0.3.31
852
+ [0.3.30]: https://github.com/opal/opal/compare/v0.3.3...v0.3.30
853
+ [0.3.3]: https://github.com/opal/opal/compare/v0.3.29...v0.3.3
854
+ [0.3.29]: https://github.com/opal/opal/compare/v0.3.21...v0.3.29
855
+ [0.3.21]: https://github.com/opal/opal/compare/v0.3.20...v0.3.21
856
+ [0.3.20]: https://github.com/opal/opal/compare/v0.3.2...v0.3.20
857
+ [0.3.2]: https://github.com/opal/opal/compare/v0.3.19...v0.3.2
858
+ [0.3.19]: https://github.com/opal/opal/compare/v0.3.18...v0.3.19
859
+ [0.3.18]: https://github.com/opal/opal/compare/v0.3.17...v0.3.18
860
+ [0.3.17]: https://github.com/opal/opal/compare/v0.3.11...v0.3.17
861
+ [0.3.11]: https://github.com/opal/opal/compare/v0.3.10...v0.3.11
862
+ [0.3.10]: https://github.com/opal/opal/compare/v0.3.1...v0.3.10
863
+ [0.3.1]: https://github.com/opal/opal/compare/v0.3.0...v0.3.1
864
+ [0.3.0]: https://github.com/opal/opal/compare/v0.2.1...v0.3.0
865
+ [0.2.1]: https://github.com/opal/opal/compare/v0.2.0...v0.2.1
866
+ [0.2.0]: https://github.com/opal/opal/compare/v0.1.0...v0.2.0
867
+ [0.1.0]: https://github.com/opal/opal/compare/v0.0.6...v0.1.0
868
+ [0.0.6]: https://github.com/opal/opal/compare/v0.0.5...v0.0.6
869
+ [0.0.5]: https://github.com/opal/opal/compare/v0.0.4...v0.0.5
870
+ [0.0.4]: https://github.com/opal/opal/compare/v0.0.3...v0.0.4
871
+ [0.0.3]: https://github.com/opal/opal/compare/v0.0.2...v0.0.3