Tuesday, February 07, 2017

OmniThreadLibrary 3.07 beta + plans for OmniThreadLibrary 4.0

It is almost time for a new release! If you’d like to see what 3.07 will contain – or if you just want to test it before it is out – click here.

[If you are a serious OTL user - and especially if you are using pre-Seattle Delphi - please test your program(s) with the beta release. Thanks!]

I have started work on OTL 4.0 which will (fingers crossed) fully support cross-platorm work. Yup, it will work on all platforms that Delphi can compile for! Multiplatform support was implemented by Sean B. Durkin so if OTL/Mobile is something you were waiting for a long time, go to OmniThreadLibrary-For-Mobile Google+ community and express your gratitude.

Another quite big addition will be new high-level abstraction called DataFlow. You will be able to build your own data processing graph where data will flow from a node to a node (like in a Pipeline) and which will fully support cycles. (Cycles in Pipeline are problematic as you have to disable throughput throttling and manage stopping conditions manually).

The third big change is that I will not support Delphi 2007, 2009, and 2010 in OTL 4.0. There’s just too much work to support 2007 and generics support in 2009/2010 causes endless problems.

OTL 3.x will still be supported for quite some time in “bugfix” mode (IOW, I’ll fix bugs but I will not add new functionality).

The fourth big change … Actually, that is it. I don’t have other changes planned, but I’m open for suggestions. Do you miss anything in OTL? Tell me here or in the OTL Google+ community.

And if you really really want to try the quite unstable code, OTL 4.0 development is currently happening in the v4-develop branch.

23 comments:

  1. Great news, thanks!

    ReplyDelete
  2. >> The third big change is that I will not support Delphi 2007, 2009, and 2010 in OTL 4.0.
    It's not a big problem and a good decision to my mind, everyone needs to upgrade their projects to Unicode-Delphi versions some day.

    >> is something you were waiting for a long time
    As usually, I wait for stable scalable memory manager :-) Now I use Intel Tbb as an external pre-compiled dll, which is not always handy. SapMM is great but under VERY heavy and time-continuous load it fails. Intel Tbb MM fails almost never, only very-very rare under very heavy load after of days of work with large memory-streams (10 Mb+) in parallel threads it can produce Out of memory for 32-bit app due to memory fragmentation.

    ReplyDelete
  3. How about more tutorials?, I am a newbie and need some handholding.

    ReplyDelete
    Replies
    1. http://www.omnithreadlibrary.com/tutorials.htm

      Delete
  4. Also what about a short video tutorial?

    ReplyDelete
    Replies
    1. http://www.omnithreadlibrary.com/webinars.htm

      Delete
  5. Hi.

    I will like to see example of OTL and Databases....

    ReplyDelete
    Replies
    1. http://otl.17slon.com/book/chap08.html#howto-databases

      Delete
    2. Anonymous21:15

      Hi!

      Thanks for the links, Primož Gabrijelčič.

      But I will like to see is examples of OTL and Databases running in background making Insert, Delete and Update to Database, if is possible.

      Delete
    3. Well, that's the database stuff, not OTL stuff. Can't help you there.

      Delete
    4. Anonymous14:03

      Hi.

      I think I didn't explain myself correctly. What I refer is how to handle the transaction and the exception with the Database in OTL.

      In other words, what high-level abstraction is good for something like that:
      BeginTransaction;
      DoStuffInDatabase;
      CommitTransaction;
      If SomethingWrong then
      RollBackTransaction;

      I hope it's clear enough.

      Delete
    5. If that all happens as an atomic operation, then probably BackgroundWorker would work fine. You should just read the book [https://leanpub.com/omnithreadlibrary], Chapter 2, and decide for your own.

      Delete
  6. Primoz, will GpDelphiUnits be updated to newer versions? Do they support 64-bit compilation?
    I use GpSync and GpSharedMemory from
    https://github.com/gabr42/GpDelphiUnits

    ReplyDelete
    Replies
    1. Yes, I'll sync them all to the latest release. Yes, they support 64-bit.

      Delete
  7. Great, and thanks! Just asking - Do you think OTL will eventually support Linux which is to be supported by the upcoming new versions of Delphi? :D

    ReplyDelete
    Replies
    1. I really hope the new 'mobile' support will also cover Linux. Didn't have a chance to test it yet, though.

      Delete
    2. Someone already tried to compile OTL on Delphi 10.2 preview with Linux as target platform, failed for now.
      https://helloacm.com/quick-review-delphi-10-2-tokyo-preview/

      Delete
    3. That is only to be expected. OTL v3 depends on DSiWin32, which is tightly bound to Windows. OTL v4 is the first version that could work on Linux.

      Delete
  8. So the new DataFlow abstraction will support something like .NET TPL.Dataflow Pipeline, where it's possible to link more than one stage to the output of the previous stage, and when the object exists stage 1 and then is rejected by stage 2.1, it automatically goes to stage 2.2?

    ReplyDelete
  9. 1) How soon will you update your book "Parallel Programming with OmniThreadLibrary" with the latest changes in the OTL code?
    2) What about OTL help file? *.hlp, *.chm or something?

    ReplyDelete
    Replies
    1. 1) Soon.
      2) No plans for that at the moment.

      Delete
  10. Will be a FPC compatible version?

    ReplyDelete