-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathCHANGES
413 lines (330 loc) · 14.7 KB
/
CHANGES
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
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
v.11.4.1 (21 November 2024)
- Fixed potential hang in multi-threaded circuit ticking.
- Fixed potential crash in multi-threaded circuit scanning.
v.11.4.0 (15 November 2024)
- Updated fast_any submodule (incl. optimized "has value" detection).
- Greatly optimized Tick() methods by removing unnecessary I/O resets.
v.11.3.1 (21 August 2024)
- Simplified Component::GetBufferCount().
- Slightly optimized circuit wiring.
v.11.3.0 (10 August 2024)
- Updated fast_any submodule (incl. uninitialized type_id fix).
- Simplified conditionals in Circuit::Tick().
- Slightly optimized Circuit::Optimize() method.
- Reduced conditionals in circuit thread while loops.
v.11.2.0 (05 April 2024)
- Updated fast_any submodule (incl. README update).
- Renamed _ReleaseNextThread() to _ReleaseNextBuffer().
- Post-fixed all non-series entities with "Parallel".
v.11.1.3 (30 March 2024)
- Added componentsMap reserve() in Circuit::_Optimize().
- Slightly optimized Component::ConnectInput().
- Cleaned up a couple for loops.
v.11.1.2 (28 March 2024)
- Updated fast_any submodule (incl. const T& constructor).
- Added DisconnectAllComponents() call to Circuit destructor.
- Replaced operator=() with emplace() in SignalBus::SetSignal().
v.11.1.1 (21 March 2024)
- Namespaced exported plugin Create() method.
- Added thread yields after condition variable notifications.
v.11.1.0 (18 March 2024)
- Updated fast_any submodule (incl. optimized emplacement).
- Removed size() checks from SignalBus methods.
v.11.0.5 (17 March 2024)
- Bypassed _componentsParallel optimization when unused.
- Removed unmatched cppcheck suppression.
- Reverted tasks.json testing change.
v.11.0.4 (17 March 2024)
- Updated fast_any submodule (incl. optimized type checking).
v.11.0.3 (16 March 2024)
- Updated fast_any submodule (incl. optimized type checking).
v.11.0.2 (14 March 2024)
- Replaced CMake with Meson.
- Updated fast_any submodule (incl. inline cleanup).
- Cleaned up all inlines.
v.11.0.1 (12 March 2024)
- Cleaned up project structure.
v.11.0.0 (11 March 2024)
- Made DSPatch a header-only library.
- Inlined everything.
v.10.2.4 (22 February 2024)
- Added more efficient iterator loop in ParallelCircuitThread::_Run().
- Fixed readyFlags being set on outputs with no refs.
- Cleaned up some code and docs.
v.10.2.3 (16 February 2024)
- Added missing componentsParallel.clear() in RemoveAllComponents().
- Cleaned up and (slightly) optimized thread classes.
- Removed some unnecessary vector indexing and size() calls.
- Clarified what "time-consuming" actually means in the docs.
v.10.2.2 (14 February 2024)
- Simplified Component::_ScanParallel() logic.
- Removed unnecessary SetBufferCount() in ~Circuit().
- Removed deprecated ATOMIC_VAR_INIT macro.
- Pre-optimized circuit in TenThousandComponents test.
v.10.2.1 (14 February 2024)
- Fixed parallel scanning in Circuit::Optimize().
- Updated documentation on multi-threading support.
v.10.2.0 (13 February 2024)
- Added Circuit::SetThreadCount() method.
- Updated fast_any submodule (incl. macOS 10.15 support).
- Updated CI to build on macOS 11 and Windows Server 2019.
v.10.1.3 (25 January 2024)
- Removed references to pointers in Circuit component loops.
- Reserved memory for inputWires in SetInputCount_().
- Stabilized thread performance tests (again).
v.10.1.2 (02 January 2024)
- Removed unnecessary auto-tick pause in Optimize().
- Removed unnecessary re-ordering on redundant ConnectOutToIn() calls.
- Cleaned up tutorial components and application code.
- Made thread performance tests stricter.
v.10.1.1 (01 January 2024)
- Cleaned up and documented new Circuit::Optimize() method.
- Updated copyright notices.
v.10.1.0 (31 December 2023)
- Greatly improved circuit performace with component auto-ordering.
- Added Circuit::Optimize() to manually order components pre-tick.
v.10.0.2 (29 December 2023)
- Optimized Tick() by avoiding unnecessary wire copying.
- Declared all non-abstract classes "final".
- Added a link for the DSPatch project template to the docs.
- Further stabilized thread performance tests.
v.10.0.1 (12 December 2023)
- Optimized Circuit components vector with raw pointers.
- Optimized Wire struct with raw pointer fromComponent.
- Cleaned up "TenThousandComponents" test.
- Further stabilized thread performance tests.
v.10.0.0 (19 November 2023)
- Updated fast_any submodule (incl. optimized type()).
- Greatly improved Circuit teardown time.
- Improved Circuit buffer count management.
- Inlined internal Component and Plugin methods.
- Fixed static build on Windows.
- Fixed uninitialized reference counts in Component.
- Fixed CMake warnings.
- Stabilized thread performance tests.
v.9.7.5 (18 September 2023)
- Move Wire struct back into its own header.
- Moved EXPORT_PLUGIN macro to Plugin.h.
- Cleaned up documentation / website.
v.9.7.4 (11 September 2023)
- Fixed hang in Circuit::Sync() when multi-buffer ticking.
- Cleaned up includes such that "src" is not needed.
- Added fast_any to installed headers.
v.9.7.3 (10 September 2023)
- Updated fast_any submodule (incl. updated LICENSE + README).
- Removed public SetThreadHighPriority() method.
- Matched std::any-like assignment in SetSignal().
v.9.7.2 (03 September 2023)
- Updated fast_any submodule (incl. updated benchmark figures).
- Fixed Windows build failure in Common.h.
- Moved Wire struct to Component::internal.
- Added Circuit::Sync() method.
- Updated build instructions in README.
v.9.7.1 (28 August 2023)
- Tidied up Component.cpp code.
- Replaced use of unordered_set with regular set.
- Set ProcessOrder::OutOfOrder on PassThrough test component.
v.9.7.0 (27 August 2023)
- Improved tick performance by removing non-scalable "Parallel" mode.
- Replaced custom YieldThread() method with std::this_thread::yield().
- Updated fast_any submodule (incl. inline initialization of value type).
v.9.6.1 (24 August 2023)
- Reverted some "optimizations" that actually made things slower.
v.9.6.0 (24 August 2023)
- Made WaitForRelease() and ReleaseNextThread() lock-free.
- Replaced custom structs in Component with mutex* & atomic_flag*.
- Slightly optimized Tick() and GetOutput() logic.
v.9.5.4 (19 August 2023)
- Updated fast_any submodule (incl. optimizations & bug fixes).
- Optimized AutoTickThread, CircuitThread & ComponentThread.
v.9.5.3 (12 August 2023)
- Updated fast_any submodule (incl. C-style cast fixes).
- Moved fast_any to include/ to simplify the build.
- Cleaned up in-line documentation.
v.9.5.2 (12 August 2023)
- Replaced Signal class with fast_any.
- Fixed Component::DisconnectInput() hang on Windows.
- Added more test coverage.
v.9.5.1 (11 August 2023)
- Further optimized Circuit::RemoveComponent()
- Further optimized Signal::Get/SetSignal()
v.9.5.0 (08 August 2023)
- Greatly optimized circuit construction & destruction.
- Slightly optimized Signal::MoveSignal().
v.9.4.0 (29 July 2023)
- Optimized signal assignment methods by removing bool return.
- Renamed Component::_DoTick to Component::_TickParallel().
- Optimized Component::Tick().
v.9.3.2 (22 May 2023)
- More optimizations to Component::Tick()/_DoTick().
v.9.3.1 (24 April 2023)
- Explicitly declared Signal template methods inline.
- Reduced lock scope in CircuitThread::SyncAndResume().
v.9.3.0 (14 April 2023)
- Made Component::Tick() void to optimize recursion.
- Added TickMode argument to Component::Reset().
- Optimized internal::Component::GetOutput().
v.9.2.4 (11 April 2023)
- Fixed Signal & SignalBus move constructors.
v.9.2.3 (11 April 2023)
- Inlined all Signal and SignalBus methods.
- Optimized type comparisons in Signal.
- Made GetValue() methods const-correct.
- Renamed ReleaseThread() to ReleaseNextThread().
- Updated Catch test framework.
- Updated docs.
v.9.2.2 (07 April 2023)
- Corrected SignalBus move constructor.
- Removed all deque usage in Component.
- Switched to compile-time signal type IDs.
- Bumped build to C++17.
v.9.2.1 (01 April 2023)
- Optimized Component::_DoTick() method.
- Massively improved performance of SignalBus.
- Code formatting and style fixes.
v.9.2.0 (28 March 2023)
- Fixed auto-tick bug on SetBufferCount().
- Added TenThousandComponents test.
- Lots of optimizatons.
v.9.1.0 (31 January 2023)
- Renamed move version of SetValue() to MoveValue().
- Renamed CopySignal() to SetSignal().
v.9.0.1 (19 January 2023)
- Added move version of SignalBus / Signal::SetValue().
- Removed unnecessary sync in CircuitThread::Start().
- Improved & stabilized thread performance tests.
v.9.0.0 (19 November 2022)
- Reduced unnecessary pointer use.
- Optimized signal transfers in parallel tick mode.
- Provide Process_() inputs as non-const reference.
- Improved & stabilized thread performance tests.
- Various static code analysis fixes.
v.8.0.0 (24 July 2022)
- Add Meson build configs.
- Switched from Travis and AppVeyor to GitHub Actions.
- Code formatting and style fixes.
- Optimized SignalBus transfers.
v.7.0.1 (15 February 2020)
- Add notes on TickMode and ProcessOrder to API docs.
v.7.0.0 (02 February 2020)
- Re-license DSPatch to BSD 2-Clause.
- Add Win32 manifest and resource files.
- Add version header file.
v.6.03 (08 April 2019)
- Fix Component::DisconnectInput().
v.6.02 (21 March 2019)
- Fix Archlinux build.
- Don't start ComponentThreads unnecessarily in Series TickMode.
v.6.01 (05 January 2019)
- Minor bug fix in feedback wire detection.
- Rebrand DSPatch as a Dataflow Framework rather than FBP.
v.6.00 (04 January 2019)
- Greatly improved performance in reactive-style one-shot circuits.
- Added Circuit::Set/GetBufferCount() for optimized stream processing.
- Added "Series" tick mode for optimized series circuit processing.
- Tick parallel components in parallel with new ComponentThread class.
- Improved stability in *Thread classes.
v.5.01 (11 November 2018)
- Various code readability improvements.
- Wait for circuit threads to stop in StopAutoTick().
v.5.00 (10 November 2018)
- Removed unnecessarily complex integrated circuits concept.
- Replaced in-house DSPatch::internal::Threads with std::threads.
- Removed all friend classes.
- Moved signal reference counting into DSPatch::internal::Component.
- Moved RunType logic into Signal.
- Added Signal::HasValue() and Signal::GetType().
- Loads of optimisations and static code analysis fixes.
v.4.10 (27 October 2018)
- Allow out-of-order component processes.
- Fixed threaded integrated circuit bugs.
v.4.00 (09 October 2018)
- Major C++14 refactor.
- Moved audio-related example components to the DSPatchables project.
- Removed overly complex Parameter concept.
- Removed the horrid "Global Circuit", along with DSPatch::Finalize().
- Greatly simplified component plugins.
- Optimised signal transfer by moving rather than copying where possible.
- Added CI and unit tests.
v.3.00 (07 April 2015)
- Reference parameters by index for better performance.
- Cleaned up code formatting and class interfaces.
- DisconnectComponent fixed to also remove outgoing wires.
- ResumeAutoTick() resumes only once called for every PauseAutoTick().
- Updates to support DSPatcher.
v.2.70 (21 December 2014)
- Added support for DspComponent plugins (DspPlugin + DspPluginLoader).
- Fixed build and install scripts.
v.2.62 (18 August 2014)
- Added alternative Get* methods returning const pointers.
- Increased build warning level and fixed all issues.
- Uninitialised variable fix for DspParameter.
- Fixed GetInput/Output/ParameterName() empty string return bug.
v.2.61 (16 June 2014)
- Introduced component parameters (DspParameter).
- Added DspComponent user callback mechanism.
- Improved const-correctness and code style.
- Added ability to remove single IO pins.
v.2.60 (19 January 2014)
- Replaced project files with more flexible CMakeLists.
- DspWaveStreamer fix (don't assume standard type sizes).
- Reduced size of distributable.
v.2.51 (13 September 2013)
- Fixed Unix thread detach error.
- Improved overall encapsulation.
- Replaced "Clear" with "Remove" for I/O removal.
v.2.50 (14 July 2013)
- Reduced size of distributable.
- Removed closed source dependency from example project.
- Added Linux makefiles.
v.2.43 (30 June 2013)
- Simplified platform selection macros.
v.2.42 (24 June 2013)
- Added vs2008 and vs2010 versions of dspdemo.
- Code style and performance improvements.
v.2.41 (07 February 2013)
- Fixed VS2010 dspdemo linker errors.
v.2.40 (04 February 2013)
- Optimized DspRunType.
- Added Stop() method to DspThread.
- Reduced pointer dereferencing and temporaries.
v.2.33 (01 February 2013)
- Signal reading / writing optimized.
- Code cleaned up and re-formatted.
v.2.32 (24 January 2013)
- Reduced component thread mutex locking.
- Fixed DspCircuit AddInput() run-time error.
- Documentation updates.
v.2.31 (19 December 2012)
- Improved synchronization in AddComponent().
- Component routing upgraded to template methods.
v.2.30 (15 December 2012)
- Circuit routing simplified.
- Completed "circuit-less" component processing.
- Component names now optional.
- DspCircuit no longer deletes external memory.
- Optimized circuit-in-circuit processing.
v.2.2 (08 December 2012)
- A component can no longer exist in multiple circuits.
- Added coding tutorials
- Cleaned up project directory structure.
- Comments and documentation updates.
- Resolved component / circuit thread count clash.
v.2.1 (06 November 2012)
- Removed DspSafePointer class.
- Greatly improved overall performance.
- Added commenting for doxygen.
v.2.0 (02 November 2012)
- Re-licensed DSPatch to LGPL.
- Added support for non-threaded platforms.
- Circuit routing upgraded to more flexible template methods.
v.1.2 (20 October 2012)
- Ported to Unix-based OS's.
- Completed circuit-in-circuit logic.
v.1.1 (17 October 2012)
- Various bug fixes.
- Added 2 more components to the dspdemo project.
- Optimized threaded circuit processing.
- AddComponent() updated to accept pre-constructed DspComponents.
v.1.0 (14 October 2012)
- Extracted routing engine behind "Crosstalk" to form: "DSPatch".