tree: 2f501fc2162614c41b5be6dc81d4919b0bd0711b [path history] [tgz]
  1. fuzz/
  2. src/
  3. Cargo.lock
  4. Cargo.toml
  5. CONTRIBUTING.md
  6. pom.xml
  7. README.md
plc4x-rust/README.md

PLC4X Rust Implementation

This project implements Rust bindings for Apache PLC4X, focusing on the Siemens S7 protocol. The implementation aims to provide:

  • Memory-safe, zero-copy protocol parsing using nom
  • Async/await support for modern Rust applications
  • High-performance industrial communication
  • Type-safe protocol implementation

Current Status

  • [x] Initial project structure
  • [x] Basic S7 protocol types
  • [ ] Protocol parsing implementation
  • [ ] Connection handling
  • [ ] Async support
  • [ ] Testing infrastructure

Getting Started

Prerequisites

  • Rust (stable channel)
  • Cargo

Installation

git clone https://github.com/apache/plc4x
cd plc4x-rust
cargo build

Testing

Unit Tests

cargo test

Fuzz Testing

# Install cargo-fuzz (only needed once)
cargo install cargo-fuzz

# Run the fuzzer
cargo fuzz run header_parser

Contributing

Please see CONTRIBUTING.md for details on our code of conduct and development process.