From 307d38e68911f2c0f53b201d3ba7b511384ddcc8 Mon Sep 17 00:00:00 2001 From: Nick Martin Date: Thu, 21 Feb 2013 01:08:34 -0800 Subject: [PATCH] Reword and reformat History.md to be more readable. --- History.md | 99 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 33 deletions(-) diff --git a/History.md b/History.md index a89be7e134..a59137dde2 100644 --- a/History.md +++ b/History.md @@ -3,53 +3,86 @@ ## v0.5.7 -* Changed the api for publish functions that do not return a - cursor. Specifically, use `added`, `changed`, `removed`, and `ready`, instead - of `set`, `unset`, `flush`, and `complete`. See the [`publish` - docs](http://docs.meteor.com/#meteor_publish) for details. Additionally, - `stop` has been improved, and `error` is now available for indicating that - there is an error to the subscriber. +* The DDP wire protocol has been redesigned. -* Changed the api for `observe`. Observing with `added`, `changed` and - `removed` callbacks is now unordered; for ordering information use `addedAt`, - `changedAt`, `removedAt`, and `movedTo`. Full documentation is in the - [`observe` docs](http://docs.meteor.com/#observe). All callers of `observe` - need to be updated. + * The handshake message is now versioned. This breaks backwards + compatibility between sites with `Meteor.connect()`. Older meteor + apps can not talk to new apps and vice versa. -* Added new [`observeChanges`](http://docs.meteor.com/#observe_changes) api for - keeping track of the contents of a cursor more efficiently. + * New [EJSON](http://docs.meteor.com/#ejson) package allows you to use + Dates, Mongo ObjectIDs, and binary data in your collections and + Session variables. You can also add your own custom datatypes. -* New [EJSON](http://docs.meteor.com/#ejson) package allows you to use Dates, - Mongo ObjectIDs, and binary data (as `Uint8Array` or a normal array with - `$Uint8ArrayPolyfill` set to true) in your collections and Session variables. - You can also add your own custom datatypes. + * Meteor now correctly represents empty documents in Collections. -* You can specify that a collection should use MongoDB ObjectIDs as its `_id` - fields for inserts instead of strings. If you do this, use `EJSON.equals()` - for comparing equality instead of `===`. This also allows you to use Meteor - with existing MongoDB databases that have ObjectID `_id`s. + * There is an informal specification in `packages/livedata/DDP.md`. -* The DDP wire protocol has been redesigned. It is now versioned, and at - version "pre1". There is an informal specification in - `packages/livedata/DDP.md`. -* Meteor now uses a shorter string ID for MongoDB documents by default. You can - generate this kind of ID with `Random.id()`. `Meteor.uuid()` is deprecated. +* Breaking API changes -* There is a new reactive function on subscription handles: `ready()` returns - true when the subscription has received all of its initial documents. + * Changed the API for `observe`. Observing with `added`, `changed` + and `removed` callbacks is now unordered; for ordering information + use `addedAt`, `changedAt`, `removedAt`, and `movedTo`. Full + documentation is in the [`observe` docs](http://docs.meteor.com/#observe). + All callers of `observe` need to be updated. -* Meteor now correctly represents empty documents in Collections. + * Changed the API for publish functions that do not return a cursor + (ie functions that call `this.set` and `this.unset`). See the + [`publish` docs](http://docs.meteor.com/#meteor_publish) for the new + API. -* Reduced unecessary MongoDB re-polling of live queries. -* Added `Session.setDefault(key, value)` so you can easily provide initial - values for session variables that will not be clobbered on hot code push. +* New Features + + * Added new [`observeChanges`](http://docs.meteor.com/#observe_changes) + API for keeping track of the contents of a cursor more efficiently. + + * There is a new reactive function on subscription handles: `ready()` + returns true when the subscription has received all of its initial + documents. + + * Added `Session.setDefault(key, value)` so you can easily provide + initial values for session variables that will not be clobbered on + hot code push. + + * You can specify that a collection should use MongoDB ObjectIDs as + its `_id` fields for inserts instead of strings. This allows you to + use Meteor with existing MongoDB databases that have ObjectID + `_id`s. If you do this, you must use `EJSON.equals()` for comparing + equality instead of `===`. See http://docs.meteor.com/#meteor_collection. + + * New [`random` package](http://docs.meteor.com/#random) provides + several functions for generating random values. The new + `Random.id()` function is used to provide shorter string IDs for + MongoDB documents. `Meteor.uuid()` is deprecated. + + * `Meteor.status()` can return the status `failed` if DDP version + negotiation fails. + + +* Major Performance Enhancements + + * Rewrote subscription duplication detection logic to use a more + efficient algorithm. This significantly reduces CPU usage on the + server during initial page load and when dealing with large amounts + of data. + + * Reduced unnecessary MongoDB re-polling of live queries. Meteor no + longer polls for changes on queries that specify `_id` when + updates for a different specific `_id` are processed. This + drastically improves performance when dealing with many + subscriptions and updates to individual objects, such as those + generated by the `accounts-base` package on the `Meteor.users` + collection. -* Improved UI for running tinytest package tests in-browser. * Upgraded UglifyJS2 to version 2.2.5 + +Patches contributed by GitHub users awwx and michaelglenadams. + + + ## v0.5.6 * Fix 0.5.5 regression: Minimongo selectors matching subdocuments under arrays