## [0.9.0] 2017-12-03

## Changes

This is the first release in a long time. 
Quite a few changes have accumulated since `0.8.1`, including multiple breaking
changes.

### Custom derive & macros

Juniper has gained custom derive implementations for input objects, objects and
enums. 

* `#[derive(GraphQLInputObject)]`
* `#[derive(GraphQLEnum)]`
* `#[derive(GraphQLObject)]`

The `graphql_enum!` and `graphql_input_object!` macros did not provide any more
benefits, so they have been removed! 
All functionality is now covered by custom derive.
Check the [docs](https://graphql-rust.github.io) to find out more.

### Web framework integrations - Iron & Rocket

The iron and rocket integrations were removed from the main crate, and are now
available via the [juniper_iron](https://crates.io/crates/juniper_iron) and
[juniper_rocket](https://crates.io/crates/juniper_rocket) crates.

### FieldError rewrite (custom data)

The `FieldError` type now supports custom data with the `Value` type from 
serde_json. Use this to populate the `data` field in returned errors.

This also means that try! and `?` now work in resolvers, which is quite nice.

Also, the `ResultExt` extension and the `jtry!` macro were removed, since they
are redundant now!

### Dynamic Schemas

Juniper has gained support for dynamic schemas, thanks to @srijs.

That also means the type of `RootNode` has changed to include a lifetime.

The repository was restructured to a multi crate workspace to enable several new 
features like custom_derive and an extracted parser.

#[#66](https://github.com/graphql-rust/juniper/pull/66)

### Data Type Integrations

Integrations with multiple popular crates was added to make working with them
easier.

* uuid
* url
* chrono

### Field Order

To better comply with the specification, order of requested fields is
now preserved.

[#82](https://github.com/graphql-rust/juniper/issues/82

### From/ToInputValue

The `::from` and `::to` methods in `From/ToInputValue` were renamed to 
`from/to_input_value()` to not conflict with other methods.

[#90](https://github.com/graphql-rust/juniper/pull/90)

### Other changes

* Several small performance improvements
* Use [fnv](https://github.com/servo/rust-fnv) hash map for better performance


## Contributors

A big shoutout to the many contributors for this version, sorted alphabetically.

* Cameron Eldridge <cameldridge+git@gmail.com>
* Christian Legnitto <christian@legnitto.com>
* Jacob Haslehurst <jacob@haslehurst.net>
* Jane Keibler <wanderingelf14@gmail.com>
* Magnus Hallin <mhallin@fastmail.com>
* rushmorem <rushmore@webenchanter.com>
* Rushmore Mushambi <rushmore@webenchanter.com>
* Sagie Gur-Ari <sagiegurari@gmail.com>
* Sam Rijs <srijs@airpost.net>
* Stanko Krtalić <stanko.krtalic@gmail.com>
* theduke <chris@theduke.at>
* thomas-jeepe <penguinSoccer@outlook.com>