78 lines
1.9 KiB
Markdown
78 lines
1.9 KiB
Markdown
# Unsafe Checker - Section Definitions
|
|
|
|
## Section Overview
|
|
|
|
| # | Section | Prefix | Level | Count | Impact |
|
|
|---|---------|--------|-------|-------|--------|
|
|
| 1 | General Principles | `general-` | CRITICAL | 3 | Foundational unsafe usage guidance |
|
|
| 2 | Safety Abstraction | `safety-` | CRITICAL | 11 | Building sound safe APIs |
|
|
| 3 | Raw Pointers | `ptr-` | HIGH | 6 | Pointer manipulation safety |
|
|
| 4 | Union | `union-` | HIGH | 2 | Union type safety |
|
|
| 5 | Memory Layout | `mem-` | HIGH | 6 | Data representation correctness |
|
|
| 6 | FFI | `ffi-` | CRITICAL | 18 | C interoperability safety |
|
|
| 7 | I/O Safety | `io-` | MEDIUM | 1 | Handle/resource safety |
|
|
|
|
## Section Details
|
|
|
|
### 1. General Principles (`general-`)
|
|
|
|
**Focus**: When and why to use unsafe
|
|
|
|
- P.UNS.01: Don't abuse unsafe to escape borrow checker
|
|
- P.UNS.02: Don't use unsafe blindly for performance
|
|
- G.UNS.01: Don't create aliases for "unsafe" named items
|
|
|
|
### 2. Safety Abstraction (`safety-`)
|
|
|
|
**Focus**: Building sound safe abstractions over unsafe code
|
|
|
|
Key invariants:
|
|
- Panic safety
|
|
- Memory initialization
|
|
- Send/Sync correctness
|
|
- API soundness
|
|
|
|
### 3. Raw Pointers (`ptr-`)
|
|
|
|
**Focus**: Safe pointer manipulation patterns
|
|
|
|
- Aliasing rules
|
|
- Alignment requirements
|
|
- Null/dangling prevention
|
|
- Type casting
|
|
|
|
### 4. Union (`union-`)
|
|
|
|
**Focus**: Safe union usage (primarily for C interop)
|
|
|
|
- Initialization rules
|
|
- Lifetime considerations
|
|
- Type punning dangers
|
|
|
|
### 5. Memory Layout (`mem-`)
|
|
|
|
**Focus**: Correct data representation
|
|
|
|
- `#[repr(C)]` usage
|
|
- Alignment and padding
|
|
- Uninitialized memory
|
|
- Cross-process memory
|
|
|
|
### 6. FFI (`ffi-`)
|
|
|
|
**Focus**: Safe C interoperability
|
|
|
|
Subcategories:
|
|
- String handling (CString, CStr)
|
|
- Type compatibility
|
|
- Error handling across FFI
|
|
- Thread safety
|
|
- Resource management
|
|
|
|
### 7. I/O Safety (`io-`)
|
|
|
|
**Focus**: Handle and resource ownership
|
|
|
|
- Raw file descriptor safety
|
|
- Handle validity guarantees
|