<commit_before># Exoskeleton

Exoskeleton is a faster and leaner Backbone for your HTML5 apps.

http://exosjs.com

## What already works
All features you need for real-world app are working.
All software tests are passing: (libs = underscore and jquery)

* Backbone: **with and without** libs
* [Chaplin](http://chaplinjs.org): **with and without** libs

Marionette and other popular plugins: WIP.

## Building

Default **and custom** builds:

    make # Will create exoskeleton.js
    make noutils # If you want to use Underscore and jQuery
                 # and don't want to include `Exoskeleton.utils`.
    make min     # Minified version.
    # Custom, like this:
    cat lib/{header,events,collection,sync,history,footer}.js > exoskeleton.js

## Features

* Custom builds
* No hard dependencies on underscore or jquery
* Support for Bower and Component(1)
* AMD support
* Speed: blazing fast when used without jQuery.

Also:

* Router with query string support
* `View#delegateEvents` has `keepOld` option that allows to preserve old events.
* All params are allowed for model attributes, for example `model.get('constructor')` [(jashkenas/backbone#1495)](https://github.com/jashkenas/backbone/issues/1495)
* Ultra-fast event delegation via native `View#delegate` method.
* Event triggering on disposed objects is [20 times faster](http://jsperf.com/exoskeleton-vs-backbone-events)
* `Backbone.Deferred` overridable method for custom promise libraries or DOM promises

## Differences

* Declaratively defined view events which point to
  non-existing handler functions are no longer tolerated / skipped.
  Early error is thrown instead.
* In no-underscore environment, there are no underscore-inspired
  Collection methods (each, pluck etc.), but there are ES5-inspired methods:

  `forEach, map, filter, some, every, reduce, reduceRight, indexOf, lastIndexOf`

  Also, no underscore-inspired Model methods at all.

- emulateHTTP and emulateJSON were removed<commit_msg>New benchmark for disposed objects.<commit_after># Exoskeleton

Exoskeleton is a faster and leaner Backbone for your HTML5 apps.

http://exosjs.com

## What already works
All features you need for real-world app are working.
All software tests are passing: (libs = underscore and jquery)

* Backbone: **with and without** libs
* [Chaplin](http://chaplinjs.org): **with and without** libs

Marionette and other popular plugins: WIP.

## Building

Default **and custom** builds:

    make # Will create exoskeleton.js
    make noutils # If you want to use Underscore and jQuery
                 # and don't want to include `Exoskeleton.utils`.
    make min     # Minified version.
    # Custom, like this:
    cat lib/{header,events,collection,sync,history,footer}.js > exoskeleton.js

## Features

* Custom builds
* No hard dependencies on underscore or jquery
* Support for Bower and Component(1)
* AMD support
* Speed: blazing fast when used without jQuery.

Also:

* Router with query string support
* `View#delegateEvents` has `keepOld` option that allows to preserve old events.
* All params are allowed for model attributes, for example `model.get('constructor')` [(jashkenas/backbone#1495)](https://github.com/jashkenas/backbone/issues/1495)
* Ultra-fast event delegation via native `View#delegate` method.
* Event triggering on disposed objects is [20 times faster](http://jsperf.com/exoskeleton-events-vs-backbone-events)
* `Backbone.Deferred` overridable method for custom promise libraries or DOM promises

## Differences

* Declaratively defined view events which point to
  non-existing handler functions are no longer tolerated / skipped.
  Early error is thrown instead.
* In no-underscore environment, there are no underscore-inspired
  Collection methods (each, pluck etc.), but there are ES5-inspired methods:

  `forEach, map, filter, some, every, reduce, reduceRight, indexOf, lastIndexOf`

  Also, no underscore-inspired Model methods at all.

- emulateHTTP and emulateJSON were removed
{'fraction_non_alphanumeric': 0.08636706000502134, 'fraction_numerical': 0.006527742907356264, 'mean_word_length': 4.39106901217862, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1577830', 'n_tokens_mistral': 1171, 'n_tokens_neox': 1096, 'n_words': 447}