# ObjCMongoDB Release History

## v0.12.0
December 26, 2014

Changes:

- Deprecated `-[MongoDBCollection runCommandWithDictionary:onDatabaseName:error]`.
  Instead, use one of the following:
   - `-runCommandWithName:value:arguments:onDatabaseName:`
   - `-runCommandWithOrderedDictionary:onDatabaseName:error:`
- Add support for creating indexes on geospatial spherical fields.
- Minor optimization to cache C write concern objects as intended.

## v0.11.0
March 24, 2014

Changes:

- Added authentication method `-[MongoConnection authenticate:username:password:error]`
- Clear warnings under iOS

## v0.10.2
December 7, 2013

Update module paths for mongo-c-driver

The submodule URL of the 10gen official repository changed. Even worse, the
old URL points to a new, unrelated library. After pulling this version, run:

```
git submodule sync
git submodule update
```

## v0.10.1
September 29, 2013

Actually upgrade to Mongo C Driver v0.8.1.

## v0.10.0
September 29, 2013

Changes:

- [CocoaPods][] support
- Continuous integration builds on [Travis][] for Mac and iOS
- Upgraded to Mongo C Driver v0.8.1, which likely is the last official
  release before 10gen transitions to libmongoc
- Use -[NSException raise:] instead of NSParameterAssert
- Prefixed constant in MongoConnection.h

Thanks for the assistance @alloy and @henrikhodne!

[CocoaPods]: http://cocoapods.org/
[Travis]: https://travis-ci.org/paulmelnikow/ObjCMongoDB

## v0.9.7
July 4, 2013

The submodule URL changed from an unofficial fork to the official 10gen
repository. After pulling these changes, run:

```
git submodule sync
git submodule update
```

Changes:

 -  Fix memory leaks under manual retain–release
 -  Switch from the unofficial fork of the C driver to the official 10gen
    repository
 -  Update memory ownership based on improvements in the C driver
 -  Minor refactoring, compilation fixes, and bug fixes

## v0.9.6
March 16, 2013

Be sure to add these files to your existing projects:

 -  NSDictionary+BSONAdditions.[hm]
 -  MongoTypes.[hm]
 -  MongoConnection+Diagnosics.[hm]

Changes:

 -  Add support for iOS
 -  Add streamlined interface `[dict BSONDocument]` to replace
    `[BSONEncoder documentForDictionary:dict]`
 -  `+[BSONDocument documentForObject:restrictsKeyNamesForMongoDB:]` is now
    `+[BSONDocument documentForObject:restrictingKeyNamesForMongoDB:]`
 -  `+[BSONDocument documentForDictionary:restrictsKeyNamesForMongoDB:]` is now
    `+[BSONDocument documentForDictionary:restrictingKeyNamesForMongoDB:]`
 -  Allow mutating the write concern on MongoConnection
 -  Add support to MongoDBCollection for creating and listing indexes
 -  Add support for dropping collections
 -  Add support for diagnostic commands
 -  Fix a bug that prevented driver error descriptions from populating NSError
    objects
 -  Allow passing nil blocks to reset the default fuzz and increment functions
 -  Standardize exception throwing using [NSException raise:format:]
 -  Prevent compilation on platforms using the legacy runtime
 -  Remove support for automatically encoding the Core Data model version hash

## v0.9.5
February 4, 2013

Be sure to add these files to your existing projects:

 -  NSString+BSONAdditions.[hm]
 -  NSData+BSONAdditions.[hm]
 -  NSArray+MongoAdditions.[hm]
 -  MongoWriteConcern.[hm]

Changes:

 -  Upgrade to driver v0.7.1
 -  MongoConnection has a configurable write concern, an instance of
    MongoWriteConcern. The default is _acknowledged writes_.
 -  MongoDBCollection write methods take an optional write concern which
    overrides the connection's write concern. For updates, MongoUpdateRequest
    has an optional write concern property.
 -  `-[MongoDBCollection collection:]` is now
    `-[MongoDBCollection collectionWithName:]`
 -  `-[MongoConnection connectToReplicaSet:seed:error]` is now
    `-[MongoConnection connectToReplicaSet:seedArray:error]`
 -  `-[MongoConncetion dropDatabase:]` is now
    `-[MongoConnection dropDatabaseWithName:]`
 -  `-[BSONObjectID description]` now returns values like
    `510d411a1acbf9014ad6c26b` instead of
    `Object ID: "510d411a1acbf9014ad6c26b"`
 -  BSONObjectID accepts custom fuzz and increment blocks
 -  Make `-[BSONDocument description]` thread-safe and move to BSONDocument.m
 -  Avoid importing driver C headers in headers users will need to import
 -  Move initializers and factory methods not meant for public consumption
    to BSON_PrivateInterfaces.h and Mongo_PrivateInterfaces.h
 -  Rename -nativeValueType to -valueType throughout. Create BSONType enum
    mirroring native bson_type enum.
 -  Use categories instead of helper methods for NSString and NSData
 -  Replace all instances of malloc and free with calls to driver create and
    dispose functions
 -  Reduce need for `#if __has_feature(objc_arc)` by using private properties,
    factory methods, and `maybe_autorelease_and_return` macro defined in
    BSON_Helper.h.
 -  Rename `destroyOnDealloc` parameters to `destroyWhenDone` for consistency
    with parameter names of NSData initializers
 -  Where BSONDecoder and BSONIterator retain objects to keep the native
    BSON document from being deallocated, consistently name these objects
    `dependentOn`
 
## v0.9
February 2, 2013

Be sure to update these file references in your existing projects:

 -  MongoFetchRequest.[hm] -> MongoFindRequest.[hm]

In prepation for v1.0 release announcement, tweak method and class names in
public APIs for clarity.

-  MongoFetchRequest is now MongoFindRequest
-  `-[MongoDBCollection insert:error:]` is now
   `-[MongoDBCollection insertDocument:error:]`   
-  `-[MongoDBCollection insertBatch:error:]` is now
   `-[MongoDBCollection insertDocuments:error:]`
-  `-[MongoDBCollection update:error:]` is now
   `-[MongoDBCollection updateWithRequest:error:]`
-  `-[MongoDBCollection remove:error:]` is now
   `-[MongoDBCollection removeWithPredicate:error:]`
-  `-[MongoDBCollection find:error:]` is now
   `-[MongoDBCollection findWithRequest:error:]`
-  `-[MongoDBCollection cursorForFind:error:]` is now
   `-[MongoDBCollection cursorForFindRequest:error:]`
-  `-[MongoDBCollection findOne:error:]` is now
   `-[MongoDBCollection findOneWithRequest:error:]`
-  `-[MongoUpdateRequest replaceDocumentWith:]` is now
   `-[MongoUpdateRequest replaceDocumentWithDocument:]`
-  `-serverStatusForLastOperation:error` is now
   `lastOperationWasSuccessful:error`
-  `-serverStatusAsDictionaryForLastOperation` is now
   `-lastOperationDictionary`
-  When encoding NSManagedObjects, instead of raising an exception for fetched
   properties, just skip them
-  Move methods not meant for public consumption to BSON_PrivateInterfaces.h
   and Mongo_PrivateInterfaces.h
-  Remove instance variables from .h files and declare private properties
-  Prepend private methods with underscores and remove private method
   declarations from top of .m files
-  Adopt `@(1)` syntax in place of `[NSNUmber numberWithInt:1]`
-  Remove const strings for Mongo operators
-  Update for Xcode 4.6