v0.5.3
🎉 Release v0.5.3 - Critical Bug Fixes
Release Date: January 15, 2025
Type: Bug Fix Release
🐛 Critical Issues Resolved
This release addresses critical issues reported by contributors where tag discovery and reading functionality was not working properly across different PLC types.
Issues Fixed:
❌ Tag Discovery Failure
- Problem:
discover_tags()was returning empty results - Root Cause: Incorrect CIP service and response format
- Solution: Updated to use proper
GET_INSTANCE_ATTRIBUTE_LISTservice with correct path structure
❌ Program Tag Reading Failure
- Problem: Reading tags like
Program:LS18_Rewind.CoreDiamMinfailed with "Path segment error" - Root Cause: Incorrect tag path building for program-scoped tags
- Solution: Added proper program tag path splitting and segment building
❌ Response Parsing Issues
- Problem: Tag list response parsing was using wrong format
- Root Cause: Expected simple format but actual response uses attribute list format
- Solution: Updated parser to handle
[InstanceID(4)][NameLength(2)][Name][Type(2)]format
🔧 Technical Improvements
CIP Protocol Enhancements
- ✅ Updated Tag List Requests: Now uses correct
GET_INSTANCE_ATTRIBUTE_LISTservice (0x55) - ✅ Fixed Response Parsing: Properly handles attribute list response format
- ✅ Improved Tag Path Building: Correctly handles program prefixes (
Program:ProgramName.TagName) - ✅ Enhanced Error Handling: Better debugging output for troubleshooting
Compatibility Improvements
- ✅ Aligned with Node.js Implementation: Changes based on working reference implementation
- ✅ Better PLC Compatibility: Works across various PLC manufacturers and models
- ✅ Improved Error Messages: More descriptive error messages for debugging
📊 Testing & Validation
Comprehensive Testing
- ✅ Unit Tests: All 17 unit tests passing
- ✅ Integration Tests: 11 comprehensive tests passing
- ✅ Documentation Tests: 11 doc tests passing
- ✅ Code Quality: Clippy clean with 0 warnings
- ✅ Build Verification: All targets compile successfully
🚀 Performance Characteristics
Optimized Operations
- Tag Discovery: Now properly discovers and caches tag metadata
- Program Tag Access: Efficient path building for program-scoped tags
- Memory Usage: Improved memory management for tag operations
- Error Recovery: Better error handling and recovery mechanisms
📦 Package Updates
Core Library
- Rust Library:
rust-ethernet-ip = "0.5.3" - Python Wrapper:
rust_ethernet_ip = "0.5.3" - C# Wrapper:
RustEtherNetIp = "0.5.3"
Example Applications
- ✅ Updated Vue.js example to v0.5.3
- ✅ Updated TypeScript example to v0.5.3
- ✅ Updated Go backend example to v0.5.3
- ✅ Updated all C# examples to v0.5.3
🔄 Migration Guide
For Existing Users
-
Update Dependencies: Update to v0.5.3 for improved stability
[dependencies] rust-ethernet-ip = "0.5.3"
-
Tag Discovery: Now works correctly across all PLC types
let mut client = EipClient::connect("192.168.1.100:44818").await?; client.discover_tags().await?; // Now works properly!
-
Program Tags: Can now read program-scoped tags
let value = client.read_tag("Program:MainProgram.MyTag").await?;
Breaking Changes
- None: This is a bug fix release with no breaking changes
🐛 Bug Reports Resolved
Contributor Issues Fixed
- Issue: Tag discovery returning empty results
- Issue: Program tag reading failing with path segment errors
- Issue: Inconsistent behavior across different PLC types
Root Cause Analysis
- CIP Protocol: Incorrect service usage and response parsing
- Path Building: Missing program tag handling logic
- Compatibility: Not aligned with standard EtherNet/IP implementations
📈 Quality Metrics
Code Quality
- Clippy: 0 warnings
- Tests: 100% pass rate
- Documentation: Complete and up-to-date
- Examples: All updated and tested
Compatibility
- PLC Support: Enhanced compatibility across manufacturers
- Protocol Compliance: Better adherence to EtherNet/IP standards
- Cross-Platform: Works on Windows, Linux, macOS
🎯 Next Steps
Immediate Actions
- Update Dependencies: Upgrade to v0.5.3 immediately
- Test Tag Discovery: Verify tag discovery works with your PLCs
- Test Program Tags: Verify program tag reading functionality
Future Improvements
- Enhanced UDT (User Defined Type) support
- Improved batch operation performance
- Additional PLC manufacturer support
📞 Support & Feedback
Getting Help
- GitHub Issues: Report bugs or request features
- Documentation: Comprehensive docs
- Examples: Working examples
Contributing
- Pull Requests: Welcome and appreciated
- Bug Reports: Help us improve the library
- Feature Requests: Let us know what you need
🙏 Acknowledgments
Special thanks to the contributors who reported these issues and provided detailed debugging information. Your feedback helps make this library better for everyone!
📋 Full Changelog
Full Changelog: v0.5.2...v0.5.3
�� Quick Links
- �� Documentation: docs.rs/rust-ethernet-ip
- 📦 Crate: crates.io/crates/rust-ethernet-ip
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions