v1.7 Bugfix Edition and new TestAll.cpp smoke testing
This release of enkiTS fixes a number of issues and adds a new smoke test, TestAll.cpp. Additionally, if using profiling code based on enkiTSMicroprofileExample.cpp in enkiTSExample check out the latest code for a stack based tick store required by the v1.2 callbacks.
Screenshot of enkiTSMicroprofileExample.cpp showing two stacked waitForTaskComplete callbacks (at top) which requires a tick stack for correct Microprofile profiling.
As a helper for catching issues earlier I've also added a smoke test TestAll.cpp for Travis CI which now runs on Linux x64, Linux ARM64, OSX x64 and Windows x64.
- Fixed issue #44 Fixed GGC warnings.
- Merged Pull Request #47 with Some fixes adding Xbox CreateSemaphoreExW(), uninitialized m_WaitingForTaskCount.
- Fixed issue #48 Pinned task not being woken.
- The added WakeSuspendedThreadsWithPinnedTasks() function increases the workload on threads which have no tasks and are about to suspend waiting for new tasks or task completion, but since these threads are about to suspend this has no detectable performance penalty.
- Compile fix for when NOMINMAX is globally defined.
- Fixed issue #49 Valgrind errors on OSX and mach semaphore exception.
- The v1.6 change to add custom allocators caused an OSX crash in placement new of mach semaphores, so I have switched to dispatch semaphores.
- Fix for initializing TaskScheduler multiple times without a shutdown and with different configuration parameters.
- Fixed issue #50 Valgrind warning thread states for all threads not initialized prior to thread launch.
- Fixed issue #51 WaitforAll() and external threads not waking.
- Fixed issue #52 ThreadSanitizer (TSAN) reporting data race.
- A note on ThreadSanitizer (TSAN) & Intel Inspector: currently neither TSAN nor Intel Inspector support all the primitives used by enkiTS and thus there will be false data race reports. I hope to keep these to a minimum, but this is not always possible.
Thanks to @Vuhdo, @boxerab, @Pagghiu, and Bobby Anguelov.
Support development of enkiTS through Github Sponsors or Patreon