Release 2.6.4 out

36 views
Skip to first unread message

Kyle

unread,
Apr 10, 2025, 8:52:26 PMApr 10
to libplctag
After a long, long wait, release 2.6.4 is out.  There are a lot of changes.  The biggest changes are not feature changes.

This release has a lot in it. First many thanks to the contributors who did all the hard work: Heath, wegel, Dominik and ptsOSL! I think I caught all of you. If I missed someone, please tell me!

This contains:

- Smarter handling for OMRON. Better support for multi-request packets. To really finish this we will need to add some level of tag metadata retrieval to the OMRON code.    
-  ab_server changes (mostly thanks to contributors listed above!):
    - Multithreading!
    - Index handling now mirrors what real Rockwell PLCs do.
- Fixes for double free and use after free issues.
- More sanity checks for packets. Incoming packets are more carefully checked.
- A fix for [497](https://github.com/libplctag/libplctag/issues/497) that was found by user EchoHowardLam-GTS. This started a lot of refactoring and rethinking.
- A huge refactor of how CMake config is set up. Most of it is broken out into individual files and is much, much easier to understand.  But it is not all finished.
- The example binaries are now linked statically to libplctag to make those executables easier to run.  I am aiming for fully static linking eventually but getting this release out had priority.
- Reorganization of the source tree into more meaningful subdirectories. This and the CMake refactoring go together.   This is part of a longer process to refactor out common elements and reduce code duplication.
- Many compiler warnings fixed.  At least with Clang and GCC warnings.   MSVC is fairly happy now too.  There are still some warnings.  Over the next couple of releases I aim to have zero compiler warnings.
- The base release configuration has changed to MinSizeRel in CMake.  This is a build configuration that optimizes for binary size (smaller).   Very few, if any, parts of libplctag are CPU bound.   Having small code is better for users that are working with smaller devices and lower memory requirements.

Known issues:
- MinGW is not working. This will be coming in another drop. Hopefully 2.6.5.
- Changes on the GitHub CI runners have made it much, much harder to build binaries for 32-bit ARM Windows. I have spent too many days delaying the release trying to track this down. So ARM 32-bit builds for Windows are removed for now.  File an issue if you really need 32-bit ARM Windows binaries.
- The Zip files are much larger because the examples are mostly statically linked.
- The contributed CLI tool is currently not being built. That will come as soon as I get MinGW working.  It has suffered some bit-rot and needs to be updated to avoid a lot of compiler warnings and potentially unsafe code.

Going forward there will be more refactoring.   There are many areas where code can be combined and/or simplified. I will continue to simplify the CMake use so that it can be much more generic and use the defaults most of the time.  The end goal is to make feature additions and bug fixes take much less time. 

The release is in the usual place.  

I will be releasing updates in the future to fix the missing MinGW support and CLI build.  All my attempts to build 32-bit ARM Windows binaries end up trying to use MinGW, so that needs to work before I can fix that.

Best,
Kyle

Heath Raftery

unread,
Apr 11, 2025, 2:12:26 AMApr 11
to libplctag
Congratulations, and thank you.

--
You received this message because you are subscribed to the Google Groups "libplctag" group.
To unsubscribe from this group and stop receiving emails from it, send an email to libplctag+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/libplctag/e4d2c2fc-fb0a-4c74-9460-0256ecbc3029n%40googlegroups.com.

Kyle

unread,
Apr 14, 2025, 1:35:36 PMApr 14
to libplctag
As at least one user noticed.  I goofed up and managed to generate the 64-bit AMD64 Windows binaries twice instead of 64-bit and 32-bit.   That will come with 2.6.5 when I get MinGW working as well.   I am getting close but I do not want to make any promises since I lost many days chasing the 32-bit ARM Windows build.   I still have not managed to make that work.  No promises at all on that.

I took the 32-bit x86 Windows binary off of the main release for 2.6.4.

Best,
Kyle
Reply all
Reply to author
Forward
0 new messages