forked from thekogans/util
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ReleaseNotes
433 lines (358 loc) · 14.8 KB
/
ReleaseNotes
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
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
version 0.15.1:
Thread.cpp:
fixed incorrect error handling from pthread api.
version 0.15.0:
ConsoleLogger.h:
added level parameter to the ctor.
Exception.h:
added THEKOGANS_UTIL_LOG_EXCEPTION, THEKOGANS_UTIL_LOG_EXCEPTION_WITH_MESSAGE,
THEKOGANS_UTIL_LOG_SUBSYSTEM_EXCEPTION and THEKOGANS_UTIL_LOG_SUBSYSTEM_EXCEPTION_WITH_MESSAGE macros.
File.h:
added SimpleFile.
added missing _LIB_THEKOGANS_UTIL_DECL to ReadOnlyFile declaration.
FileLogger.h:
added level parameter to the ctor.
Logger.h:
added level parameter to the ctor and class member.
LoggerMgr.h:
added HRTime decoration.
NSLogLogger.h:
added level parameter to the ctor.
OutputDebugStringLogger.h:
added level parameter to the ctor.
Plugins.h:
added a few typedefs to cleanup the interfaces.
added maxPluginsFileSize to the ctor to protect against malicious files.
SecureAllocator.h:
fixed template parameter names to guard against global space macros with the same name.
Timer.h:
documentation typos.
added throw () to the Alarm callback.
TimeSpec.h:
added FromHours.
version 0.14.2:
Exception.h:
added a missing #include <cstdio>.
Plugins.h:
added THEKOGANS_UTIL_HAVE_PUGIXML guards.
StringUtils.h:
documentation typos.
SystemRunLoop.h:
added const to RunLoop parameted in DispatchEvent.
Types.h:
added a missing #include <cstdio>.
added THEKOGANS_UTIL_POSIX_ERROR_CODE, THEKOGANS_UTIL_POSIX_OS_ERROR_CODE,
THEKOGANS_UTIL_POSIX_HANDLE and THEKOGANS_UTIL_POSIX_INVALID_HANDLE_VALUE
version 0.14.1:
Path.h:
changed the return value on GetComponents.
Plugins.h:
added maxPluginsFileSize to the ctor to protect against malicious files.
version 0.14.0:
rewrote RunLoop and broke it out to DefaultRunLoop, SystemRunLoop, MainRunLoop.
JobQueue.h:
added worker affinity.
Pipeline.h:
added worker affinity.
Scheduler.h:
added worker affinity.
WorkerPool.h:
added worker affinity.
added documentation to Plugins.h
documentation improvements and typos.
version 0.13.2:
ChildProcess.h
comment fixes.
Console.h:
completely removed the vestiges of the old RunLoop implementation.
LoggerMgr.h:
added blocking flag.
added Plugins.[h | cpp]
merged SystemRunLoop in to RunLoop.
Version.h:
added Empty.
version 0.13.1:
ChildProcess.cpp
fixed testing the hookStdIo flags.
version 0.13.0:
Console.h:
removed embedded RunLoop.
added RunLoop DefaultRunLoop and SystemRunLoop.
version 0.12.1:
Thread.h:
moved exited to Windows side.
TimeSpec.h:
added explicit to ctor.
version 0.12.0:
Console.h:
added RunLoop.
removed WaitCtrlBreak.
Heap.h:
added a few asserts for sanity checks.
JobQueue.h:
removed priority = -1 hack from worker initialization.
LoggerMgr.h:
added the const qualifier to LoggerList in AddLoggerList.
Path.h:
added Move.
version 0.11.8:
minor typo fixes.
version 0.11.7:
SystemInfo.h:
added GetHostName.
LoggerMgr.h:
now using SystemInfo::GetHostName.
cleaned up formatting and comments.
version 0.11.6:
JobQueue.h:
added Job::ShouldStop.
OwnerMap.h:
added Compare template parameter.
TimeSpec.h:
on windows removed my timeval.
cleaned up formatting and comments.
version 0.11.5:
Exception.h:
silence a windows warning (4275).
version 0.11.4:
updated the hash example to support naked hashes.
version 0.11.3:
Config.h:
replaced _USRDLL with TOOLCHAIN_TYPE_Shared.
version 0.11.2:
updated all thekogans_make.xml to schema version 2.
Buffer.h:
added SharedPtr typedef.
Config.h:
replaced _DLL with _USRDLL.
version 0.11.1:
internal.h;
added OS X clock_gettime implementation.
JobQueue.h:
added GlobalJobQueue and GlobalJobQueueCreateInstance.
Scheduler.h:
added GlobalScheduler and GlobalSchedulerCreateInstance.
Singleton.h:
added CreateInstance template parameter.
added DefaultCreateInstance template.
Vectorizer.h:
added GlobalVectorizerCreateInstance.
Version.h:
added missing windows __declspec.
WorkerPool.h:
added GlobalWorkerPoolCreateInstance.
version 0.11.0:
Buffer.h:
moved Byte[Source | Sink] to Serializer.h.
fixed BufferByte[Source | Sink] to inherit from Serializer::Byte[Source | Sink].
File.h:
added S_IRGRP | S_IROTH to OS X/Linux ctor/Open.
fixed FileByte[Source | Sink] to inherit from Serializer::Byte[Source | Sink].
added FixedBuffer.h.
fixed RandomByteSource to inherit from Serializer::ByteSource in RandomSource.h.
SecureAllocator.h:
added ReservePages.
added stdSecureAllocator.
added SecureString.
added SecureVector.
Serializer.h:
added operator >> (char *).
changed operator << (const std::string &) and operator >> (std::string &) to read and write pascal strings.
added Byte[Source | Sink].
added operator << (const FixedBuffer &) and operator >> (FixedBuffer &).
version 0.10.1:
fixed incorrect macro names in Heap.h.
version 0.10.0:
Buffer.h:
virtualized Resize, Clone, Deflate and Inflate so that SecureBuffer is able to use SecureAllocator.
added Resize, Clone, Deflate and Inflate overrides to SecureAllocator.
added default readOffset to TenantReadBuffer ctor.
added default writeOffset to TenantWriteBuffer ctor.
Config.h:
added THEKOGANS_UTIL_ATOMIC.
added THEKOGANS_UTIL module name. all util log entries will be under this subsystem heading.
Exception.h:
added THEKOGANS_UTIL_CATCH_AND_LOG_SUBSYSTEM.
added THEKOGANS_UTIL_CATCH_AND_LOG_SUBSYSTEM_WITH_MESSAGE.
made Logger derive from ThreadSafeRefCounted to better support subsystem logging.
added subsystem logging support to LoggerMgr. it’s now possible to register a separate Logger list for each subsystem.
updated all util internal logging to use the new subsystem support.
added Swap to RefCounted::Ptr.
defaulted Scheduler::JobQueue priority to PRIORITY_NORMAL.
added struct BufferHeader to Serializer.
added BitSet.[h | cpp].
cleaned up the use of atomic using the THEKOGANS_UTIL_ATOMIC macro from Config.h.
fixed linux compilation issues.
documentation improvements and typos.
version 0.9.0:
rewrote Barrier custom implementation to fix a nasty race.
Buffer.h:
normalized ctor parameters.
added Byte[Source | Sink] interfaces to allow wrapping external sources.
added Tenant[Read | Write]Buffer.
added BufferByte[Source | Sink].
cleanup of _MSC_VER preprocessor defines to allow util to build with g++ on windows.
Console.h:
added thread safety to PrintString.
added color text printing to PrintString.
made ConsoleLogger use Console::PrintString.
added CRC32.h.
Exception.h:
added OS X System Configuration errors.
added Exception::Filter to allow custom filters to determine which exceptions to fire.
added FileByte[Source | Sink] in File.h.
cleaned up internal.h to build with g++ on windows.
added JobQueue::Job::Cancel to allow in flight job cancellation.
added GlobalJobQueue singleton in JobQueue.h.
added LockGuard::release to allow finer control.
added throw () to Logger interface.
added LoggerMgr::Filter to allow custom filters to determine which entries to log.
added NSLogLogger.h to dump log entries to xcode console.
added OutputDebugStringLogger.h to dump log entries to visual studio console.
added NullAllocator.h to support Tenant[Read | Write]Buffer.
added RandomByteSource in RandomSource.h.
added operator ==, != to RefCounted::Ptr in RefCounted.h.
added Serializer::Size api to aid with binary stream protocols.
fixed 64 bit formatting strings in StringUtils.h.
added Thread::AtExit api.
added Timer::[Set | Get]Name in Timer.h.
added GlobalWorkerPool in WorkerPool.h.
documentation improvements and typos.
version 0.8.0:
removed boost as a dependency.
version 0.7.2:
replaced offset with readOffset and writeOffset in Buffer.h.
documentation improvements and typos.
version 0.7.1:
changed the signature of all Job interfaces to include throw ().
removed Vectorizer.[h | cpp].
renamed GlobalVectorizer.[h | cpp] to Vectorizer.[h | cpp].
fixed a bug in SharedAllocator::Lock when emulating a SpinLock with Mutex in SharedAllocator.h.
documentation improvements and typos.
version 0.7.0:
added Scheduler.[h | cpp].
switched from Mutex to SpinLock in GlobalVectorizer.h.
switched from Mutex to SpinLock in Singleton.h.
added HexDecodeBuffer in StringUtils.h.
documentation improvements and typos.
version 0.6.0:
added #include “thekogans/util/Config.h” to Array.h.
added GetCommandLine and GetReturnCode to ChildProcess.
added Unix permissions (mode) to Directory::Entry.
added DigestTostring and stringToDigest to Hash.
added digest comparison operators in Hash.h.
added ToWindowsPathSeparator, ToUnixPathSeparator and MakeAbsolute to Path.
added GetLongestCommonPrefix in StrinUtils.h.
added version comparison operators in Version.h.
added THEKOGANS_UTIL_HAVE_PUGIXML feature to turn on and off pugixml dependency.
documentation improvements and typos.
version 0.5.7:
updated various scripts to work with the new toolchain features.
version 0.5.6:
Timer.h:
reworked the Timer to be more lightweight. it’s now practical to have dozens of active timers at the same time.
replaced the inheritance api with a callback mechanism. it’s now possible to have all timers handled by a single callback handler.
added optional name ctor parameter. this helps in identifying the timer that fired.
reworked Console to allow waiting on ctrl+break.
documentation improvements and typos.
version 0.5.5:
removed local copy of pugixml and moved it in to the toolchain.
ByteSwap.h:
removed dependency on boost/static_assert.hpp (replaced with c++0x static_assert).
removed dependency on boost/endian.hpp (replaced with toolchain TOOLCHAIN_ENDIAN).
Directory::Watcher replaced select with epoll in Linux variant.
added guards to definitions of _LARGEFILE64_SOURCE and _FILE_OFFSET_BITS in internal.h
fixed IntrusiveList::for_each to stash the next pointer before invoking the callback.
JobQueue:
replaced OwnerList<Job> with IntrusiveList<Job>.
replaced OwnerList<Worker> with IntrusiveList<Worker>.
removed volatile bool done from Worker.
Added Barrier for worker synchronization in Stop.
replaced storage_type *storage with storage_type &storage in SharedAllocator::Lock.
Thread.h:
removed the signals api. threads on POSIX systems are now created with signals disabled.
added bool joined to POSIX implementations to control Wait better.
fixed a subtle bug in Wait on Linux.
TimeSpec.h:
added parameter validation to various apis.
fixed conversion routines to account for Zero and Infinite.
added THEKOGANS_UTIL_ARRAY_SIZE to Types.h.
documentation improvements and typos.
version 0.5.4:
consolidated TimeSpec to better handle absolute time values.
added IntrusiveList::contains to check for node containment.
documentation improvements and typos.
version 0.5.3:
added THEKOGANS_UTIL_OS_ERROR_CODE_TIMEOUT to Exception.h.
LoggerMgr::Entry now derives from IntrusiveList::Node.
expanded documentation in SharedAllocator.h.
added operator <= and >= in TimeSpec.h.
several nasty bug fixes in IntrusiveList.h.
version 0.5.2:
added tests/test_Version.cpp.
replaced Mutex with SpinLock in HeapRegistry.
documentation improvements and typos.
version 0.5.1:
added secure flag to SharedAllocator::ctor.
removed SharedAllocator::Block::magic from release mode builds.
documentation improvements and typos.
version 0.5.0:
added struct Allocator (Allocator.h) to model abstract allocators.
reworked DefaultAllocator and AlignedAllocator to inherit from Allocator.
added struct SecureAllocator (SecureAllocator.h).
added struct SharedAllocator (SharedAllocator.h).
added struct IntrusiveList (IntrusiveList.h).
reworked Heap to use Allocator.
reworked Heap to use IntrusiveList.
reworked WorkerPool to use IntrusiveList.
reworked Buffer to use Allocator.
reworked SecureBuffer to use SecureAllocator.
added THEKOGANS_UTIL_OS_ERROR_CODE_ENOMEM (Exception.h).
added FileLogger::maxLogFileSize.
added operator != (TimeSpec.h).
added GetCurrentTime (TimeSpec.h).
documentation improvements and typos.
version 0.4.1:
exposed FileLogger::maxLogFileSize.
added volatile to Singleton::instance.
fixed a race in LoggerMgr::Flush.
documentation improvements and typos.
version 0.4.0:
added Features file to control building of various features.
updated examples Makefiles to use the new build features.
updated Base64::Encode api signature to allow for formatted output.
updated CommandLineOptions::DoUnknownOption api signature to take the option value parameter.
added debug THEKOGANS_UTIL_DEBUG_BREAK for Linux/OS X to Config.h.
changed the name of Directory::Watcher::EventHandler to Directory::Watcher::EventSink.
changed LoggerMgr to precomputed hostName in ctor and use the cached value.
added std::ostream to MimeTypeMapper::Dump.
added Path::IsEmpty.
added RandomSource.h/cpp
added RefCounted.h/cpp
updated pugixml to version 1.6.
changed Variant::ToString signature to better align with other ToString methods.
Buffer:
added GetDataPtrAtOffset.
added AdvanceOffset.
wrapped Deflate/Inflate with THEKOGANS_UTIL_HAVE_ZLIB feature.
added SecureBuffer.
Exception:
added GetErrorCode.
added THEKOGANS_UTIL_OS_ERROR_CODE_EINVAL.
GUID:
replaced magic numbers with enums.
replaced dependency on Kashmir library.
added ability for ctor to take Windows formatted guids.
Heap:
added support for nothrow variants of new/delete.
replaced Mutex with SpinLock.
WorkerPool:
added WorkerList::push_front api.
changed worker release to put the worker at the front of the list for better cache utilization.
internal:
added _vscprintf for Linux/OS X.
added OS X kqueue macros.
bug fixes.
documentation improvements and typos.
version 0.3.4:
initial release