Permalink
Commits on May 28, 2015
  1. Trait class extend support

    mikegerwitz committed May 28, 2015
  2. Trait class extension support

    mikegerwitz committed May 28, 2015
    "Extending" a class C simply creates a contract stating that the trait may
    only be mixed into something of type C (so, C or its subtypes).
  3. "lazy" metadata support

    mikegerwitz committed May 24, 2015
  4. Remove global _extending state

    mikegerwitz committed May 13, 2015
    The previous implementation could not survive recursive applications, which
    I did know about.  But that was before the system was brutally abused by
    traits.
  5. Object class masquerading

    mikegerwitz committed May 13, 2015
Commits on May 12, 2015
Commits on May 10, 2015
  1. package.json syntax correction (oops)

    mikegerwitz committed May 10, 2015
    Was not able to rebase because I already stupidly pushed, and Savannah does
    not allow --force, or deleting `master' to circumvent. ;)  Not that it would
    be a good idea rergardless.
  2. package.json keyword additions

    mikegerwitz committed May 10, 2015
    This list has also been sorted, so pay close attention to the diff.
  3. package.json {tags=>keywords}

    mikegerwitz committed May 10, 2015
    Was the key "tags" in the past?  Regardless, it doesn't work [anymore], so
    ease.js keywords haven't been searchable in npm for quite some time /
    forever.
Commits on May 7, 2015
Commits on Dec 20, 2014
  1. README TODOs using Org mode

    mikegerwitz committed Dec 20, 2014
    Even if you don't use Emacs, the outline style should be intuitive.
    
    This commit is partially for organization, partially to let people
    know that this project is still on my mind and will be getting more
    attention soon.
Commits on Aug 8, 2014
  1. Various ES3-related bugfixes for bugs introduced by v0.2.3

    mikegerwitz committed Aug 8, 2014
    GNU ease.js remains committed to supporting environments as far back as ES3;
    unfortunately, this is important due to the popularity of older IE versions
    (IE<=8). Btw, ease.js runs on IE 5.5, in case you still need that. ;)
    
    But please don't use a proprietary web browser. Indeed, this is why the
    breaks were introduced in the first place: I neglected to run the
    browser-based test suite on the proprietary Microsloth browsers until after
    the v0.2.3 release, because I do not own a copy of Windows; I had to run it
    at work. But, regardless---my apologies; I'll be more diligent.
  2. `undefined` is no longer applied to Trait.__mixin

    mikegerwitz committed Aug 8, 2014
    This is a bugfix; the bug was introduced in v0.2.3.
    
    Notably, this caused problems in IE<=8 for non-argument traits. The problem
    is that `fund.apply( x, undefined )` is not valid in ES3---we must apply an
    empty array (or argument list) instead.
  3. Global no longer uses root as alt object prototype

    mikegerwitz committed Aug 8, 2014
    This is a bugfix; the bug was introduced in v0.2.3.
    
    Initially, the implementation created a new object with the root object as
    its prototype, taking advantage of ECMAScript's native
    overrides/fallthroughs. Unfortunately, IE<=8 had a buggy implementation,
    effectively treating the prototype as an empty object. So, rather than
    alt.Array === root.Array, alt.Array === undefined.
    
    The fix is simply to reference discrete objects.
  4. method.super references now ES3-compatible

    mikegerwitz committed Aug 8, 2014
    This is a bugfix; the bug was introduced in v0.2.3.
    
    In ECMAScript 5, reserved keywords can be used to reference the field of an
    object in dot notation (e.g. method.super), but in ES3 this is prohibited;
    in these cases, method['super'] must be used. To maintain ES3 compatiblity,
    GNU ease.js will use the latter within its code.
    
    Of course, if you are developing software that need not support ES3, then
    you can use the dot notation yourself in your own code.
    
    This does not sway my decision to use `super`---ES3 will soon (hopefully)
    become extinct, and would be already were it not for the terrible influence
    of Microsloth's outdated browsers.
Commits on Aug 7, 2014
  1. Corrected test broken by Node.js v0.10.27

    mikegerwitz committed Aug 7, 2014
    Specifically, aae51ecf, which introduces deepEqual changes for comparing
    argument objects---specifically, this change:
    
    ```c
      if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
        return false;
    ```
    
    Since I was comparing an array with an arguments object, deepEqual failed.
    While such an implementation may confuse users---since argument objects are
    generally treated like arrays---the distinction is important and I do agree
    with the change.
  2. Interface.isInstanceOf now accounts for interface interop

    mikegerwitz committed Aug 7, 2014
    More information in the merged commit message.
  3. Interface.isInstanceOf will account for interop compatibility

    mikegerwitz committed Aug 7, 2014
    This is a bug fix.
    
    If the provided object's constructor is an ease.js type, then the
    conventional rules will apply (as mentioned in the test docblock and in the
    manual); however, if it's just a vanilla ECMAScript object, then the interop
    compatibility checks will be used instead.
    
    The manual already states that this is the case; unfortunately, it
    lies---this was apparently overlooked, and is a bug.
  4. Interface/InteropTest case assertion refactoring

    mikegerwitz committed Aug 7, 2014
    This will allow multiple sub-assertions to be performed---see next commit.
Commits on Jul 28, 2014
  1. tools/mkrelease added

    mikegerwitz committed Jul 28, 2014
    This is the script that is used to automate most steps of the ease.js
    release process.
  2. .gitignore maintinance

    mikegerwitz committed Jul 28, 2014
  3. Missing /version ignore added

    mikegerwitz committed Jul 28, 2014
    configure-generated
  4. Parameterized traits

    mikegerwitz committed Jul 28, 2014
    An in-depth description is provided by the commit message of 3fc0f90.
Commits on Jul 27, 2014
  1. Subtype ctor guarantees with parent __mixin or __construct

    mikegerwitz committed Jul 27, 2014
    A solution for this problem took a disproportionally large amount of time,
    attempting many different approaches, and arriving still at a kluge; this is
    indicative of a larger issue---we've long since breached the comfort of the
    original design, and drastic refactoring is needed.
    
    I have ideas for this, and have already started in another branch, but I
    cannot but this implementation off any longer while waiting for it.
    
    Sorry for anyone waiting on the next release: this is what held it up, in
    combination with my attention being directed elsewhere during that time (see
    the sparse commit timestamps). Including this ordering guarantee is very
    important for a stable, well-designed [trait] system.
  2. __construct and __mixin ordering guarantees

    mikegerwitz committed Jun 6, 2014
    See test cases for rationale.
    
    I'm not satisfied with this implementation, but the current state of ease.js
    makes this kind of thing awkward. Will revisit at some point.