Version 0.2.9
Released 07 Nov 2017

GNU ease.js can be downloaded in a variety of formats, depending on the environment in which it will be used. Releases are always stable and production-ready.

The tarball contains the full source code, combined files for debugging GNU ease.js itself, combined files for development using GNU ease.js, minified files for production, and scripts needed to rebuild. The production and development links contain the JavaScript files needed to run GNU ease.js, the latter being unminified to allow easily stepping through the code with a debugger.

You should verify the above files using their associated signatures to ensure that they have not been altered. This can be done by placing both files in the same directory and running the command:

$ gpg --verify file.sig

where file is the full filename, such as easejs-latest.tar.gz. If you do not have the public signing key, you may download it by running this command:

$ gpg --keyserver --recv-keys D6E9B930028A6C38F43B2388FEF635745E6F6D05


ease.js is available via npm for use with Node.js. Please be warned that package signature checks are not performed by npm.

$ npm install easejs


See Chapter 1 of the manual for more information on downloading and integrating ease.js into your own projects.

Release Notes

Below are the release notes for the current release of GNU ease.js. Historical release notes are also available. GPG signatures for each of the releases and their respective notes can be found in their respective tags in the Git repository.

0.2.9: GNU ease.js 0.2.9 released

This release succeeds v0.2.8, which was released 15 July, 2016.  There are
no backwards-incompatible changes, but certain default behaviors have
changed (see changes below).  Support continues for ECMAScript 3+.

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.

Changes between 0.2.8 and 0.2.9
* Class constructors are now virtual by default.  The manual has been
  updated with information about this change.

* Method overrides are now implicitly virtual.  This is consistent
  with other object-oriented languages and solves the problem with
  breaking stackable traits if the author forgets to supply `virtual'
  to an overridden (intended-to-be-stackable) method.  The manual has
  been updated.

* New methods `Class.assertInstanceOf' and its alias `Class.assertIsA' have
  been added to eliminate boilerplate of enforcing polymorphism.  They are
  like `Cass.isInstanceOf' and `Class.isA' respectively, but will fail by
  throwing a TypeError.  The manual has been updated to include these two
  methods, along with some rewording of the containing section.

* `Class.extend(Base)', where `Base' is a class, will now assume that you
  forgot the class definition and throw an error rather than trying to use
  `Base' as the definition object.

* [bugfix] Using `#constructor' (alias of `#__construct') in Error subtypes
  will no longer complain about an attempt to redefined `#__construct'.

* `Constructors' section of manual has been reworded and references to
  poor practices (static classes, Singletons) have been removed.

* Manual (and website) examples modernized to use ECMAScript 6 syntax.
  Users must still write ES3 syntax if they want to use ease.js in ES3
  environments, of course.

* INSTALL file added to repository (removed from .gitignore).  This
  was previously (and unintentionally) only available in the
  distribution archives.

* Copyright years updated on combined and minified distributions.

This release contains a number of bugfixes for traits, which is stable but
still under development:

* [bugfix] Methods of trait class supertypes now apply with the
  correct context.  (Feature added in 0.2.7)

* [bugfix] Traits extending classes may now be named using the
  `Trait('Name').extend(C, dfn)' notation.  (Feature added in 0.2.7)

* [bugfix] Can now mix in traits with class supertypes that define
  constructors.  (Feature added in 0.2.7)

* [bugfix] `this.__inst' in traits now correctly references the object
  mixed into; previously, this was `undefined'.

I apologize for the (extreme) delay in this release: the process was stalled
for many months while waiting for certain legal documents after my employer
was purchased by another company.

Release notes for past releases are available at:

More information, including an online manual, can be found on GNU's

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.9.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 D6E9B930028A6C38F43B2388FEF635745E6F6D05

and rerun the 'gpg --verify' command.

Free Your JavaScript!

Explore why online freedoms are of practical importance with
my LibrePlanet 2016 talk: