Releases: Jacajack/liblightmodbus
liblightmodbus v3.0
The biggest and the most important release so far. Majority of the source code has been rewritten from scratch. The library is header-only now, which makes it much easier to compile on different exotic platforms. Although features included in this release break backwards compatibility with v2.0 and require changes to be made in user code, upgrading to v3.0 is highly recommended due to the number of improvements.
Changes:
- The library is header-only now. The old build system based on CMake is no longer necessary.
- Very significantly reduced binary size (~16kB (v2.0), -> ~7.3kB (v3.0))
- Significantly improved code structure, maintainability and performance
- Alignment safety no longer relies on compiler attributes (
__attribute__((packed))
is 'broken' on XC16 compilers) - Replaced
inttypes.h
withstdint.h
- All register operations are now done through register callback functions.
- All data is received with a data callback on master side now.
- Added support for Modbus TCP
- Added setters/getters for
ModbusMaster
andModbusSlave
structure members - Added support for custom allocators. This mechanism can be used to replace old
LIGHTMODBUS_STATICMEM*
- Added a new CMake config which allows liblightmodbus to be used a CMake package
- Added a (very) experimental C++ API
- Added a
ModbusBuffer
type for holding and managing allocated frames - Added some debug utilities
- Created a separate repository for ESP-IDF component files
- Integrated with GitHub actions
- Removed the
examine
addon - Improved error handling
- Types are now consistently named with PascalCase
- Renamed many functions and type names
- Dropped support for Launchpad
- Prettier docs, thanks to https://github.com/jothepro/doxygen-awesome-css
Docs for this release: https://jacajack.github.io/liblightmodbus/index.html
Information about porting code from v2.0 to v3.0: https://jacajack.github.io/liblightmodbus/porting.html
liblightmodbus v3.0-rc2
THIS IS A RELEASE CANDIDATE 2
The biggest and the most important release so far. Majority of the source code has been rewritten from scratch. The library is header-only now, which makes it much easier to compile on different exotic platforms. Although features included in this release break backwards compatibility with v2.0 and hence require changes to be made in user code, upgrading to v3.0 is highly recommended due to the number of improvements.
Changes:
- The library is header-only now. The old build system based on CMake is no longer necessary.
- Very significantly reduced binary size (on AVR full v2.0: ~1600b, full v3.0: ~7300b)
- Significantly improved code structure, maintainability and performance
- Alignment safety no longer relies on compiler attributes (
__attribute__((packed))
is 'broken' on XC16 compilers) - Replaced
inttypes.h
withstdint.h
- All register operations are now done through register callback functions.
- All data is received with a data callback on master side now.
- Added support for Modbus TCP
- Added setters/getters for
ModbusMaster
andModbusSlave
structure members - Added support for custom allocators. This mechanism can be used to replace old
LIGHTMODBUS_STATICMEM*
- Added a new CMake config which allows liblightmodbus to be used a CMake package
- Added a (very) experimental C++ API
- Added a
ModbusBuffer
type for holding and managing allocated frames - Added some debug utilities
- Created a separate repository for ESP-IDF component files
- Integrated with GitHub actions
- Removed the
examine
addon - Improved error handling
- Types are now consistently named with PascalCase
- Renamed many functions and type names
- Dropped support for Launchpad
- Prettier docs, thanks to https://github.com/jothepro/doxygen-awesome-css
Docs for this release: https://jacajack.github.io/liblightmodbus/v3.0/index.html
Information about porting code from v2.0 to v3.0: https://jacajack.github.io/liblightmodbus/v3.0/porting.html
liblightmodbus v2.0
Changes:
- Start of semantic versioning era (this would have been version 1.4)
- Documentation is now generated by Doxygen, and available online
- Replaced the shell+makefile build system with CMake
- Added support for user-defined functions
- Added support for user register/coil callback functions
- Improved the error handling system
- Replaced
#define
based types with properenums
- Add option to disable master's processed data buffer
- Add option to enable invasive response parsing in master device
- Macro based wrapper functions replaced with
static inline
functions - Endianness handling improvements
PPA is available here.
liblightmodbus 1.3
Changes:
- Fixed few critical bugs
- Added function 22
- Added write protection for coils
- Changed some variable names
- Added new macros instead of enums
- Dynamic memory allocation can be now disabled
- Library can be now built on big-endian machine
- Added script for configuring build
- Added tons of new security checks
- Input frames are now guaranteed to maintain unchanged during parsing
- Optimized CRC calls and other checks
- Added numerous null pointer checks
- Tidied up the status structures
- Removed unnecessary typedefs
- Slight changes in the way memory is allocated
- Only desired Modbus can be included in customized build
- Removed AVR build-helper
- Static library file for AVR is now generated automatically
- Added license headers to files
- Markdown and roff files are now separated
PPA is available here.
This release has been tested using Valgrind for memory leaks, and none were found. By the way, please keep in mind, that releases do not include packaging information!
liblightmodbus 1.2
🎉 Major update! Liblightmodbus v1.2 is here! 🎉
This release includes:
- New function and type names
- No more global variables
- Manpages and markdown documentation
- Fixed makefiles
- More verbose function prototypes
- Improved error management
- Improved header file management
PPA is available here.
This release has been tested using Valgrind for memory leaks, and none were found. By the way, please keep in mind, that releases do not include packaging information!
liblightmodbus 1.1
Since this moment Modlib is now known as liblightmodbus
. This is first release under this name. There were only minor improvements made since v1.0
This release includes:
- Holding registers support
- Coils support
- Discrete inputs support
- Input registers support
- Full errors and exceptions management
- Python creator, to make compilation for AVR easier
- New functions for library un-init, and other minor changes
- Launchpad PPA and project
This release has been tested using Valgrind for memory leaks, and none were found.
Modlib 1.0
🎉 This is first full version release of Modlib! 🎉
This release includes:
- Holding registers support
- Coils support
- Discrete inputs support
- Input registers support
- Full errors and exceptions management
- Python creator, to make compilation for AVR easier
- Launchpad PPA
This release has been tested using Valgrind for memory leaks, and none were found.
Beta 0.8
This is probably pre-final release! 😄
This release includes:
- Holding registers support
- Coils support
- Discrete inputs support
- Input registers support
- Minor optimizations and improvements
So, well this is basically what full version is planned to include.
Before v1.0
few things have to be improved:
- Makefile
- Wiki
- Code may be optimized in some places
- Library needs a little bit more of real testing
- Check for memory leaks and bugs
- Probably
*.deb
packages will be introduced (Well, they are here, but I do not guarantee them to work properly)