Releases: opal/opal
v0.5.0
- Optimized_operators is no longer a compiler option
- Replace
Opal.bridge_class()
withclass Foo < `bar`
syntax - Expose
Opal.bridge_class()
for bridging native prototypes - Source maps improvements
- Massive Rubyspec cleanup + passing specs
- Massive Corelib/Stdlib cleanup + fixes
- Massive internal cleanup + fixes
See the full diff for more details (almost 800 commits)
v0.4.4
- Remove native object method calls
- Add Struct class
- Add method stubs as method_missing option, stubs enabled by default
- Native is now used to wrap native objects directly
- Fix Hash.new and Hash.allocate for subclasses
- Generate sourcemaps from fragments
- Allow blocks to be passed to zsuper (no args) calls
- Fix yield when given 1 or multiple arguments for block destructuring
v0.4.3
- Re-implement class system. Classes are now real objects instead of converted Procs. This allows classes to properly inherit methods from each other.
- Fix exception hierarchy. Not all standard exception classes were subclassing the correct parent classes, this is now fixed.
- Move ERB into stdlib. The erb compiler/parser has also been moved into lib/
- Opal::Builder class. A simple port/clone of sprockets general building. This allows us to build projects similar to the way opal-sprockets does.
- Move json.rb to stdlib.
v0.4.2
-
Added
Kernel#rand
. (fntzr) -
Restored the
bin/opal
executable in gemspec. -
Now
.valueOf()
is used in#to_n
of Boolean, Numeric, Regexp and String
to return the naked JavaScript value instead of a wrapping object. -
Parser now wraps or-ops in paranthesis to stop variable order from
leaking out when minified by uglify. We now have code in this
format:(((tmp = lhs) !== false || !==nil) ? tmp : rhs)
.
v0.4.1
v0.4.0
-
Added fragments to parser. All parser methods now generate one or
more Fragments which store the original sexp. This allows us to
enumerate over them after parsing to map generated lines back to
original line numbers. -
Reverted
null
fornil
. Too buggy at this time. -
Add Opal::SprocketsParser as Parser subclass for handling parsing
for sprockets environment. This subclass handles require statements
and stores them for sprockets to use. -
Add :irb option to parser to keep top level lvars stored inside
opal runtime so that an irb session can be persisted and maintain
access to local variables. -
Add Opal::Environment#use_gem() helper to add a gem to opals load
path. -
Stop pre-setting ivars to
nil
. This is no longer needed asnil
is nownull
orundefined
. -
Use
null
asnil
in opal. This allows us to send methods to
null
andundefined
, and both act asnil
. This makes opal a
much better javascript citizen. REVERTED -
Add Enumerable#none? with specs.
-
Add Opal.block_send() runtime helper for sending methods to an
object which uses a block. -
Remove _klass variable for denoting ruby classes, and use
constructor instead. constructor is a javascript property used for
the same purpose, and this makes opal fit in as a better js citizen. -
Add Class.bridge_class method to bridge a native constructor into an
opal class which will set it up with all methods from Object, as
well as giving it a scope and name. -
Added native #[]= and #to_h methods, for setting properties and
converting to a hash respectivaly. -
Fix bug where '::' was parsed as :colon2 instead of :colon3 when in
an args scope. Fixes #213 -
Remove lots of properties added to opal classes. This makes normal
js constructors a lot closer to opal classes, making is easier to
treat js classes as opal classes. -
Merge Hash.from_native into Hash.new
v0.3.44
-
Cleanup runtime, and remove various flags and functions from opal
objects and classes (moving them to runtime methods). -
Remove some activesupport methods into external lib.
-
Add/fix lots of String methods, with specs.
-
Add more methods to MatchData class.
-
Implement
$' and $ ` variables. -
Opal can now call methods on all native objects, via method missing
dispatcher. -
Add Opal::Environment as custom sprockets subclass which adds all
opal load paths automatically.
v0.3.43
-
Stop inlining respond_to? inside the parser. This now fully respects
an object overriding respond_to?. -
Expose
Opal.eval()
function when parser is loaded for parsing
and running strings of ruby code. -
Add erb to corelib (as well as compiler to gem lib). ERB files with
.opalerb extension will automatically be compiled into Template
constant. -
Added some examples into examples/ dir.
-
Add Opal.send() javascript function for sending methods to ruby
objects. -
Native class for wrapping and interacting with native objects and
function calls. -
Add local_storage to stdlib as a basic wrapper around localStorage.
-
Make method_missing more performant by reusing same dispatch function
instead of reallocating one for each run. -
Fix Kernel#format to work in firefox. String.prototype.replace() had
different semantics for empty matching groups which was breaking
Kernel#format.