python-dependency-injector/docs/main/changelog.rst

683 lines
18 KiB
ReStructuredText
Raw Normal View History

2015-07-28 09:46:35 +03:00
Changelog
=========
2015-08-31 16:31:38 +03:00
This document describes all the changes in *Dependency Injector* framework
that were made in every particular version.
2015-08-31 16:31:38 +03:00
From version 0.7.6 *Dependency Injector* framework strictly
follows `Semantic versioning`_
2018-07-24 23:14:08 +03:00
3.12.3
------
- Fix bug `#198 <https://github.com/ets-labs/python-dependency-injector/issues/198>`_.
- Regenerate C sources using Cython 0.28.4.
2018-07-24 23:14:08 +03:00
2018-07-03 19:31:51 +03:00
3.12.2
------
- Apply code style fixes to "services_v2" example miniapp.
2018-07-02 16:47:46 +03:00
3.12.1
------
2018-06-27 19:29:55 +03:00
- Update main page example from "services_v1" to "services_v2".
- Fix few typos on main page.
2018-06-27 19:29:55 +03:00
- Add new example miniapp "password_hashing".
- Add new example miniapp "services_v2".
- Rename example miniapp "services" to "services_v1".
- Fix incompatibility issue between Python 3.3, pip 10.0.0 and virtualenv
16.0.0 (`details <https://github.com/awslabs/base64io-python/issues/4>`_)
that caused failures of Python 3.3 tests on Travis.
- Regenerate C sources using Cython 0.28.3.
2018-06-22 09:52:58 +03:00
2018-04-23 19:41:53 +03:00
3.12.0
------
- Regenerate C sources using Cython 0.28.2.
2018-02-22 16:32:14 +03:00
3.11.3
------
- Fix padding problem in code samples in docs.
2018-02-22 12:43:08 +03:00
3.11.2
------
- Fix padding problem in code samples in docs.
- Remove ``autodoc`` from the list of documentation dependencies.
3.11.1
------
- Fix small typo in documentation (thanks to James Lafa).
2018-01-24 20:59:31 +03:00
3.11.0
------
2018-01-24 21:01:46 +03:00
- Improve ``Configuration`` provider overriding logic.
- Refactor ``Configuration`` provider.
2018-01-24 21:12:10 +03:00
- Improve ``DependenciesContainer`` provider overriding logic.
2018-01-25 02:06:28 +03:00
- Update "services" example miniapp.
2018-01-24 21:01:46 +03:00
- Update "bundles" example miniapp.
3.10.0
------
- Add ``DependenciesContainer`` provider.
- Add "use_cases" example miniapp.
- Update documentation requirements to use fixed version of
``sphinxcontrib-disqus``.
2017-12-25 21:39:56 +03:00
3.9.1
-----
- Fix docs build problem (``sphinx`` is frozen on ``1.5.6`` version because of
incompatibility with ``sphinxcontrib-discus``).
- Add badge for docs.
2017-12-25 18:42:01 +03:00
3.9.0
-----
- Change initialization of declarative container, so it accepts overriding
providers as keyword arguments -
``DeclarativeContainer(**overriding_providers)``.
- Add method to dynamic catalog for setting groups of providers -
``DynamicContainer.set_providers(**providers)``.
- Add method to dynamic catalog for overriding groups of providers -
``DynamicContainer.set_providers(**overriding_providers)``.
2017-12-25 18:42:01 +03:00
- Rename ``ExternalDependency`` provider to ``Dependency``.
- Add default value for ``instance_of`` argument of ``Dependency`` provider -
``Dependency(instance_of=object)``.
- Fix bug when copying ``Configuration`` provider.
- Regenerate C sources using Cython 0.27.3.
2017-12-25 17:47:58 +03:00
- Add "bundles" example miniapp.
2017-12-21 23:48:07 +03:00
2017-11-30 12:49:13 +03:00
3.8.2
-----
- Fix padding problem in code samples in docs (part 2).
2017-11-30 12:30:41 +03:00
3.8.1
-----
- Fix padding problem in code samples in docs.
2017-11-21 12:48:15 +03:00
3.8.0
-----
- Add ``DeclarativeContainer.containers`` attribute that stores dictionary of
nested containers.
- Fix bug related to double-overridden providers (provider1 -> provider2 ->
provider3).
2017-10-30 17:52:05 +03:00
3.7.1
-----
- Add support of six 1.11.0.
2017-10-13 20:22:16 +03:00
3.7.0
-----
2017-10-13 06:06:00 +03:00
- Add ``FactoryAggregate`` provider.
2017-10-13 20:15:21 +03:00
- Add ``Provider.provider`` dynamic attribute that return new provider's
delegate (alias of method ``Provider.delegate()``).
2017-10-13 06:06:00 +03:00
- Add support of six 1.11.0.
2017-10-13 06:25:46 +03:00
- Regenerate C sources using Cython 0.27.1.
2017-10-13 06:06:00 +03:00
2017-08-08 19:10:06 +03:00
3.6.1
-----
2017-08-08 19:06:03 +03:00
- Regenerate C sources using Cython 0.26.
2017-07-09 23:41:32 +03:00
3.6.0
-----
2017-07-09 23:29:40 +03:00
- Add ``CallableDelegate`` provider.
2017-07-09 23:17:39 +03:00
- Add ``FactoryDelegate`` provider.
2017-07-09 23:34:38 +03:00
- Add ``SingletonDelegate`` provider.
2017-07-09 23:17:39 +03:00
3.5.0
-----
2017-07-07 17:49:16 +03:00
- Add functionality for initializing ``Configuration`` provider with default
values.
2017-06-09 01:46:18 +03:00
3.4.8
-----
- Code style fixes in ``providers`` module.
2017-04-18 23:42:48 +03:00
2017-05-29 10:41:31 +03:00
3.4.7
-----
- Correct typo in changelog.
2017-05-29 10:19:43 +03:00
3.4.6
-----
2017-05-29 10:41:31 +03:00
- Add "Useful links" section to the "Dependency injection and inversion of
control in Python" article.
2017-05-29 10:19:43 +03:00
2017-05-17 10:58:53 +03:00
3.4.5
-----
- Remove non-ascii character from README. This character created an
installation problem on Debian (Python 3.4).
3.4.4
-----
- Add ``Provider.last_overriding`` read-only property that points to last
overriding provider, if any. If target provider is not overridden, ``None``
would be returned.
- Update example of writing custom providers.
2017-05-08 18:55:14 +03:00
- Update movie lister example miniapp.
2017-05-08 19:05:02 +03:00
- Update source of ``coveralls.io`` badge.
2017-04-19 00:00:29 +03:00
3.4.3
-----
- Update doc block for ``Provider.overriding_lock`` attribute.
2017-04-18 23:42:48 +03:00
3.4.2
-----
- Make ``Provider`` overriding methods thread safe:
``Provider.override(provider)``, ``Provider.reset_last_overriding()``,
``Provider.reset_override()``.
- Refactor storage locking of ``ThreadSafeSingleton`` provider.
2017-04-18 23:38:04 +03:00
- Fix few ``pydocstyle`` errors in examples.
2017-03-26 16:32:13 +03:00
2017-04-07 09:19:48 +03:00
3.4.1
-----
- Update movie lister example miniapp with ``AbstractFactory`` provider.
2017-04-06 12:33:19 +03:00
3.4.0
-----
2017-04-06 18:17:06 +03:00
- Add ``AbstractCallable`` provider.
- Add ``AbstractFactory`` provider.
- Add ``AbstractSingleton`` provider.
- Optimize calling of overridden providers (~15% faster).
2017-04-06 12:33:19 +03:00
2017-03-29 01:34:08 +03:00
3.3.7
-----
- Fix minor bug related to patch of ``Configuration`` provider in version
3.3.6 - special attribues were identified by formula ``__{text}`` - now
they are identified by formula ``__{text}__``, that is more correct
according to Python Data Model.
2017-03-29 00:22:54 +03:00
3.3.6
-----
- Patch ``Configuration`` provider to raise ``AttributeError`` when there
is an attempt to access special attribute like ``__module__`` or
``__name__`` (this behaviour is identical to behaviour of ``object``).
- Apply minor refactoring for ``providers`` module.
- Remove cythonization from travis building process.
2017-03-26 23:01:00 +03:00
3.3.5
-----
- [Refactoring] Consolidate all containers in
``dependency_injector.containers`` module.
2017-03-26 16:32:13 +03:00
- [Refactoring] Consolidate all providers in
``dependency_injector.providers`` module.
3.3.4
-----
- Change ``__module__`` attribute for all members of
``dependency_injector.containers`` package to point to package, but not to
package modules.
- Regenerate C sources using Cython 0.25.2.
2016-12-02 21:47:57 +03:00
2017-03-15 18:28:03 +03:00
3.3.3
-----
- Update services miniapp example.
2017-02-28 23:31:19 +03:00
3.3.2
-----
- Add `disqus.com <https://disqus.com/>`_ comments for documentation.
- Fix reference to version in api docs.
- Fix title underline in containers api docs.
- Update documentation copyright year.
- Update example version in installation document.
2017-02-01 14:08:45 +03:00
3.3.1
-----
- Add some improvements to the documentation.
2017-01-30 01:12:08 +03:00
3.3.0
-----
- Add support of Python 3.6.
2017-01-30 00:39:15 +03:00
3.2.5
-----
- Add description of structure into README.
- Fix documentation errors.
2017-01-11 01:14:32 +03:00
3.2.4
-----
- Switch to single version of documentation for getting shorter urls (without
``/en/stable/``). Add appropriate redirects for compatibility with previous
links.
- Update copyright date.
2016-12-28 00:10:52 +03:00
3.2.3
-----
- Add examples into README.
- Make minor documentation updates.
3.2.2
-----
- Change name of version variable to follow PEP8: ``VERSION`` -> ``__version__``.
2016-12-02 22:04:17 +03:00
3.2.1
-----
- Update ``services`` miniapp example.
2016-12-02 21:47:57 +03:00
3.2.0
-----
2016-12-02 16:01:52 +03:00
- Add ``Configuration`` provider for late static binding of configuration
options.
2016-11-11 19:36:35 +03:00
2016-11-23 23:26:14 +03:00
3.1.5
-----
- Refactor provider internals: C functions naming scheme and code layout.
- Add Terrence Brannon (metaperl) to the list of contributors.
2016-11-18 00:35:27 +03:00
3.1.4
-----
- Move ``inline`` functions from class level to module level for removing them
from virtual table and enable inlining.
2016-11-15 15:32:23 +03:00
3.1.3
-----
- Fix flake8 ``E305`` error in examples.
2016-11-15 15:28:12 +03:00
3.1.2
-----
- Remove ``public`` (``extern``) modifier utils constants.
- Fix flake8 ``E305`` error in examples.
2016-11-13 12:52:09 +03:00
3.1.1
-----
- Fix minor typo in README.
2016-11-12 00:08:47 +03:00
3.1.0
-----
- Add "Services mini application" example.
- Fix minor error in ``Factory`` provider API doc.
2016-11-11 19:36:35 +03:00
3.0.1
-----
- Add ``*.c`` source files under version control.
- Change keywords.
2016-11-11 18:30:13 +03:00
3.0.0
-----
2016-11-11 18:05:25 +03:00
- **Providers**
1. All providers from ``dependency_injector.providers`` package are
implemented as C extension types using Cython.
2. Add ``BaseSingleton`` super class for all singleton providers.
3. Make ``Singleton`` provider not thread-safe. It makes performance of
``Singleton`` provider 10x times faster.
4. Add ``ThreadSafeSingleton`` provider - thread-safe version of
``Singleton`` provider.
5. Add ``ThreadLocalSingleton`` provider - ``Singleton`` provider that uses
thread-local storage.
6. Remove ``provides`` attribute from ``Factory`` and ``Singleton``
providers.
7. Add ``set_args()`` and ``clear_args()`` methods for ``Callable``,
``Factory`` and ``Singleton`` providers.
- **Containers**
1. Module ``dependency_injector.containers`` was splitted into submodules
without any functional changes.
- **Utils**
1. Module ``dependency_injector.utils`` is splitted into
``dependency_injector.containers`` and ``dependency_injector.providers``.
- **Miscellaneous**
1. Remove ``@inject`` decorator.
2. Add makefile (``clean``, ``test``, ``build``, ``install``, ``uninstall``
& ``publish`` commands).
3. Update repository structure:
1. Sources are moved under ``src/`` folder.
2. Tests are moved under ``tests/unit/`` folder.
2016-10-30 14:19:39 +03:00
2016-10-19 20:25:16 +03:00
2016-10-20 17:17:52 +03:00
2.2.10
------
- Fix typo in README.
2016-10-19 20:25:16 +03:00
2.2.9
-----
- Add github badges to readme and docs index pages.
- Update service names in services example miniapp.
2016-10-19 20:20:36 +03:00
- Create engines & cars example miniapp.
2016-09-23 00:35:51 +03:00
2016-10-13 10:42:52 +03:00
2.2.8
-----
- Move fixtures to separate module in movie lister example.
2016-10-12 10:45:26 +03:00
2.2.7
-----
- Fix typo in README.
2016-10-12 10:42:02 +03:00
2.2.6
-----
- Update README.
- Update docs index page.
2016-10-11 23:52:57 +03:00
2.2.5
-----
- Fix typo in README.
2016-10-11 17:46:56 +03:00
2.2.4
-----
- Update README.
2016-10-07 18:04:18 +03:00
2.2.3
-----
- Update README.
2016-10-07 16:59:22 +03:00
2.2.2
-----
- Update README.
2.2.1
-----
- Update examples.
2016-09-23 00:35:51 +03:00
2.2.0
-----
2016-09-23 00:24:45 +03:00
- Deprecate ``inject`` decorator.
2016-08-19 01:16:43 +03:00
2016-09-07 11:00:24 +03:00
2.1.1
-----
- Normalize package names by PEP-503.
2016-08-19 01:16:43 +03:00
2.1.0
-----
- Add ``ThreadLocalSingleton`` and ``DelegatedThreadLocalSingleton`` providers.
- Add documentation section about singleton providers and multi-threading.
- Update API docs of creational providers.
2016-04-20 17:38:19 +03:00
2016-05-17 21:01:08 +03:00
2.0.0
------
2016-05-22 16:25:17 +03:00
- Introduce new injections style for ``Callable``, ``Factory`` &
``Singleton`` providers.
2016-06-09 19:44:05 +03:00
- Drop providers: ``Static``, ``Value``, ``Function``, ``Class``, ``Config``.
- Increase performance of making injections in 2 times (+100%).
- Drop method injections.
2016-06-09 19:44:05 +03:00
- Simplify providers overriding system.
- Replace ``catalogs`` package with ``containers`` module.
- Drop all backward compatibilities for 1.x.
- Refactor most of the components.
- Update documentation.
2016-05-17 21:01:08 +03:00
1.17.0
------
- Add ``add_injections()`` method to ``Callable``, ``DelegatedCallable``,
``Factory``, ``DelegatedFactory``, ``Singleton`` and ``DelegatedSingleton``
providers.
- Fix bug with accessing to declarative catalog attributes from instance level.
2016-04-27 02:04:18 +03:00
1.16.8
------
- Fix some typos in introduction section of documentation.
2016-04-26 13:14:39 +03:00
1.16.7
------
- Add some changes into introduction section of documentation.
1.16.5
------
- Move project to ``https://github.com/ets-labs/python-dependency-injector``.
- Move project docs to ``http://python-dependency-injector.ets-labs.org/``.
2016-04-23 15:24:38 +03:00
1.16.4
2016-04-23 15:00:06 +03:00
------
- Add some documentation improvements.
2016-04-20 18:15:23 +03:00
1.16.1
2016-04-20 17:38:19 +03:00
------
2016-04-10 17:26:30 +03:00
- Add ``@copy`` decorator for copying declarative catalog providers.
- Add line numbers for all code samples in documentation.
2016-04-20 17:38:19 +03:00
- Add "Examples" section into documentation.
- Add "Movie Lister" example.
- Add "Services" example.
2016-04-20 14:19:54 +03:00
- Move project documentation into organisation's domain
(dependency-injector.ets-labs.org).
1.15.2
------
- [Refactoring] split ``catalogs`` module into smaller modules,
``catalogs`` module become a package.
- [Refactoring] split ``providers`` module into smaller modules,
``providers`` module become a package.
- Update introduction documentation.
2015-12-28 18:40:26 +03:00
2016-03-17 03:05:54 +03:00
1.15.1
------
- Update package information and documentation.
2016-03-14 01:08:12 +03:00
1.15.0
------
- Add ``Provider.provide()`` method. ``Provider.__call__()`` become a
reference to ``Provider.provide()``.
- Add provider overriding context.
- Update main examples and README.
2016-03-11 14:01:26 +03:00
1.14.11
-------
- Update README.
2016-03-09 12:39:05 +03:00
1.14.10
-------
- Add "catalog-providing-callbacks" example and several tests for it.
2016-03-01 18:04:01 +03:00
1.14.9
------
- Add ``override`` decorator in providers module.
- Add storing of originally decorated instance in ``inject`` decorator.
- Add several refactorings.
- Switch to ``pydocstyle`` tool from ``pep257``.
2016-02-27 01:19:09 +03:00
1.14.8
------
- Update README.
2016-02-27 01:13:42 +03:00
1.14.7
------
- Add one more example in README (inline providers and injections).
2016-02-27 01:07:32 +03:00
1.14.6
------
- Add ``cls`` alias for ``provides`` attributes of ``Factory``,
``DelegatedFactory``, ``Singleton`` and ``DelegatedSingleton`` providers.
2016-02-26 20:34:30 +03:00
1.14.5
------
- Fix typo in provider's error message.
2016-02-08 02:42:21 +03:00
1.14.4
------
- Update documentation.
2016-02-08 01:37:39 +03:00
1.14.3
------
- Optimize internals of providers.
- Optimize ``Callable`` provider.
- Optimize ``Factory`` provider.
- Optimize ``Singleton`` provider.
2016-02-04 23:55:41 +03:00
1.14.2
------
- Update documentation and description.
2016-02-02 00:18:07 +03:00
1.14.1
------
- Add meta description & keywords on docs index page.
2016-01-25 16:05:25 +03:00
1.14.0
------
- Drop support of Python 3.2.
2016-01-11 12:30:50 +03:00
1.13.2
------
- Update PyPi info.
2016-01-11 12:20:29 +03:00
1.13.1
------
- Transfer ownership to `ETS Labs <https://github.com/ets-labs>`_.
2015-12-28 18:40:26 +03:00
1.13.0
------
- Add ``DelegatedCallable`` provider.
- Add ``DelegatedFactory`` provider.
- Add ``DelegatedSingleton`` provider.
2015-12-28 18:40:26 +03:00
- Add some documentation improvements.
2015-12-15 18:02:21 +03:00
1.12.0
------
- Add possibility to specialize ``Factory`` provided type.
- Add possibility to specialize ``Singleton`` provided type.
2015-12-15 17:49:07 +03:00
- Add possibility to specialize ``DeclarativeCatalog`` provider type.
- Add possibility to specialize ``DynamicCatalog`` provider type.
2015-12-11 23:46:49 +03:00
- Make some refactorings for providers.
2015-12-11 12:40:00 +03:00
1.11.2
------
- Improve representation of providers and injections.
2015-11-26 16:34:14 +03:00
2015-11-30 13:09:56 +03:00
1.11.1
2015-11-26 16:50:12 +03:00
------
Previous state of *Dependency Injector* framework (0.11.0 version) is
considered to be production ready / stable, so current release is considered
to be the first major release.
- Increase major version.
- Backward compatibility with all previous versions above 0.7.6 has been saved.
2015-11-26 16:34:14 +03:00
0.11.0
------
- Rename ``AbstractCatalog`` to ``DeclarativeCatalog``
(with backward compatibility).
2015-11-26 16:34:14 +03:00
- Rename ``catalog`` module to ``catalogs`` with backward compatibility.
- Implement dynamic binding of providers for ``DeclarativeCatalog``.
- Add ``DynamicCatalog``.
- Change restrictions for providers-to-catalogs bindings - provider could be
bound to several catalogs with different names.
- Restrict overriding of providers by themselves.
- Restrict overriding of catalogs by themselves.
- Make ``DeclarativeCatalog.last_overriding`` attribute to be ``None`` by
default.
- Make ``Provider.last_overriding`` attribute to be ``None`` by
default.
- Refactor catalogs and providers modules.
- Add API documentation
- Improve user's guides and examples.
2015-11-04 17:32:04 +03:00
0.10.5
------
2015-11-26 16:34:14 +03:00
- Add more representable implementation for ``AbstractCatalog`` and
``AbstractCatalog.Bundle``.
2015-11-04 17:32:04 +03:00
2015-11-02 11:58:09 +03:00
0.10.4
------
- Remove VERSION file from MANIFEST.in.
2015-10-26 13:52:52 +03:00
0.10.3
------
- Update example docblocks.
0.10.2
------
- Fix bug with injecting entities that implement ``__getattr__``.
2015-10-23 17:04:39 +03:00
0.10.1
------
- Update some examples.
2015-10-23 16:49:07 +03:00
0.10.0
------
2015-11-26 16:34:14 +03:00
- Add functionality for creating ``AbstractCatalog`` provider bundles.
- Improve ``AbstractCatalog`` inheritance.
- Improve ``AbstractCatalog`` overriding.
2015-10-11 15:34:21 +03:00
- Add images for catalog "Writing catalogs" and "Operating with catalogs"
examples.
- Add functionality for using positional argument injections with
2015-11-26 16:34:14 +03:00
``Factory``, ``Singleton``, ``Callable`` providers and
``inject`` decorator.
- Add functionality for decorating classes with ``@inject``.
- Add ``Singleton.injections`` attribute that represents a tuple of all
``Singleton`` injections (including args, kwargs, attributes and methods).
- Add ``Callable.injections`` attribute that represents a tuple of all
``Callable`` injections (including args and kwargs).
- Add optimization for ``Injection.value`` property that will compute
type of injection once, instead of doing this on every call.
2015-11-26 16:34:14 +03:00
- Add ``VERSION`` constant for verification of currently installed version.
- Add support of Python 3.5.
- Add support of six 1.10.0.
- Add minor refactorings and code style fixes.
2015-09-03 00:27:56 +03:00
2015-09-14 10:53:24 +03:00
0.9.5
-----
- Change provider attributes scope to public.
2015-11-26 16:34:14 +03:00
- Add ``Factory.injections`` attribute that represents a tuple of all
``Factory`` injections (including kwargs, attributes and methods).
2015-09-14 10:53:24 +03:00
0.9.4
-----
- Add minor documentation fixes.
2015-09-04 02:33:15 +03:00
0.9.3
-----
- Implement thread safety.
2015-09-04 02:33:15 +03:00
2015-09-03 16:00:23 +03:00
0.9.2
-----
- Add minor refactorings.
2015-09-03 00:27:56 +03:00
0.9.1
-----
- Add simplified syntax of kwarg injections for ``di.Factory`` and
``di.Singleton`` providers:
``di.Factory(SomeClass, dependency1=injectable_provider_or_value)``.
- Add simplified syntax of kwarg injections for ``di.Callable`` provider:
``di.Callable(some_callable, dependency1=injectable_provider_or_value)``
- Add simplified syntax of kwarg injections for ``@di.inject`` decorator:
``@di.inject(dependency1=injectable_provider_or_value)``.
- Optimize ``@di.inject()`` decorations when they were made several times for
the same callback.
2015-09-01 00:37:21 +03:00
- Add minor refactorings.
- Fix of minor documentation issues.
2015-08-31 16:36:31 +03:00
0.8.1
2015-08-31 16:31:38 +03:00
-----
- ``Objects`` is renamed to ``Dependency Injector``.
2015-08-17 22:44:28 +03:00
0.7.8
-----
- Fixing @inject import bug in examples.
2015-08-05 17:44:22 +03:00
0.7.7
-----
- Fixing minor bug in concept example.
0.7.6
-----
- Adding support of six from 1.7.0 to 1.9.0.
- Factory / Singleton providers are free from restriction to operate with
classes only. This feature gives a change to use factory method and
functions with Factory / Singleton providers.
- All attributes of all entities that have to be protected was renamed using
``_protected`` manner.
- Providers extending was improved by implementing overriding logic in
``Provider.__call__()`` and moving providing logic into
``Provider._provide()``.
- ``NewInstance`` provider was renamed to ``Factory`` provider.
``NewInstance`` still can be used, but it considered to be deprecated and
will be removed in futher releases.
- ``@inject`` decorator was refactored to keep all injections in
``_injections`` attribute of decorated callback. It will give a possibilty to
track all the injections of particular callbacks and gives some performance
boost due minimizing number of calls for doing injections.
- A lot of documentation updates were made.
- A lot of examples were added.
- Some minor refactorings were done.
Previous versions
-----------------
- While *Objects* was in alpha state, changes were not tracked.
2017-02-28 23:05:00 +03:00
.. disqus::
.. _Semantic versioning: http://semver.org/