opal 0.9.0.beta2 → 0.9.0.rc1
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.
- checksums.yaml +4 -4
- data/.jshintrc +2 -1
- data/.travis.yml +8 -4
- data/CHANGELOG.md +270 -251
- data/CONTRIBUTING.md +41 -0
- data/README.md +8 -8
- data/Rakefile +1 -1
- data/lib/opal/cli.rb +1 -0
- data/lib/opal/cli_options.rb +2 -2
- data/lib/opal/cli_runners.rb +1 -0
- data/lib/opal/cli_runners/nashorn.rb +58 -0
- data/lib/opal/cli_runners/phantom.js +11 -9
- data/lib/opal/compiler.rb +2 -0
- data/lib/opal/erb.rb +2 -1
- data/lib/opal/nodes/def.rb +15 -6
- data/lib/opal/nodes/helpers.rb +1 -1
- data/lib/opal/nodes/literal.rb +1 -1
- data/lib/opal/nodes/masgn.rb +79 -29
- data/lib/opal/nodes/module.rb +1 -1
- data/lib/opal/nodes/top.rb +6 -2
- data/lib/opal/parser.rb +1 -0
- data/lib/opal/parser/grammar.rb +3160 -3083
- data/lib/opal/parser/grammar.y +39 -11
- data/lib/opal/parser/lexer.rb +15 -13
- data/lib/opal/parser/sexp.rb +5 -0
- data/lib/opal/version.rb +1 -1
- data/opal/corelib/array.rb +21 -6
- data/opal/corelib/basic_object.rb +17 -4
- data/opal/corelib/class.rb +1 -1
- data/opal/corelib/constants.rb +2 -2
- data/opal/corelib/enumerator.rb +2 -0
- data/opal/corelib/hash.rb +50 -50
- data/opal/corelib/helpers.rb +1 -1
- data/opal/corelib/io.rb +9 -6
- data/opal/corelib/kernel.rb +37 -9
- data/opal/corelib/module.rb +6 -17
- data/opal/corelib/nil.rb +4 -0
- data/opal/corelib/number.rb +0 -4
- data/opal/corelib/runtime.js +637 -662
- data/opal/corelib/struct.rb +7 -3
- data/spec/filters/bugs/array.rb +4 -9
- data/spec/filters/bugs/basicobject.rb +1 -15
- data/spec/filters/bugs/date.rb +4 -26
- data/spec/filters/bugs/enumerable.rb +26 -1
- data/spec/filters/bugs/enumerator.rb +4 -4
- data/spec/filters/bugs/exception.rb +1 -7
- data/spec/filters/bugs/float.rb +14 -0
- data/spec/filters/bugs/hash.rb +0 -2
- data/spec/filters/bugs/integer.rb +1 -1
- data/spec/filters/bugs/kernel.rb +47 -66
- data/spec/filters/bugs/language.rb +1 -2
- data/spec/filters/bugs/module.rb +11 -14
- data/spec/filters/bugs/numeric.rb +3 -3
- data/spec/filters/bugs/proc.rb +0 -1
- data/spec/filters/bugs/range.rb +2 -3
- data/spec/filters/bugs/regexp.rb +15 -17
- data/spec/filters/bugs/set.rb +2 -2
- data/spec/filters/bugs/string.rb +29 -5
- data/spec/filters/bugs/{strscan.rb → stringscanner.rb} +9 -10
- data/spec/filters/bugs/struct.rb +0 -4
- data/spec/filters/bugs/time.rb +2 -3
- data/spec/filters/bugs/unboundmethod.rb +3 -0
- data/spec/filters/unsupported/freeze.rb +2 -1
- data/spec/filters/unsupported/taint.rb +2 -0
- data/spec/lib/parser/aref_spec.rb +10 -0
- data/spec/lib/parser/lambda_spec.rb +14 -0
- data/spec/lib/parser/op_asgn_spec.rb +17 -0
- data/spec/lib/parser/return_spec.rb +5 -0
- data/spec/lib/parser/unary_spec.rb +4 -0
- data/spec/lib/sprockets/erb_spec.rb +1 -1
- data/spec/mspec/opal/formatters.rb +159 -0
- data/{lib → spec}/mspec/opal/runner.rb +0 -160
- data/spec/opal/core/hash/internals_spec.rb +162 -162
- data/spec/opal/core/kernel/at_exit_spec.rb +70 -0
- data/spec/opal/core/kernel/extend_spec.rb +1 -1
- data/spec/opal/core/kernel/instance_variables_spec.rb +56 -0
- data/spec/opal/core/language/equal_spec.rb +8 -0
- data/spec/opal/core/language/predefined_spec.rb +1 -1
- data/spec/opal/core/language/ternary_operator_spec.rb +14 -0
- data/spec/opal/core/language/versions/{hash_1.9.rb → hash_1_9_spec.rb} +5 -0
- data/spec/opal/core/module/fixtures/classes.rb +11 -1
- data/spec/opal/core/module/method_lookup_spec.rb +13 -0
- data/spec/opal/core/runtime/super_spec.rb +10 -0
- data/spec/opal/stdlib/native/new_spec.rb +84 -0
- data/spec/opal/stdlib/strscan/scan_spec.rb +11 -0
- data/spec/rubyspecs +6 -9
- data/spec/spec_helper.rb +9 -21
- data/stdlib/date.rb +121 -1
- data/stdlib/js.rb +13 -5
- data/stdlib/json.rb +3 -3
- data/stdlib/nashorn.rb +5 -0
- data/stdlib/nashorn/file.rb +13 -0
- data/stdlib/nashorn/io.rb +2 -0
- data/stdlib/native.rb +12 -4
- data/stdlib/nodejs/io.rb +5 -2
- data/stdlib/opal/platform.rb +19 -0
- data/stdlib/phantomjs.rb +4 -0
- data/stdlib/strscan.rb +1 -1
- data/tasks/building.rake +2 -1
- data/tasks/testing.rake +29 -34
- data/tasks/testing/{phantomjs1-sprockets.js → sprockets-phantomjs.js} +2 -20
- data/vendored-minitest/minitest/test.rb +7 -15
- metadata +32 -9
- data/lib/mspec/opal/main.rb.erb +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 62af1a23be47ed15ba180aab47ae2b960feb1a1d
|
|
4
|
+
data.tar.gz: 228f0b9d53bb0029c97560efb41b58417e3a1312
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f2d35d332054d7da0a7c10c617d2c71b3d0f17b9f179d352d027dca887a38725fbca63b09cd963660bd82a358fc79d9fe841b353209981db8400a63e5df843cb
|
|
7
|
+
data.tar.gz: ddb2ce713af79c8414966769b9cce482ee3d3e2cb9b16177ac9f14f4df7600e4a7a5265e8cf0ea4a713be37557d9038f576a0fdc5fec6698931e3b27b84c9289
|
data/.jshintrc
CHANGED
data/.travis.yml
CHANGED
|
@@ -18,22 +18,25 @@ matrix:
|
|
|
18
18
|
env: RUN=jshint SUITE=stdlib
|
|
19
19
|
|
|
20
20
|
- rvm: 2.2
|
|
21
|
-
env: RUN=
|
|
21
|
+
env: RUN=mspec_opal_nodejs
|
|
22
22
|
|
|
23
23
|
- rvm: 2.2
|
|
24
|
-
env: RUN=
|
|
24
|
+
env: RUN=mspec_rubyspec_nodejs TZ="/usr/share/zoneinfo/Pacific/Fiji"
|
|
25
25
|
|
|
26
26
|
- rvm: 2.2.3
|
|
27
|
-
env: RUN=
|
|
27
|
+
env: RUN=mspec_rubyspec_sprockets_phantomjs
|
|
28
28
|
|
|
29
29
|
- rvm: 2.2
|
|
30
30
|
env: RUN=rspec TILT_VERSION=2.0.1
|
|
31
31
|
|
|
32
|
+
- rvm: ruby-head
|
|
33
|
+
env: RUN=rspec
|
|
34
|
+
|
|
32
35
|
- rvm: 2.1
|
|
33
36
|
env: RUN=rspec
|
|
34
37
|
|
|
35
38
|
- rvm: 2.0
|
|
36
|
-
env: RUN=
|
|
39
|
+
env: RUN=rspec
|
|
37
40
|
|
|
38
41
|
- rvm: 1.9.3
|
|
39
42
|
env: RUN=rspec
|
|
@@ -54,6 +57,7 @@ matrix:
|
|
|
54
57
|
- rvm: 1.9.3
|
|
55
58
|
- rvm: 2.1
|
|
56
59
|
- rvm: 2.0
|
|
60
|
+
- rvm: ruby-head
|
|
57
61
|
- rvm: rbx
|
|
58
62
|
- rvm: jruby
|
|
59
63
|
- rvm: jruby-head
|
data/CHANGELOG.md
CHANGED
|
@@ -1,47 +1,57 @@
|
|
|
1
1
|
## 0.9.0 (edge)
|
|
2
2
|
|
|
3
|
-
*
|
|
3
|
+
* Fixed usage of JS keywords as instance variable names for:
|
|
4
|
+
* `Kernel#instance_variable_set`
|
|
5
|
+
* `Kernel#instance_variable_get`
|
|
6
|
+
* `Kernel#instance_variables`
|
|
4
7
|
|
|
5
|
-
*
|
|
8
|
+
* Renamed:
|
|
9
|
+
* `Hash.keys` => `Hash.$$keys`
|
|
10
|
+
* `Hash.map` => `Hash.$$map`
|
|
11
|
+
* `Hash.smap` => `Hash.$$smap`
|
|
6
12
|
|
|
7
|
-
*
|
|
13
|
+
* A `console` wrapper has been added to the stdlib, requiring it will make available the `$console` global variable.
|
|
8
14
|
|
|
9
|
-
*
|
|
15
|
+
* `Kernel#pp` no longer forwards arguments directly to `console.log`, this behavior has been replaced by stdlib's own `console.rb` (see above).
|
|
10
16
|
|
|
11
|
-
*
|
|
17
|
+
* `method_added`, `method_removed` and `method_undefined` reflection now works.
|
|
12
18
|
|
|
13
|
-
*
|
|
19
|
+
* `singleton_method_added`, `singleton_method_removed` and `singleton_method_undefined` reflection now works.
|
|
14
20
|
|
|
15
|
-
*
|
|
21
|
+
* Now you can bridge a native class to a Ruby class that inherits from another Ruby class
|
|
16
22
|
|
|
17
|
-
*
|
|
23
|
+
* `Numeric` semantics are now compliant with Ruby.
|
|
18
24
|
|
|
19
|
-
*
|
|
25
|
+
* `Complex` has been fully implemented.
|
|
20
26
|
|
|
21
|
-
*
|
|
27
|
+
* `Rational` has been fully implemented.
|
|
22
28
|
|
|
23
|
-
*
|
|
29
|
+
* `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.
|
|
24
30
|
|
|
25
|
-
*
|
|
31
|
+
* `Opal::Processor.load_asset_code(sprockets, name)` has been deprecated in favor of `Opal::Sprockets.load_asset(name, sprockets)`.
|
|
26
32
|
|
|
27
|
-
*
|
|
28
|
-
* `Enumerable#chunk`
|
|
29
|
-
* `Enumerable#each_cons`
|
|
30
|
-
* `Enumerable#minmax`
|
|
33
|
+
* `Struct#hash` now works properly based on struct contents
|
|
31
34
|
|
|
32
|
-
*
|
|
35
|
+
* No longer crashes when calling a method with an opt arg followed by an optional kwarg when called without the kwarg
|
|
33
36
|
|
|
34
|
-
*
|
|
37
|
+
* Newly compliant with RubySpec:
|
|
38
|
+
* `Enumerable#chunk`
|
|
39
|
+
* `Enumerable#each_cons`
|
|
40
|
+
* `Enumerable#minmax`
|
|
35
41
|
|
|
36
|
-
*
|
|
42
|
+
* Operator methods (e.g. `+`, `<`, etc.) can be handled by `method_missing`
|
|
37
43
|
|
|
38
|
-
*
|
|
44
|
+
* `OpenStruct` - fixed `#method missing`, `#inspect`, `#to_s`, `#delete_field`. Fully compliant except for frozen and marshal behavior.
|
|
39
45
|
|
|
40
|
-
*
|
|
46
|
+
* 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`)
|
|
41
47
|
|
|
42
|
-
*
|
|
48
|
+
* `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.
|
|
43
49
|
|
|
44
|
-
*
|
|
50
|
+
* `Exception#exception`, `Exception::exception`, `Exception#message`, and `Exception#to_s` are fully implemented
|
|
51
|
+
|
|
52
|
+
* Method defs issued inside `Module#instance_eval` and `Class#instance_eval`, and the respective `exec` now create class methods
|
|
53
|
+
|
|
54
|
+
* 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"`).
|
|
45
55
|
|
|
46
56
|
* `Set#superset?`, `Set#subset?`, and the respective 'proper_' variant of each are now implemented
|
|
47
57
|
|
|
@@ -57,253 +67,262 @@
|
|
|
57
67
|
|
|
58
68
|
* `Regexp#options` has been optimized and correctly returns 0 when called on a Regexp literal without any options (e.g. //)
|
|
59
69
|
|
|
70
|
+
* Fix `Kernel#exit` to allow exit inside `#at_exit`
|
|
71
|
+
|
|
72
|
+
* `BasicObject#instance_eval` now compliant with a string argument (needs `require "opal-parser"`)
|
|
73
|
+
|
|
74
|
+
* Fixed `Native()` when used with `Array` instances containing native objects (which weren't wrapped properly) – #1212
|
|
75
|
+
|
|
76
|
+
* Adds Nashorn (Java 8+ Javascript engine) runner `bundle exec bin/opal -R nashorn -r nashorn hello.rb`
|
|
77
|
+
|
|
78
|
+
* Fixed a number of syntax errors (e.g. #1224 #1225 #1227 #1231 #1233 #1226)
|
|
60
79
|
|
|
61
80
|
## 0.8.1 2015-10-12
|
|
62
81
|
|
|
63
|
-
*
|
|
82
|
+
* Use official Sprockets processor cache keys API:
|
|
64
83
|
The old cache key hack has been removed.
|
|
65
84
|
Add `Opal::Processor.cache_key` and `Opal::Processor.reset_cache_key!` to
|
|
66
85
|
reset it as it’s cached but should change whenever `Opal::Config` changes.
|
|
67
86
|
|
|
68
|
-
*
|
|
87
|
+
* Fix an issue for which a Pathname was passed instead of a String to Sprockets.
|
|
69
88
|
|
|
70
89
|
## 0.8.0 2015-07-16
|
|
71
90
|
|
|
72
|
-
*
|
|
91
|
+
* Update to Sprockets v3.0.
|
|
73
92
|
|
|
74
|
-
*
|
|
93
|
+
* Delegate dependency management directly to Sprockets (when used) making sourcemaps swift again.
|
|
75
94
|
This means code generated by sprockets will always need to be bootstrapped via `Opal.load` or `Opal.require`.
|
|
76
95
|
Luckily `Opal::Processor.load_asset_code(sprockets, name)` does just that in the right way.
|
|
77
96
|
|
|
78
|
-
*
|
|
97
|
+
* Enable operator inlining by default in the compiler.
|
|
79
98
|
|
|
80
|
-
*
|
|
99
|
+
* Fix `Promise#always`.
|
|
81
100
|
|
|
82
|
-
*
|
|
101
|
+
* Update to Sprockets v3.0.
|
|
83
102
|
|
|
84
|
-
*
|
|
103
|
+
* Delegate dependency management directly to Sprockets (when used) making sourcemaps swift again.
|
|
85
104
|
This means code generated by sprockets will always need to be bootstrapped via `Opal.load` or `Opal.require`.
|
|
86
105
|
Luckily `Opal::Processor.load_asset_code(sprockets, name)` does just that in the right way.
|
|
87
106
|
|
|
88
|
-
*
|
|
107
|
+
* Enable operator inlining by default in the compiler.
|
|
89
108
|
|
|
90
|
-
*
|
|
109
|
+
* Fix `Promise#always`.
|
|
91
110
|
|
|
92
|
-
*
|
|
111
|
+
* Fix `String#split` when no match is found and a limit is provided
|
|
93
112
|
|
|
94
|
-
*
|
|
113
|
+
* Fix `require_tree(".")` when used from file at the root of the assets paths
|
|
95
114
|
|
|
96
|
-
*
|
|
115
|
+
* `Hash[]` implementation fully compliant with rubyspec
|
|
97
116
|
|
|
98
|
-
*
|
|
117
|
+
* Removed `minitest` from stdlib. It's not part of MRI and it never belonged there, checkout the `opal-minitest` gem instead.
|
|
99
118
|
|
|
100
|
-
*
|
|
119
|
+
* Parser: Allow trailing comma in paren arglists, after normal args as
|
|
101
120
|
well as assoc args.
|
|
102
121
|
|
|
103
|
-
*
|
|
122
|
+
* Parser: Fix parsing of parens following divide operator without a
|
|
104
123
|
space.
|
|
105
124
|
|
|
106
|
-
*
|
|
125
|
+
* Parser: Fix bug where keyword arguments could not be parsed if
|
|
107
126
|
method definition did not have parens around arguments.
|
|
108
127
|
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
128
|
+
* Newly compliant with RubySpec:
|
|
129
|
+
* `Array#bsearch`
|
|
130
|
+
* `Array#combination`
|
|
131
|
+
* `Array#permutation`
|
|
132
|
+
* `Array#product`
|
|
133
|
+
* `Array#rotate!`
|
|
134
|
+
* `Array#rotate`
|
|
135
|
+
* `Array#sample`
|
|
136
|
+
* `Array#to_h`
|
|
137
|
+
* `Array#values_at`
|
|
138
|
+
* `Array#zip`
|
|
139
|
+
* `Enumerator#with_index`
|
|
140
|
+
* `Kernel#===`
|
|
141
|
+
* `Kernel#Array`
|
|
142
|
+
* `Kernel#Float`
|
|
143
|
+
* `Kernel#Hash`
|
|
144
|
+
* `Kernel#Integer`
|
|
145
|
+
* `Kernel#String`
|
|
146
|
+
* `Kernel#format`
|
|
147
|
+
* `Kernel#sprintf`
|
|
148
|
+
* `MatchData#==`
|
|
149
|
+
* `MatchData#eql?`
|
|
150
|
+
* `MatchData#values_at`
|
|
151
|
+
* `Module#instance_methods`
|
|
152
|
+
* `Regexp#match`
|
|
153
|
+
* `String#%`
|
|
154
|
+
* `String#===`
|
|
155
|
+
* `String#==`
|
|
156
|
+
* `String#[]`
|
|
157
|
+
* `String#each_line`
|
|
158
|
+
* `String#eql?`
|
|
159
|
+
* `String#index`
|
|
160
|
+
* `String#inspect`
|
|
161
|
+
* `String#lines`
|
|
162
|
+
* `String#match`
|
|
163
|
+
* `String#next`
|
|
164
|
+
* `String#oct`
|
|
165
|
+
* `String#scan`
|
|
166
|
+
* `String#slice`
|
|
167
|
+
* `String#split`
|
|
168
|
+
* `String#succ`
|
|
169
|
+
* `String#to_i`
|
|
170
|
+
* `String#try_convert`
|
|
171
|
+
|
|
172
|
+
* Misc corelib fixes:
|
|
173
|
+
* `Module#const_get` accepts a scoped constant name
|
|
174
|
+
* `Regexp#===` sets global match data vars
|
|
156
175
|
|
|
157
176
|
## 0.7.2 2015-04-23
|
|
158
177
|
|
|
159
|
-
*
|
|
178
|
+
* Remove Sprockets 3.0 support (focus moved to upcoming 0.8)
|
|
160
179
|
|
|
161
|
-
*
|
|
180
|
+
* Fix version number consistency.
|
|
162
181
|
|
|
163
182
|
## 0.7.1 2015-02-14
|
|
164
183
|
|
|
165
|
-
*
|
|
184
|
+
* CLI options `-d` and `-v` now set respectively `$DEBUG` and `$VERBOSE`
|
|
166
185
|
|
|
167
|
-
*
|
|
186
|
+
* Fixed a bug that would make the `-v` CLI option wait for STDIN input
|
|
168
187
|
|
|
169
|
-
*
|
|
188
|
+
* Add the `-E` / `--no-exit` CLI option to skip implicit `Kernel#exit` call
|
|
170
189
|
|
|
171
|
-
*
|
|
190
|
+
* Now the CLI implicitly calls `Kernel#exit` at the end of the script, thus making `at_exit` blocks be respected.
|
|
172
191
|
|
|
173
192
|
## 0.7.0 2015-02-01
|
|
174
193
|
|
|
175
|
-
*
|
|
194
|
+
* Stop keyword-arg variable names leaking to global javascript scope
|
|
176
195
|
|
|
177
|
-
*
|
|
196
|
+
* `Class#native_class` now also exposes `MyClass.new` (Ruby) as `Opal.global.MyClass.new()` (JS)
|
|
178
197
|
|
|
179
|
-
*
|
|
198
|
+
* Add CRuby (MRI) tests harness to start checking Opal against them too.
|
|
180
199
|
|
|
181
|
-
*
|
|
200
|
+
* Add Minitest to the stdlib.
|
|
182
201
|
|
|
183
|
-
*
|
|
202
|
+
* Add `Date#<=>` with specs.
|
|
184
203
|
|
|
185
|
-
*
|
|
204
|
+
* Show extended info and context upon parsing, compiling and building errors.
|
|
186
205
|
|
|
187
|
-
*
|
|
206
|
+
* Support keyword arguments in method calls and definitions.
|
|
188
207
|
|
|
189
|
-
*
|
|
208
|
+
* Fix `begin`/`rescue` blocks to evaluate to last expression.
|
|
190
209
|
|
|
191
|
-
*
|
|
210
|
+
* Add support for `RUBY_ENGINE/RUBY_PLATFORM != "opal"` pre-processor directives.
|
|
192
211
|
|
|
193
212
|
if RUBY_ENGINE != "opal"
|
|
194
213
|
# this code never compiles
|
|
195
214
|
end
|
|
196
215
|
|
|
197
|
-
*
|
|
216
|
+
* 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.
|
|
198
217
|
|
|
199
|
-
*
|
|
218
|
+
* Improved support for recursive `Hash` for both `#inspect` and `#hash`.
|
|
200
219
|
|
|
201
|
-
*
|
|
220
|
+
* Optimized `Hash` implementation for `String` and `Symbol`, they have a separate hash-table in which they're used as both keys and hashes.
|
|
202
221
|
|
|
203
|
-
*
|
|
222
|
+
* Added real `#hash` / `eql?` support, previously was relying on `.toString()`.
|
|
204
223
|
|
|
205
|
-
*
|
|
224
|
+
* `String#to_proc` now uses `__send__` instead of `send` for calling
|
|
206
225
|
methods on receivers.
|
|
207
226
|
|
|
208
|
-
*
|
|
227
|
+
* Deprecated `Opal::Sprockets::Environment`. It can easily be replaced by `Opal::Server` or by appending `Opal.paths` to a `Sprockets::Environment`:
|
|
209
228
|
|
|
210
229
|
Sprockets::Environment.new.tap { |e| Opal.paths.each {|p| e.append_path(p)} }
|
|
211
230
|
|
|
212
|
-
*
|
|
231
|
+
* Add `Set` methods `#classify`, `#collect!`, `#map!`, `#subtract` `#replace`,
|
|
213
232
|
`#difference` and `#eql?`
|
|
214
233
|
|
|
215
|
-
*
|
|
234
|
+
* Support `module_function` without args to toggle module functions.
|
|
216
235
|
|
|
217
|
-
*
|
|
236
|
+
* Fix bug where command calls with no space and sym arg were incorrectly parsed.
|
|
218
237
|
|
|
219
|
-
*
|
|
238
|
+
* Add some `StringScanner` methods.
|
|
220
239
|
|
|
221
|
-
*
|
|
240
|
+
* Add `Date#<<` and `Date#>>` implementations.
|
|
222
241
|
|
|
223
|
-
*
|
|
242
|
+
* Support nested directories using `require_tree` directive.
|
|
224
243
|
|
|
225
|
-
*
|
|
244
|
+
* Fix bug where Exception subclasses could not have methods defined on them.
|
|
226
245
|
|
|
227
|
-
*
|
|
246
|
+
* Fix symbols with interpolations `:"#{foo}"`
|
|
228
247
|
|
|
229
|
-
*
|
|
248
|
+
* Implement $1..N matchers and rewrite support for $~, $', $& and $\`.
|
|
230
249
|
|
|
231
|
-
*
|
|
250
|
+
* Implement `Regexp.last_match`.
|
|
232
251
|
|
|
233
|
-
*
|
|
252
|
+
* Fixed `-@` unary op. precedence with a numeric and followed by a method call (e.g. `-1.foo` was parsed as `-(1.foo)`)
|
|
234
253
|
|
|
235
|
-
*
|
|
254
|
+
* `require_relative` (with strings) is now preprocessed, expanded and added to `Compiler#requires`
|
|
236
255
|
|
|
237
|
-
*
|
|
256
|
+
* Rewritten the require system to respect requires position (previously all the requires were stacked up at the top of the file)
|
|
238
257
|
|
|
239
|
-
*
|
|
258
|
+
* Implement for-loop syntax
|
|
240
259
|
|
|
241
|
-
*
|
|
260
|
+
* Add Array#|
|
|
242
261
|
|
|
243
|
-
*
|
|
262
|
+
* Fix Range.new to raise `ArgumentError` on contructor values that cannot
|
|
244
263
|
be compared
|
|
245
264
|
|
|
246
|
-
*
|
|
265
|
+
* Fix compiler bug where Contiguous strings were not getting concatenated.
|
|
247
266
|
|
|
248
|
-
*
|
|
267
|
+
* 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.
|
|
249
268
|
|
|
250
|
-
*
|
|
269
|
+
* Remove `const_missing` option from compiler. All constant lookups are now strict.
|
|
251
270
|
|
|
252
|
-
*
|
|
271
|
+
* Add initial support for Module#autoload.
|
|
253
272
|
|
|
254
|
-
*
|
|
273
|
+
* Fix `Enumerator#with_index`, `Numeric#round`.
|
|
255
274
|
|
|
256
275
|
## 0.6.2 2014-04-25
|
|
257
276
|
|
|
258
|
-
*
|
|
277
|
+
* Added Range#size
|
|
259
278
|
|
|
260
|
-
*
|
|
279
|
+
* `opal` executable now reads STDIN when no file or `-e` are passed
|
|
261
280
|
|
|
262
|
-
*
|
|
281
|
+
* `opal` executable doesn't exit after showing version on `-v` if other options are passed
|
|
263
282
|
|
|
264
|
-
*
|
|
283
|
+
* (Internal) improved the mspec runner
|
|
265
284
|
|
|
266
285
|
## 0.6.1 2014-04-15
|
|
267
286
|
|
|
268
|
-
*
|
|
287
|
+
* Updated RubySpecs to master and added `rubysl-*` specs. Thanks to Mike Owens (@mieko)
|
|
269
288
|
|
|
270
|
-
*
|
|
289
|
+
* Added `Kernel#require_remote(url)` in `opal-parser` that requires files with basic synchronous ajax
|
|
271
290
|
GET requests. It is used to load `<scripts type="text/ruby" src="…url…">`.
|
|
272
291
|
|
|
273
|
-
*
|
|
292
|
+
* Various parsing fixes (Hash parsing, `def` returns method name, cleanup `core/util`, Enumerator fixes)
|
|
274
293
|
|
|
275
|
-
*
|
|
294
|
+
* Added `#native_reader`, `#native_writer` and `#native_accessor`as class methods
|
|
276
295
|
donated by `include Native`
|
|
277
296
|
|
|
278
|
-
*
|
|
297
|
+
* Added specs for Sprockets' processors (both .js.rb and .opalerb), backported from `opal-rails`
|
|
279
298
|
|
|
280
|
-
*
|
|
299
|
+
* Set 2.1.1 as RUBY_VERSION
|
|
281
300
|
|
|
282
|
-
*
|
|
301
|
+
* Add `opal-build` command utility to easily build libraries to js
|
|
283
302
|
|
|
284
|
-
*
|
|
303
|
+
* Add `opal-repl` to gemspec executables,
|
|
285
304
|
previously was only available by using Opal from source
|
|
286
305
|
|
|
287
|
-
*
|
|
306
|
+
* Fix parsing `=>` in hash literals where it would sometimes incorrectly
|
|
288
307
|
parse as a key name.
|
|
289
308
|
|
|
290
309
|
## 0.6.0 2014-03-05
|
|
291
310
|
|
|
292
|
-
*
|
|
311
|
+
* Fix parsing of escapes in single-strings ('foo\n'). Only ' and \
|
|
293
312
|
characters now get escaped in single quoted strings. Also, more escape
|
|
294
313
|
sequences in double-quoted strings are now supported: `\a`, `\v`, `\f`,
|
|
295
314
|
`\e`, `\s`, octal (`\314`), hex (`\xff`) and unicode (`\u1234`).
|
|
296
315
|
|
|
297
|
-
*
|
|
316
|
+
* Sourcemaps revamp. Lexer now tracks column and line info for every token to
|
|
298
317
|
produce much more accurate sourcemaps. All method calls are now located on
|
|
299
318
|
the correct source line, and multi-line xstrings are now split to generate
|
|
300
319
|
a map line-to-line for long inline javascript parts.
|
|
301
320
|
|
|
302
|
-
*
|
|
321
|
+
* Merged sprockets support from `opal-sprockets` directly into Opal. For the
|
|
303
322
|
next release, the exernal `opal-sprockets` gem is no longer needed. This
|
|
304
323
|
commit adds `Opal::Processor`, `Opal::Server` and `Opal::Environment`.
|
|
305
324
|
|
|
306
|
-
*
|
|
325
|
+
* Introduce pre-processed if directives to hide code from Opal. Two special
|
|
307
326
|
constant checks now take place in the compiler. Either `RUBY_ENGINE` or
|
|
308
327
|
`RUBY_PLATFORM` when `== "opal"`. Both if and unless statements can pick
|
|
309
328
|
up these logic checks:
|
|
@@ -323,316 +342,316 @@
|
|
|
323
342
|
This is particularly useful for avoiding `require()` statements being
|
|
324
343
|
picked up, which are included at compile time.
|
|
325
344
|
|
|
326
|
-
*
|
|
345
|
+
* Add special `debugger` method to compiler. Compiles down to javascript
|
|
327
346
|
`debugger` keyword to start in-browser debug console.
|
|
328
347
|
|
|
329
|
-
*
|
|
348
|
+
* Add missing string escapes to `read_escape` in lexer. Now most ruby escape
|
|
330
349
|
sequences are properly detected and handled in string parsing.
|
|
331
350
|
|
|
332
|
-
*
|
|
351
|
+
* Disable escapes inside x-strings. This means no more double escaping all
|
|
333
352
|
characters in x-strings and backticks. (`\n` => `\n`).
|
|
334
353
|
|
|
335
|
-
*
|
|
354
|
+
* Add `time.rb` to stdlib and moved `Time.parse()` and `Time.iso8601()`
|
|
336
355
|
methods there.
|
|
337
356
|
|
|
338
|
-
*
|
|
357
|
+
* `!` is now treated as an unary method call on the object. Opal now parsed
|
|
339
358
|
`!` as a def method name, and implements the method on `BasicObject`,
|
|
340
359
|
`NilClass` and `Boolean`.
|
|
341
360
|
|
|
342
|
-
*
|
|
361
|
+
* Fixed bug where true/false as object literals from javascript were not
|
|
343
362
|
correctly being detected as truthy/falsy respectively. This is due to the
|
|
344
363
|
javascript "feature" where `new Boolean(false) !== false`.
|
|
345
364
|
|
|
346
|
-
*
|
|
365
|
+
* Moved `native.rb` to stdlib. Native support must now be explicitly required
|
|
347
366
|
into Opal. `Native` is also now a module, instead of a top level class.
|
|
348
367
|
Also added `Native::Object#respond_to?`.
|
|
349
368
|
|
|
350
|
-
*
|
|
369
|
+
* Remove all core `#as_json()` methods from `json.rb`. Added them externally
|
|
351
370
|
to `opal-activesupport`.
|
|
352
371
|
|
|
353
|
-
*
|
|
372
|
+
* `Kernel#respond_to?` now calls `#respond_to_missing?` for compliance.
|
|
354
373
|
|
|
355
|
-
*
|
|
374
|
+
* Fix various `String` methods and add relevant rubyspecs for them. `#chars`,
|
|
356
375
|
`#to_f`, `#clone`, `#split`.
|
|
357
376
|
|
|
358
|
-
*
|
|
377
|
+
* Fix `Array` method compliance: `#first`, `#fetch`, `#insert`, `#delete_at`,
|
|
359
378
|
`#last`, `#splice`, `.try_convert`.
|
|
360
379
|
|
|
361
|
-
*
|
|
380
|
+
* Fix compliance of `Kernel#extend` and ensure it calls `#extended()` hook.
|
|
362
381
|
|
|
363
|
-
*
|
|
382
|
+
* Fix bug where sometimes the wrong regexp flags would be generated in the
|
|
364
383
|
output javascript.
|
|
365
384
|
|
|
366
|
-
*
|
|
385
|
+
* Support parsing `__END__` constructs in ruby code, inside the lexer. The
|
|
367
386
|
content is gathered up by use of the parser. The special constant `DATA`
|
|
368
387
|
is then available inside the ruby code to read the content.
|
|
369
388
|
|
|
370
|
-
*
|
|
389
|
+
* Support single character strings (using ? prefix) with escaped characters.
|
|
371
390
|
|
|
372
|
-
*
|
|
391
|
+
* Fix lexer to detect dereferencing on local variables even when whitespace
|
|
373
392
|
is present (`a = 0; a [0]` parses as a deference on a).
|
|
374
393
|
|
|
375
|
-
*
|
|
394
|
+
* Fix various `Struct` methods. Fixed `#each` and `#each_pair` to return
|
|
376
395
|
self. Add `Struct.[]` as synonym for `Struct.new`.
|
|
377
396
|
|
|
378
|
-
*
|
|
397
|
+
* Implemented some `Enumerable` methods: `#collect_concat`, `#flat_map`,
|
|
379
398
|
`#reject`, `#reverse_each`, `#partition` and `#zip`.
|
|
380
399
|
|
|
381
|
-
*
|
|
400
|
+
* Support any Tilt template for `index_path` in `Opal::Server`. All index
|
|
382
401
|
files are now run through `Tilt` (now supports haml etc).
|
|
383
402
|
|
|
384
|
-
*
|
|
403
|
+
* Fix code generation of `op_asgn_1` calls (`foo[val] += 10`).
|
|
385
404
|
|
|
386
|
-
*
|
|
405
|
+
* Add `base64` to stdlib.
|
|
387
406
|
|
|
388
|
-
*
|
|
407
|
+
* Add promises implementation to stdlib.
|
|
389
408
|
|
|
390
|
-
*
|
|
409
|
+
* Add `Math` module to corelib.
|
|
391
410
|
|
|
392
|
-
*
|
|
411
|
+
* Use `//#` instead of `//@` deprecated syntax for sourceMappingURL.
|
|
393
412
|
|
|
394
|
-
*
|
|
413
|
+
* Implicitly require `erb` from stdlib when including erb templates.
|
|
395
414
|
|
|
396
|
-
*
|
|
415
|
+
* Fix `Regexp.escape` to also escape '(' character.
|
|
397
416
|
|
|
398
|
-
*
|
|
417
|
+
* Support '<' and '>' as matching pairs in string boundrys `%q<hi>`.
|
|
399
418
|
|
|
400
|
-
*
|
|
419
|
+
* `Opal::Server` no longer searches for an index file if not specified.
|
|
401
420
|
|
|
402
|
-
*
|
|
421
|
+
* Move `Math` and `Encoding` to stdlib. Can be required using
|
|
403
422
|
`require 'math'`, etc.
|
|
404
423
|
|
|
405
|
-
*
|
|
424
|
+
* Fix some stdlib `Date` methods.
|
|
406
425
|
|
|
407
|
-
*
|
|
426
|
+
* Fix `Regexp.escape` to properly escape \n, \t, \r, \f characters.
|
|
408
427
|
|
|
409
|
-
*
|
|
428
|
+
* Add `Regexp.quote` as an alias of `escape`.
|
|
410
429
|
|
|
411
430
|
## 0.5.5 2013-11-25
|
|
412
431
|
|
|
413
|
-
*
|
|
432
|
+
* Fix regression: add `%i[foo bar]` style words back to lexer
|
|
414
433
|
|
|
415
|
-
*
|
|
434
|
+
* Move corelib from `opal/core` to `opal/corelib`. This stops files in
|
|
416
435
|
`core/` clashing with user files.
|
|
417
436
|
|
|
418
437
|
## 0.5.4 2013-11-20
|
|
419
438
|
|
|
420
|
-
*
|
|
439
|
+
* Reverted `RUBY_VERSION` to `1.9.3`. Opal `0.6.0` will be the first release
|
|
421
440
|
for `2.0.0`.
|
|
422
441
|
|
|
423
442
|
## 0.5.3 2013-11-12
|
|
424
443
|
|
|
425
|
-
*
|
|
444
|
+
* Opal now targets ruby 2.0.0
|
|
426
445
|
|
|
427
|
-
*
|
|
446
|
+
* Named function inside class body now generates with `$` prefix, e.g.
|
|
428
447
|
`$MyClass`. This makes it easier to wrap/bridge native functions.
|
|
429
448
|
|
|
430
|
-
*
|
|
449
|
+
* Support Array subclasses
|
|
431
450
|
|
|
432
|
-
*
|
|
451
|
+
* Various fixes to `String`, `Kernel` and other core classes
|
|
433
452
|
|
|
434
|
-
*
|
|
453
|
+
* Fix `Method#call` to use correct receiver
|
|
435
454
|
|
|
436
|
-
*
|
|
455
|
+
* Fix `Module#define_method` to call `#to_proc` on explicit argument
|
|
437
456
|
|
|
438
|
-
*
|
|
457
|
+
* Fix `super()` dispatches on class methods
|
|
439
458
|
|
|
440
|
-
*
|
|
459
|
+
* Support `yield()` calls from inside a block (inside a method)
|
|
441
460
|
|
|
442
|
-
*
|
|
461
|
+
* Cleanup string parsing inside lexer
|
|
443
462
|
|
|
444
|
-
*
|
|
463
|
+
* Cleanup parser/lexer to use `t` and `k` prefixes for all tokens
|
|
445
464
|
|
|
446
465
|
## 0.5.2 2013-11-11
|
|
447
466
|
|
|
448
|
-
*
|
|
467
|
+
* Include native into corelib for 0.5.x
|
|
449
468
|
|
|
450
469
|
## 0.5.1 2013-11-10
|
|
451
470
|
|
|
452
|
-
*
|
|
471
|
+
* Move all corelib under `core/` directory to prevent filename clashes with
|
|
453
472
|
`require`
|
|
454
473
|
|
|
455
|
-
*
|
|
474
|
+
* Move `native.rb` into stdlib - must now be explicitly required
|
|
456
475
|
|
|
457
|
-
*
|
|
476
|
+
* Implement `BasicObject#__id__`
|
|
458
477
|
|
|
459
|
-
*
|
|
478
|
+
* Cleanup and fix various `Enumerable` methods
|
|
460
479
|
|
|
461
480
|
## 0.5.0 2013-11-03
|
|
462
481
|
|
|
463
|
-
*
|
|
482
|
+
* WIP: https://gist.github.com/elia/7747460
|
|
464
483
|
|
|
465
484
|
## 0.4.2 2013-07-03
|
|
466
485
|
|
|
467
|
-
*
|
|
486
|
+
* Added `Kernel#rand`. (fntzr)
|
|
468
487
|
|
|
469
|
-
*
|
|
488
|
+
* Restored the `bin/opal` executable in gemspec.
|
|
470
489
|
|
|
471
|
-
*
|
|
490
|
+
* Now `.valueOf()` is used in `#to_n` of Boolean, Numeric, Regexp and String
|
|
472
491
|
to return the naked JavaScript value instead of a wrapping object.
|
|
473
492
|
|
|
474
|
-
*
|
|
493
|
+
* Parser now wraps or-ops in paranthesis to stop variable order from
|
|
475
494
|
leaking out when minified by uglify. We now have code in this
|
|
476
495
|
format: `(((tmp = lhs) !== false || !==nil) ? tmp : rhs)`.
|
|
477
496
|
|
|
478
497
|
## 0.4.1 2013-06-16
|
|
479
498
|
|
|
480
|
-
*
|
|
499
|
+
* Move sprockets logic out to external opal-sprockets gem. That now
|
|
481
500
|
handles the compiling and loading of opal files in sprockets.
|
|
482
501
|
|
|
483
502
|
## 0.4.0 2013-06-15
|
|
484
503
|
|
|
485
|
-
*
|
|
504
|
+
* Added fragments to parser. All parser methods now generate one or
|
|
486
505
|
more Fragments which store the original sexp. This allows us to
|
|
487
506
|
enumerate over them after parsing to map generated lines back to
|
|
488
507
|
original line numbers.
|
|
489
508
|
|
|
490
|
-
*
|
|
509
|
+
* Reverted `null` for `nil`. Too buggy at this time.
|
|
491
510
|
|
|
492
|
-
*
|
|
511
|
+
* Add Opal::SprocketsParser as Parser subclass for handling parsing
|
|
493
512
|
for sprockets environment. This subclass handles require statements
|
|
494
513
|
and stores them for sprockets to use.
|
|
495
514
|
|
|
496
|
-
*
|
|
515
|
+
* Add :irb option to parser to keep top level lvars stored inside
|
|
497
516
|
opal runtime so that an irb session can be persisted and maintain
|
|
498
517
|
access to local variables.
|
|
499
518
|
|
|
500
|
-
*
|
|
519
|
+
* Add Opal::Environment#use_gem() helper to add a gem to opals load
|
|
501
520
|
path.
|
|
502
521
|
|
|
503
|
-
*
|
|
522
|
+
* Stop pre-setting ivars to `nil`. This is no longer needed as `nil`
|
|
504
523
|
is now `null` or `undefined`.
|
|
505
524
|
|
|
506
|
-
*
|
|
525
|
+
* Use `null` as `nil` in opal. This allows us to send methods to
|
|
507
526
|
`null` and `undefined`, and both act as `nil`. This makes opal a
|
|
508
527
|
much better javascript citizen. **REVERTED**
|
|
509
528
|
|
|
510
|
-
*
|
|
529
|
+
* Add Enumerable#none? with specs.
|
|
511
530
|
|
|
512
|
-
*
|
|
531
|
+
* Add Opal.block_send() runtime helper for sending methods to an
|
|
513
532
|
object which uses a block.
|
|
514
533
|
|
|
515
|
-
*
|
|
534
|
+
* Remove \_klass variable for denoting ruby classes, and use
|
|
516
535
|
constructor instead. constructor is a javascript property used for
|
|
517
536
|
the same purpose, and this makes opal fit in as a better js citizen.
|
|
518
537
|
|
|
519
|
-
*
|
|
538
|
+
* Add Class.bridge\_class method to bridge a native constructor into an
|
|
520
539
|
opal class which will set it up with all methods from Object, as
|
|
521
540
|
well as giving it a scope and name.
|
|
522
541
|
|
|
523
|
-
*
|
|
542
|
+
* Added native #[]= and #to_h methods, for setting properties and
|
|
524
543
|
converting to a hash respectivaly.
|
|
525
544
|
|
|
526
|
-
*
|
|
545
|
+
* Fix bug where '::' was parsed as :colon2 instead of :colon3 when in
|
|
527
546
|
an args scope. Fixes #213
|
|
528
547
|
|
|
529
|
-
*
|
|
548
|
+
* Remove lots of properties added to opal classes. This makes normal
|
|
530
549
|
js constructors a lot closer to opal classes, making is easier to
|
|
531
550
|
treat js classes as opal classes.
|
|
532
551
|
|
|
533
|
-
*
|
|
552
|
+
* Merge Hash.from_native into Hash.new
|
|
534
553
|
|
|
535
554
|
## 0.3.44 2013-05-31
|
|
536
555
|
|
|
537
|
-
*
|
|
556
|
+
* Cleanup runtime, and remove various flags and functions from opal
|
|
538
557
|
objects and classes (moving them to runtime methods).
|
|
539
558
|
|
|
540
|
-
*
|
|
559
|
+
* Remove some activesupport methods into external lib.
|
|
541
560
|
|
|
542
|
-
*
|
|
561
|
+
* Add/fix lots of String methods, with specs.
|
|
543
562
|
|
|
544
|
-
*
|
|
563
|
+
* Add more methods to MatchData class.
|
|
545
564
|
|
|
546
|
-
*
|
|
565
|
+
* Implement $' and $` variables.
|
|
547
566
|
|
|
548
|
-
*
|
|
567
|
+
* Opal can now call methods on all native objects, via method missing
|
|
549
568
|
dispatcher.
|
|
550
569
|
|
|
551
|
-
*
|
|
570
|
+
* Add Opal::Environment as custom sprockets subclass which adds all
|
|
552
571
|
opal load paths automatically.
|
|
553
572
|
|
|
554
573
|
## 0.3.43 2013-05-02
|
|
555
574
|
|
|
556
|
-
*
|
|
575
|
+
* Stop inlining respond_to? inside the parser. This now fully respects
|
|
557
576
|
an object overriding respond_to?.
|
|
558
577
|
|
|
559
|
-
*
|
|
578
|
+
* Expose `Opal.eval()` function when parser is loaded for parsing
|
|
560
579
|
and running strings of ruby code.
|
|
561
580
|
|
|
562
|
-
*
|
|
581
|
+
* Add erb to corelib (as well as compiler to gem lib). ERB files with
|
|
563
582
|
.opalerb extension will automatically be compiled into Template
|
|
564
583
|
constant.
|
|
565
584
|
|
|
566
|
-
*
|
|
585
|
+
* Added some examples into examples/ dir.
|
|
567
586
|
|
|
568
|
-
*
|
|
587
|
+
* Add Opal.send() javascript function for sending methods to ruby
|
|
569
588
|
objects.
|
|
570
589
|
|
|
571
|
-
*
|
|
590
|
+
* Native class for wrapping and interacting with native objects and
|
|
572
591
|
function calls.
|
|
573
592
|
|
|
574
|
-
*
|
|
593
|
+
* Add local_storage to stdlib as a basic wrapper around localStorage.
|
|
575
594
|
|
|
576
|
-
*
|
|
595
|
+
* Make method_missing more performant by reusing same dispatch function
|
|
577
596
|
instead of reallocating one for each run.
|
|
578
597
|
|
|
579
|
-
*
|
|
598
|
+
* Fix Kernel#format to work in firefox. String.prototype.replace() had
|
|
580
599
|
different semantics for empty matching groups which was breaking
|
|
581
600
|
Kernel#format.
|
|
582
601
|
|
|
583
602
|
## 0.3.42 2013-03-21
|
|
584
603
|
|
|
585
|
-
*
|
|
604
|
+
* Fix/add lots of language specs.
|
|
586
605
|
|
|
587
|
-
*
|
|
606
|
+
* Seperate sprockets support out to opal-sprockets gem.
|
|
588
607
|
|
|
589
|
-
*
|
|
608
|
+
* Support %r[foo] style regexps.
|
|
590
609
|
|
|
591
|
-
*
|
|
610
|
+
* Use mspec to run specs on corelib and runtime. Rubyspecs are now
|
|
592
611
|
used, where possible to be as compliant as possible.
|
|
593
612
|
|
|
594
613
|
## 0.3.41 2013-02-26
|
|
595
614
|
|
|
596
|
-
*
|
|
615
|
+
* Remove bin/opal - no longer required for building sources.
|
|
597
616
|
|
|
598
|
-
*
|
|
617
|
+
* Depreceate Opal::Environment. The Opal::Server class provides a better
|
|
599
618
|
method of using the opal load paths. Opal.paths still stores a list of
|
|
600
619
|
load paths for generic sprockets based apps to use.
|
|
601
620
|
|
|
602
621
|
## 0.3.40 2013-02-23
|
|
603
622
|
|
|
604
|
-
*
|
|
623
|
+
* Add Opal::Server as an easy to configure rack server for testing and
|
|
605
624
|
running Opal based apps.
|
|
606
625
|
|
|
607
|
-
*
|
|
626
|
+
* Added optional arity check mode for parser. When turned on, every method
|
|
608
627
|
will have code which checks the argument arity. Off by default.
|
|
609
628
|
|
|
610
|
-
*
|
|
629
|
+
* Exception subclasses now relfect their name in webkit/firefox debuggers
|
|
611
630
|
to show both their class name and message.
|
|
612
631
|
|
|
613
|
-
*
|
|
632
|
+
* Add Class#const_set. Trying to access undefined constants by a literal
|
|
614
633
|
constant will now also raise a NameError.
|
|
615
634
|
|
|
616
635
|
## 0.3.39 2013-02-20
|
|
617
636
|
|
|
618
|
-
*
|
|
637
|
+
* Fix bug where methods defined on a parent class after subclass was defined
|
|
619
638
|
would not given subclass access to method. Subclasses are now also tracked
|
|
620
639
|
by superclass, by a private '_inherited' property.
|
|
621
640
|
|
|
622
|
-
*
|
|
641
|
+
* Fix bug where classes defined by `Class.new` did not have a constant scope.
|
|
623
642
|
|
|
624
|
-
*
|
|
643
|
+
* Move Date out of opal.rb loading, as it is part of stdlib not corelib.
|
|
625
644
|
|
|
626
|
-
*
|
|
645
|
+
* Fix for defining methods inside metaclass, or singleton_class scopes.
|
|
627
646
|
|
|
628
647
|
## 0.3.38 2013-02-13
|
|
629
648
|
|
|
630
|
-
*
|
|
649
|
+
* Add Native module used for wrapping objects to forward calls as native
|
|
631
650
|
calls.
|
|
632
651
|
|
|
633
|
-
*
|
|
652
|
+
* Support method_missing for all objects. Feature can be enabled/disabled on
|
|
634
653
|
Opal::Processor.
|
|
635
654
|
|
|
636
|
-
*
|
|
655
|
+
* Hash can now use any ruby object as a key.
|
|
637
656
|
|
|
638
|
-
*
|
|
657
|
+
* Move to Sprockets based building via `Opal::Processor`.
|