Core bug fix: ImageJob.FinalWidth/Height were reading a different key than ImageBuilder was writing.
Core: NoCache will buffer data to memorystream before writing to output stream. InvalidOperationException when accessing stream.Position within Bitmap.save - despite buffer = true.
Profiling: Fix InvalidOp in ProfilingObserverPlugin when encode actually happens. Add memory usage recording to BenchmarkRunner/result. Add shortcuts to ConcurrencyResultExtensions. Fix directory-not-found errors with ImageProvider when creating blank images.
Benchmarking: Add support for comparative benchmarks, memory leak profiling, and segment filtering.
Profiling: Add ConcurrencyResult.ToString() debug info and IConcurrencyResult.PrintDebugTree() Fix Nullrefs when an empty array is provided to Exclusive/InclusiveMs and Invocations.
Imazen.Profling is now it's own class library
Profiling: Normalize namespaces
Profiling: Add Imazen.Profiling.Tests project. Test and correct breadth-first traversal algorithm.
Profiling: Fix naming bug causing invalid ConcurrencyResult trees. Add isolation and drop nodes; overhaul traversal and segment finding.
Profiling: Allow a profiler to know how many concurrent threads are running the profiled code, so that barriers can be used.
Benchmarking: Add support for barriers, improve output