Monday, September 07, 2015

OmniThreadLibrary 3.05

Hear, hear, OmniThreadLibrary 3.05 has just been released!

What’s new? Not much.

  • Added Delphi 10 Seattle packages and projects. OmniThreadLibrary now supports Delphis from 2007 to 10 Seattle.
  • Setting IOmniThreadPool.MinWorkers property will start up idle worker threads if total number of threads managed by the thread pool is lower than the new value.

There were, however, many quite important bug fixes. You are strongly advised to update to this version!

Great thanks go to [Zak] who notified me about various TWaitFor problems and helped reproduce them.

  • Fixed 'record' type handling in TOmniValue.FromArray<T> and TOmniValue.ToArray<T>.
  • Reimplemented support for > 60 worker tasks in the OtlThreadPool unit which was removed from the code in 3.04a by mistake.
  • IOmniPipeline.PipelineStage[].Input and .Output are now always available immediately after the IOmniPipeline.Run.
  • TOmniPipeline.Destroy calls TOmniPipeline.Cancel so a pipeline can be shut down if user forgets to call Input.CompleteAdding.
  • When the code was waiting on less than 64 handles and timeout occurred, the TWaitFor.Signalled[] property was not always empty.
  • TWaitFor was not working correctly with more than 64 handles if it was created with the parameter-less constructor.
  • TWaitFor.MsgWaitAny now uses RegisterWaitForSingleObject approach when waiting on 64 handles. Previously, MsgWaitForMultipleObjectsEx was called, which can only handle up to 63 handles.
  • Fixed pointer arithmetic in DetailedRTTI for 64-bit compilation.
  • Fixed: affinity mask in IOmniAffinity was only 32-bit wide on 64-bit platform.

Get it from the GitHub or as a ZIP archive!

If you have Delphi XE8 or newer, you can install OmniThreadLibrary via GetIt. You will probably have to wait a day or two for packages to be updated.

If you have Delphi XE or newer, you can install OmniThreadLibrary with the Delphinus package manager.


  1. Anonymous23:12

    Not showing in GetIt yet ?

    1. Now it is showing. Sorry for the delay, but there's nothing I can do to speed up the process.

  2. Anonymous20:18

    I can't get OTL compiled under D2007. which version should I use?

    1. As far as I can tell, OTL compiles with D2007. Where are you having problems?

      The only exception is the OtlParallel unit - high-level abstractions require at least Delphi 2009 (at least XE is recommended due to problems with generics in D2009 and D2010).