mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-21 03:46:37 +00:00
docs: add cross-platform CPU architecture compatibility guidelines
This commit is contained in:
+40
-2
@@ -194,6 +194,38 @@ mod tests {
|
|||||||
- Each test should have a clear purpose and verify specific behavior
|
- Each test should have a clear purpose and verify specific behavior
|
||||||
- Test data should be realistic and representative of actual use cases
|
- Test data should be realistic and representative of actual use cases
|
||||||
|
|
||||||
|
## Cross-Platform Compatibility Guidelines
|
||||||
|
|
||||||
|
### 1. CPU Architecture Compatibility
|
||||||
|
- **Always consider multi-platform and different CPU architecture compatibility** when writing code
|
||||||
|
- Support major architectures: x86_64, aarch64 (ARM64), and other target platforms
|
||||||
|
- Use conditional compilation for architecture-specific code:
|
||||||
|
```rust
|
||||||
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
fn optimized_x86_64_function() { /* x86_64 specific implementation */ }
|
||||||
|
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
fn optimized_aarch64_function() { /* ARM64 specific implementation */ }
|
||||||
|
|
||||||
|
#[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))]
|
||||||
|
fn generic_function() { /* Generic fallback implementation */ }
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Platform-Specific Dependencies
|
||||||
|
- Use feature flags for platform-specific dependencies
|
||||||
|
- Provide fallback implementations for unsupported platforms
|
||||||
|
- Test on multiple architectures in CI/CD pipeline
|
||||||
|
|
||||||
|
### 3. Endianness Considerations
|
||||||
|
- Use explicit byte order conversion when dealing with binary data
|
||||||
|
- Prefer `to_le_bytes()`, `from_le_bytes()` for consistent little-endian format
|
||||||
|
- Use `byteorder` crate for complex binary format handling
|
||||||
|
|
||||||
|
### 4. SIMD and Performance Optimizations
|
||||||
|
- Use portable SIMD libraries like `wide` or `packed_simd`
|
||||||
|
- Provide fallback implementations for non-SIMD architectures
|
||||||
|
- Use runtime feature detection when appropriate
|
||||||
|
|
||||||
## Security Guidelines
|
## Security Guidelines
|
||||||
|
|
||||||
### 1. Memory Safety
|
### 1. Memory Safety
|
||||||
@@ -275,12 +307,18 @@ async fn health_check() -> Result<HealthStatus> {
|
|||||||
- [ ] Are there appropriate permission checks?
|
- [ ] Are there appropriate permission checks?
|
||||||
- [ ] Is information leakage avoided?
|
- [ ] Is information leakage avoided?
|
||||||
|
|
||||||
### 4. Maintainability
|
### 4. Cross-Platform Compatibility
|
||||||
|
- [ ] Does the code work on different CPU architectures (x86_64, aarch64)?
|
||||||
|
- [ ] Are platform-specific features properly gated with conditional compilation?
|
||||||
|
- [ ] Is byte order handling correct for binary data?
|
||||||
|
- [ ] Are there appropriate fallback implementations for unsupported platforms?
|
||||||
|
|
||||||
|
### 5. Maintainability
|
||||||
- [ ] Is the code clear and understandable?
|
- [ ] Is the code clear and understandable?
|
||||||
- [ ] Does it follow the project's architectural patterns?
|
- [ ] Does it follow the project's architectural patterns?
|
||||||
- [ ] Is there appropriate documentation?
|
- [ ] Is there appropriate documentation?
|
||||||
|
|
||||||
### 5. Code Commits
|
### 6. Code Commits
|
||||||
- [ ] Does it comply with [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)?
|
- [ ] Does it comply with [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)?
|
||||||
- [ ] Commit titles should be concise and in English, avoid Chinese
|
- [ ] Commit titles should be concise and in English, avoid Chinese
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user