- moved the library-frame detection from a processor to the stacktrace collection ([\113](https://github.com/elastic/apm-agent-python/pull/113)).
- added settings to enable/disable source code collection and local variables collection for errors and transactions ([\117](https://github.com/elastic/apm-agent-python/pull/117))
- added `service.environment` to provide an environment name (e.g. "production", "staging") ([\123](https://github.com/elastic/apm-agent-python/pull/123))
- added `transaction.id` to errors to better correlate errors with transactions ([\122](https://github.com/elastic/apm-agent-python/pull/122))
- added `transaction_sample_rate` to define a rate with which transactions are sampled ([\116](https://github.com/elastic/apm-agent-python/pull/116))
- added `error.handled` to indicate if an exception was handled or not ([\124](https://github.com/elastic/apm-agent-python/pull/124)).
- added `transaction_max_spans` setting to limit the amount of spans that are recorded per transaction ([\127](https://github.com/elastic/apm-agent-python/pull/127))
- added configuration options to limit captured local variables to a certain length ([\130](https://github.com/elastic/apm-agent-python/pull/130))
- added options for configuring the amount of context lines that are captured with each frame ([\136](https://github.com/elastic/apm-agent-python/pull/136))
- added support for tracing queries formatted as [`psycopg2.sql.SQL`](http://initd.org/psycopg/docs/sql.html) objects ([\#148](https://github.com/elastic/apm-agent-python/pull/148))
- switched to `time.perf_counter` as timing function on Python 3 ([\138](https://github.com/elastic/apm-agent-python/pull/138))
- added option to disable capturing of request body ([\151](https://github.com/elastic/apm-agent-python/pull/151))
- BREAKING: Several settings and APIs have been renamed ([\111](https://github.com/elastic/apm-agent-python/pull/111), [\#119](https://github.com/elastic/apm-agent-python/pull/119), [\#143](https://github.com/elastic/apm-agent-python/pull/143)):
- The decorator for custom instrumentation, `elasticapm.trace`, is now `elasticapm.capture_span`
- The setting `traces_send_frequency` has been renamed to `flush_interval`. The name of the analogous environment variable changed from `ELASTIC_APM_TRACES_SEND_FREQ` to `ELASTIC_APM_FLUSH_INTERVAL`
- The `app_name` setting has been renamed to `service_name`. The name of the analogous environment variable changed from `ELASTIC_APM_APP_NAME` to `ELASTIC_APM_SERVICE_NAME`.
- `app_name` arguments to API calls in the whole code base changed to `service_name`.
- The `app_version` setting has been renamed to `service_version`. The name of the analogous environment variable changed from `ELASTIC_APM_APP_VERSION` to `ELASTIC_APM_SERVICE_VERSION`.
- `context.request.url.raw` has been renamed to `context.request.url.full` ([\121](https://github.com/elastic/apm-agent-python/pull/121))
- BREAKING: added `elasticapm.set_custom_context` in favor of the more generic `set_custom_data` function ([\133](https://github.com/elastic/apm-agent-python/pull/133))
- BREAKING: `include_patterns` and `exclude_patterns` now use shell globs instead of regular expressions, and are matched against the full path file path of the module, not against the module name ([\137](https://github.com/elastic/apm-agent-python/pull/137))
- BREAKING: renamed several configuration options to align better with other language agents ([\145](https://github.com/elastic/apm-agent-python/pull/145)):
- `disable_instrumentation` became `instrument` and inverted its meaning
- `max_event_queue_length` became `max_queue_size`
- `timeout` became `server_timeout`