[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GNU ease.js 0.2.2 released [stable]

From: Mike Gerwitz
Subject: GNU ease.js 0.2.2 released [stable]
Date: Tue, 29 Apr 2014 03:38:04 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

This is the third release of the 0.2 series with a focus on interoperability
with vanilla ECMAScript/JavaScript. Three bugfixes address potential issues
when dealing with native prototypes. Additionally, GNU ease.js now considers
non-ease.js objects to adhere to an interface (without having to implement
it) so long as the object implements all methods and the proper number of
arguments, which allows users to integrate with ease.js classes without
having to use ease.js themselves. It further allows defining interfaces for
existing objects to ensure API conformance. Finally, to make definitions
more concise and more natural to prototypal developers, underscore-prefixed
members are now implicitly private; this can be overridden with an explicit
access modifier.

Changes between 0.2.1 and 0.2.2:
  * [doc] Added interoperability chapter to manual.

  * Members with an underscore prefix (e.g. _foo) are now implicitly
    - This can be overridden by explicitly specifying an access modifier.
    - Follows common conventions in modern object-oriented languages and
      permits concise definitions that are more natural to users of
      JavaScript's native prototype model.
    * This is backwards-incompatible if there is code that accesses
      underscore-prefixed members as public or protected without explicitly
      providing the visibility keyword in the member definition.

  * Interfaces are now interoperable with vanilla ECMAScript objects
    (including prototypes).
    - This allows for runtime polymorphism within ease.js methods without
      having to use ease.js.
    - Also allows creating interfaces for pre-existing objects (e.g. W3C DOM
      objects) to ensure adherence to an API.

  * Generated classes now have an `asPrototype` method for use as a
    constructor prototype.
    - Defers execution of class constructor, allowing prototypal subclassing
      (for those preferring not to use ease.js, but wish to extend a class
      generated from it).

  * [bugfix] Classes inheriting from prototypes will now properly proxy
    assignments to properties on the prototype.
    - Note that ease.js can only detect properties that are initialized in
      the prototype's constructor; otherwise, you must manually declare it
      public within the class definition to ensure proper proxying.

  - [bugfix] Classes inheriting from prototypes will now properly handle
    method overrides.
    - Parent prototype methods are implicitly virtual, unlike ease.js
      methods; see test/Class/InteropTest.js for rationale.

  - [bugfix] Class.isInstanceOf once again attempts blind native instanceof
    without preemptive function check.
    - v0.2.1 first checked to see if the argument was a function to prevent
      use of a try/catch; unfortunately, the proprietary browser IE9+ seems
      to treat certain DOM constructors (e.g. HTMLElement) as objects rather
      than functions, yet the `instanceof` keyword works with them. This
      reverts that change.

  Trait support is currently under development and will be undocumented
  until v0.3.0; it is included currently as a preview and is functional and
  comprehensively tested.

    - [preview] Named trait staging of the form Trait("Foo") implemented
      (analogous to Class("Foo")) and will no longer throw an obscure error.

    - [preview] Trait API now exposed in combined source file.
      - The v0.2.0 release exposed Trait via index.js, but the combined file
        (intended for use client-side) was overlooked.

Getting GNU ease.js
Here are the compressed sources and a GPG detached signature[*]:

Alternative download options are available at:

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify easejs-0.2.2.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver --recv-keys 8EE30EAB

and rerun the 'gpg --verify' command.

Free Your JavaScript!

See the FSF's Free JavaScript Campaign at

Are you a JavaScript developer? Consider joining the campaign's JavaScript
Developers Task Force mailing list at

About GNU ease.js
GNU ease.js is a classical object-oriented framework for JavaScript,
intended to eliminate boilerplate code and "ease" the transition into
JavaScript from other object-oriented languages. Features include simple and
intuitive class definitions; classical inheritance; abstract classes and
methods; traits as mixins; interfaces; public, protected, and private access
modifiers; static and constant members; and more. Please see the
comprehensive documentation at
<> for more information,
examples, and implementation details.

Mike Gerwitz
Free Software Hacker | GNU Maintainer
FSF Member #5804 | GPG Key ID: 0x8EE30EAB

Attachment: signature.asc
Description: Digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]