src/cm/media/js/lib/yui/yui_3.10.3/releasenotes/HISTORY.event-custom.md
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
Custom Event Infrastructure Change History
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
==========================================
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
3.10.3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
3.10.2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
* Fixed issue with facade carrying stale data for the "no subscriber" case.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
* Fixed regression where `once()` and `onceAfter()` subscriptions using the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
  `*` prefix threw a TypeError [#676]. `target.once('*:fooChange', callback)`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
* Fixed exception with fire(type, null) with emitFacade:true.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
3.10.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
3.10.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
* Significant performance improvements in common CustomEvent operations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
  There are improvements across the board, but the work was largely aimed at events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
  with no listeners (to facilate speeding up `new Base()` which publishes/fires 2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
  events [init, initializedChange], which usually don't have listeners).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
  For example, on Chrome:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
      `fire() with 0 listeners` is 6 times faster
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
      `fire() with 2 listeners` is 2-3 times faster (w, w/o payload)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
      `publish()` is 2 times faster
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
      `publish() compared to _publish()` is 5 times faster (see below)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
      `EventTarget construction + publish + fire with 0 listeners` is 3 times faster
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
  Major performance related changes are listed below.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
  Commit messages have detailed descriptions of incremental changes, and the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
  benefits introduced.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
* Moved more properties to the `CustomEvent` prototype, to improve publish costs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
* Instantiate `_subscribers`, `_afters` arrays lazily to reduce publish costs for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
  no listener case. Same thing was also done for less commonly used features, like the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
  `targets` map.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
* Reduce `new EventTarget` costs, by removing default properties which just match the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
  `CustomEvent` defaults. It reduces the number of properties we need to iterate each time
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
  we mix values while publishing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
* Removed unrequired `Y.stamp` on _yuievt. It wasn't being used in the library code base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
* Changed `Y.stamp` calls to `Y.guid` where it was being used to set up `id` properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
  There didn't seem to be a need to add the `_yuid` property and it added overhead.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
* Provide a fast-track for `fire` with no potential subscribers (no local subscribers, no
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
  bubble targets, and no broadcast), by jumping to the default function directly (if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
  configured) or just doing nothing, if no default function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
* Made `*` support close to zero cost for folks who aren't using it, by only trying to look
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
  for siblings if someone had subscribed using `*`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
* Reduced `isObject` checks, by combining facade creation and argument manipulation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
  into `_getFacade()`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
* Improved `fireComplex` times, by creating lesser used queues lazily (`es.queue`, `es.afterQueue`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
* Avoid `slice` and related arguments iteration costs for common `fire` signatures,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
  (`fire("foo")`, `fire("foo", {})`) by working with arguments directly for these cases.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
  Since `fire` is open-ended in terms of it's number of args, anything besides the above
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
  signatures still use `slice`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
* `fire(...)` now delegates to `_fire(array)` to avoid repeated conversion of `arguments` to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
   arrays, across the calling stack from `eventTarget.fire()` to `customEvent.fire()`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
* Avoid `_monitor()` hops, but checking for whether or not monitoring is enabled outside
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
  of the function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
* Removed `Y.cached` wrapper around `_getType()`. This was an interesting one. The work
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
  we do to generate the key for the cache, turned out to be more than what `_getType()` costs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
  if we just re-run it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
* Added a fast-path *currently private* `_publish()` for low-level, critical path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
  implementations, such as Attribute and Base.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
  `_publish()` doesn't provide any API sugar (e.g. type to fulltype conversation), and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
  leaves the `CustomEvent` configuration to the caller to avoid iteration and mixing costs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
  The assumption is that low-level callers know about the event system architecture, and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
  know what they're doing. That's why its private for now, but its 5x faster than `publish()`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
  for a comparable event configuration. `publish()` leverages `_publish()`, also ends up being
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
  faster after this change, but not by such a big factor.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
* Revert EventTarget back to lazily creating `targets`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
3.9.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
3.9.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
3.8.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
3.8.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
  * No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
3.7.3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
3.7.2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
3.7.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
* No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
3.7.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
 * CustomEvent run-time performance optimizations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
   a. [!] The `subscribers` and `afters` CustomEvent instance properties have
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
      been deprecated, and replaced with private arrays (instead of hashes).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
      If you're referring to the `subscribers` or `afters` properties directly,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
      you can set the `Y.CustomEvent.keepDeprecatedSubs` to true, to restore
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
      them, but you will incur a performance hit in doing so.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
      The rest of the CustomEvent API is driven by the new private arrays, and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
      does not require the `subscribers` and `afters` properties, so you should
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
      only enable `keepDeprecatedSubs` if your code is referring to the properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
      directly.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
      If you are using the above properties directly, please file an enhancement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
      request and we'll provide a public way to achieve the same results, without
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
      the performance hit before we remove the properties permanently.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
   b. Avoid new EventTarget when stoppedFn is not used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
   c. Optimized mixing during the creation of a custom event object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
   d. Optimized mixing done on the facade, during a fire with payload.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
   Performance results on Chrome 19/MacOS below, for the use case where we're
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
   iring with a payload:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
   ## Custom Event Lifecycle Numbers (Fix a, b, c)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
   BEFORE (3.6.0):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
   EventTarget with attribute style publish, fire, with on/after listeners x 7,623 ops/sec
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
   CURRENT (With fixes a, b, c):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
   EventTarget with attribute style publish, fire, with on/after listeners x 23,642 ops/sec
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
   ## Payload Numbers (Fix d)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
   BEFORE (3.6.0):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
   Fire With Payload - 10 listeners x 27,918 ops/sec ±1.32% (54 runs sampled)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
   CURRENT (With fix d):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
   Fire With Payload - 10 listeners x 63,362 ops/sec ±0.37% (58 runs sampled)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
   The benchmark tests can be found in src/event-custom/tests/benchmark
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
   Log messages for the follow commits have more details:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
   e7415e71decf3d921161e8883270e16b433aa150 - subscribers/afters fix.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
   29f63996f8b69a7bb6d2e27f4d350c320998c0b2 - optimized payload mix fix.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
 * CustomEvent memory optimizations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
   * Fixed `_facade` and `firedWith` which were holding onto a reference
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
     to the last fired event facade. Now `_facade` is reset to null after
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
     the fire sequence, and `firedWith` is only maintained for `fireOnce`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
     CustomEvents. i
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
     This allows the facade from the last fired event to be GC'd whereas
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
     prior to this change it wasn't.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
3.6.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
 * Fixed memory consumption issue where Y.Do's internal touched object cache,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
   Y.Do.objs, would never release object references.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
   The Y.Do.objs property has been deprecated as of 3.6.0, and will be null.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
   The cached state previously stored in Y.Do.objs has been moved onto the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
   AOP'd object itself, in the *private* `_yuiaop` property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
   The only reason `_yuiaop` is mentioned here, is to provide a temporary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
   migration path for users who may have been using Y.Do.objs. If you are using
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
   this property, please file a ticket with the use case, and we'll look at
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
   addressing the use case formally, while not impacting GC.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
3.5.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
  * No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
  * Multiple calls to target.publish({ ... }) now work [Ticket #2531671]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
3.4.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
  * onceAfter (added in 3.4.0) now works for array and object signatures.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    [Ticket #2531121]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
3.4.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
  * Custom events published from `Y` no longer bubble by default.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
3.3.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
  * Undocumented and poorly named `each()` method on EventHandle changed to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
    `batch()`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
  * After listeners for events fired in a `defaultFn` or listener are queued in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    the correct order.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
  * Added `Y.Do.originalRetVal` and `Y.Do.currentRetVal` statics accessible by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
    `Y.Do.after()` subscribers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
  * Exposed the previously private `EventTarget.parseType`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
3.2.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
  * Fixed `defaultTargetOnly` publish configuration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
  * `detach()` now decrements `subCount`/`afterCount`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
  * Detaching via category no longer affects subscriptions on other objects.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
3.1.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
  * No changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
3.1.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
  * Wildcard prefix subscriptions supported: `target.on('*:click', …)` will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    notified when `tree:click`, `tab:click`, etc are fired.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
  * Added `EventTarget::once`, which is equivalent to `on()`, except the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    listener automatically detaches itself once executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
  * Added event monitoring. When configured, an `EventTarget` will emit events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    for `publish()`, `attach()`, `fire()`, and `detach()` operations on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    hosted events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
  * `EventTarget::on`'s `type` parameter is overloaded to accept arrays and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
    objects for attaching multiple types at once.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
  * `EventTarget::detach` returns the event target like the API docs already
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    stated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
  * Events can now be configured to execute the `defaultFn` only on the targeted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    object, not on the bubble targets.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
  * The event order has been reworked so that the after listeners for the entire
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    event stack execute after all `defaultFn` across the entire bubble stack.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
3.0.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
-----
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
  * Broken into core base and complex modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
  * `broadcast` works for simple events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
  * If configured to return an `EventHandle`, the return value will always be a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
    single object, regardless of how many listeners were attached. Previously,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
    multiple listeners provided an array of detach handles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
3.0.0beta1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
----------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
  * [!] Exposed methods are `on()` for the before moment, `after()` for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    after moment, and `detach()` for unsubscribe. `subscribe()`, `before()`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    `unsubscribe()`, and corresponding methods are deprecated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
  * Implemented the `broadcast` flag:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    * `broadcast = 1`: local, accessible via `Y.on('prefix:event')`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
    * `broadcast = 2`: global, accessible via `Y.on()` or globally via
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
      `Y.Global.on('prefix:event')`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    Broadcast listeners cannot effect the `defaultFn` or host subscribers (so
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    are in effect, after listeners), although this is still possible by added
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
    either `Y` or `Y.Global` as `EventTarget`s.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
  * Moved `event-custom` out of `event` package.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
  * `EventTarget` accepts a `prefix` configuration. This is used in all exposed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    methods to handle shortcuts to event names, e.g., `'click'` and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    `'menu:click'` are the same if the prefix is `'menu'`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
  * Event type accepts a event category which can be used to detach events:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        Y.on('category|prefix:event', fn);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        Y.detach('category|prefix:event');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        Y.detach('category|*');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
  * Added `chain` config to events that makes the return value the event target
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    rather than a detach handle. Use with the detach category prefix.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
  * The `type` parameter can be an object containing multiple events to attach:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
        Y.on({ 'event1': fn1, 'event2': fn2 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
  * `Y.fire` payload for event facades can be another facade or a custom event.