Skip to content

Releases: opal/opal

v0.5.0

06 Nov 09:48
Compare
Choose a tag to compare
  • Optimized_operators is no longer a compiler option
  • Replace Opal.bridge_class() with class 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

13 Aug 10:00
Compare
Choose a tag to compare
  • 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

24 Jul 18:45
Compare
Choose a tag to compare
  • 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

02 Sep 21:25
Compare
Choose a tag to compare
  • 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

02 Sep 21:24
Compare
Choose a tag to compare
  • Move sprockets logic out to external opal-sprockets gem. That now
    handles the compiling and loading of opal files in sprockets.

v0.4.0

02 Sep 21:24
Compare
Choose a tag to compare
  • 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 for nil. 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 as nil
    is now null or undefined.

  • Use null as nil in opal. This allows us to send methods to
    null and undefined, and both act as nil. 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

02 Sep 21:23
Compare
Choose a tag to compare
  • 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

02 Sep 21:23
Compare
Choose a tag to compare
  • 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.

v0.3.42

02 Sep 21:23
Compare
Choose a tag to compare
  • Fix/add lots of language specs.

  • Seperate sprockets support out to opal-sprockets gem.

  • Support %r[foo] style regexps.

  • Use mspec to run specs on corelib and runtime. Rubyspecs are now
    used, where possible to be as compliant as possible.

v0.3.41

02 Sep 21:22
Compare
Choose a tag to compare
  • Remove bin/opal - no longer required for building sources.

  • Depreceate Opal::Environment. The Opal::Server class provides a better
    method of using the opal load paths. Opal.paths still stores a list of
    load paths for generic sprockets based apps to use.