aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 8f19774eef1f6b145a6ed4ad78c951e07e8a2d9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243

Unreleased

v0.4.0 - 2022-10-01

Bug Fixes

  • prevent problems caused by non send + sync traits
  • add missing semicolon in the factory macro

Build System/Dependency Changes

  • bump versions to 0.4.0
  • add required features for the async-factory example
  • improve async dependencies

Chores

  • remove repetition of allowing clippy::module_name_repetitions

Code Refactoring

  • remove unused import in DI container module
  • remove IFactory from public API
  • remove repetition of declaring factory interfaces
  • reorganize modules in the macros crate
  • make the async & non-async DI container bind methods must_use
  • add put factory return types in TransientPtr automatically
  • prevent look for default factory without factory feature
  • make async DI container be used inside of a Arc
  • make DI container be used inside of a Rc
  • improve DI container cast errors
  • remove braces from expected injectable macro input
  • rename the factory macro flag 'async' to 'threadsafe'
  • remove unused import of ItemTrait
  • improve async DI container cast errors
  • replace arc cast panic with an error
  • limit FactoryPtr & AnyFactory to the factory feature
  • make DI container have single get function
  • move specifying binding scope to a binding scope configurator
  • improve private method names & clean up InjectableImpl

Code Testing

  • move some factory function types to type aliases

Documentation Changes

  • improve item links in the injectable macro
  • fix unresolved link to TransientPtr
  • make IFood in async example Send + Sync
  • fix ambiguous link to the factory macro
  • add missing modules in the async example
  • add async support to readme
  • improve & add examples
  • use anyhow in the unbound example
  • correct the example in the readme
  • add CI shield to readme
  • update the DI container example
  • remove license shield from readme

Features

  • add bind async default factories to async DI container
  • add binding async factories to async DI container
  • add factory macro async flag
  • allow factories to access async DI container
  • allow factories access to DI container
  • add a threadsafe flag to the declare_default_factory macro
  • implement async functionality
  • implement named bindings

Style Improvements

  • add rustfmt config options

BREAKING CHANGE

The to_default_factory method of the blocking and async DI containers now expect a function returning another function

The to_factory & to_default_factory methods of AsyncBindingBuilder now expects a function returning a factory function

The async DI container is to be used inside of a Arc & it also no longer implements Default

Factory types should now be written with the Fn trait instead of the IFactory trait and the to_factory & to_default_factory methods of BindingBuilder now expect a function returning a factory function

The DI container is to be used inside of a Rc & it also no longer implements Default

The injectable macro no longer expects braces around it's flags

FactoryPtr has been limited to the factory feature

The DI container get_singleton & get_factory functions have been replaced by the get function now returning a enum

Specifying the scope of a DI container binding is now done with a binding scope configurator

v0.3.0 - 2022-08-21

Bug Fixes

  • make DI container get_factory calls in the injectable macro valid

Build System/Dependency Changes

  • bump versions to 0.3.0
  • change license in manifests to LGPL-2.1-only

Chores

  • change license to MIT or Apache-2.0

Code Refactoring

  • change errors to be more sane
  • make the declare_default_factory macro take a ty
  • only re-export DIContainer
  • add Cargo feature for preventing circular dependencies
  • move creating a dependency trace to it's own function
  • hide AnyFactory from docs
  • limit the factory macro to the factory feature

Code Testing

  • correct DI container bind tests
  • reduce repetition in DI container tests

Documentation Changes

  • add v0.3.0 to changelog
  • change project descriptions to describe it as a framework
  • fix declare_default_factory example
  • add injection of 3rd-party structs & traits to features list
  • add example for displaying a unbound interface error
  • simplify with-3rd-party example
  • add a example that uses a 3rd party library
  • fix IFactory example use statement
  • improve the factory example
  • correct examples
  • fix DI container module documentation
  • add license shield to readme
  • add factory feature notices

Features

  • allow bind interface to default factory
  • prevent binding the same interface more than once
  • add detection and prevention of circular dependencies
  • add hide impl of Injectable from documentation

BREAKING CHANGE

Major improvements have been made to error types and the error_stack crate is no longer used

Only DIContainer is re-exported from the di_container module

The 'to' and 'to_factory' methods of BindingBuilder now return 'Result'

v0.2.1 - 2022-08-01

Build System/Dependency Changes

  • bump versions to 0.2.1

Documentation Changes

  • add v0.2.1 to changelog
  • add doc comments & deny missing docs
  • add contributing section in readme

v0.2.0 - 2022-07-31

Build System/Dependency Changes

  • bump versions to 0.2.0
  • add docs.rs all-features flag

Code Refactoring

  • tidy up DI container internals
  • add Intertrait cast error
  • rename InterfacePtr to TransientPtr
  • add back Intertrait tests & Rc support
  • hide castable factory from docs
  • clean up intertrait lib

Documentation Changes

  • add v0.2.0 to changelog
  • add binding singletons to list of features
  • add asynchronous functionality to todo
  • add generics support to list of features

Features

  • add injecting singletons into constructors
  • implement binding singletons
  • add support for generics

Performance Improvements

  • use ahash in DI container

BREAKING CHANGE

InterfacePtr has been renamed to TransientPtr

v0.1.1 - 2022-07-22

Build System/Dependency Changes

  • bump versions to 0.1.1
  • add local path to macros dependency

Code Refactoring

  • make factories an optional feature
  • re-export dependency of error_stack
  • reorganize folder hierarchy

Documentation Changes

  • add v0.1.1 to changelog
  • add optional factory feature name in readme
  • add changelog
  • fix typo in example in readme
  • add shields, examples & more to readme
  • rename example folder to examples
  • use syrette from crates.io in example

v0.1.0 - 2022-07-20

Build System/Dependency Changes

  • use syrette_macros from crates.io

Chores

  • add repository & keywords to Cargo manifests

Code Refactoring

  • use aggressive clippy linting
  • remove unused intertrait code
  • rename the castable_to macro to declare_interface
  • reduce the capabilities of the castable_to macro
  • reorganize and improve macros
  • use common pointer type aliases
  • add dedicated interface & error modules
  • move injectable type provider to own file

Code Testing

  • add DI container unit tests

Documentation Changes

  • replace symlinked readme with a copy
  • add readme symlink to syrette
  • improve and clean up doc comment examples
  • split example into multiple files
  • correct declare_interface macro example
  • remove the crate root example
  • add example
  • add documentation comments
  • add readme

Features

  • add binding factories to DI container
  • add DI container

Style Improvements

  • group imports
  • add rustfmt config