Skip to content

Commit c4c8f83

Browse files
authored
docs: add IEC 62304 SOUP register (#556) (#558)
Add Software of Unknown Provenance (SOUP) register documenting all third-party dependencies with version pinning, safety classification, license compliance, and LGPL dynamic linking policy.
1 parent 078d9f1 commit c4c8f83

1 file changed

Lines changed: 13 additions & 22 deletions

File tree

docs/SOUP.md

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,26 @@
88
| Document | Version |
99
|----------|---------|
1010
| IEC 62304 Reference | §8.1.2 Software items from SOUP |
11-
| Last Reviewed | 2026-03-06 |
12-
| thread_system Version | 3.0.0 |
13-
14-
---
15-
16-
## Internal Ecosystem Dependencies
17-
18-
| ID | Name | Manufacturer | Version | License | Usage | Safety Class | Known Anomalies |
19-
|----|------|-------------|---------|---------|-------|-------------|-----------------|
20-
| INT-001 | [common_system](https://github.com/kcenon/common_system) | kcenon | Latest (source) | BSD-3-Clause | Result<T> pattern, error handling primitives, interfaces | B | None |
21-
22-
> **Note**: common_system is integrated as source-level dependency via CMake `find_package` or adjacent directory detection.
11+
| Last Reviewed | 2026-03-07 |
12+
| thread_system Version | 0.1.0 |
2313

2414
---
2515

2616
## Production SOUP
2717

28-
| ID | Name | Manufacturer | Version | License | Usage | Safety Class | Known Anomalies |
29-
|----|------|-------------|---------|---------|-------|-------------|-----------------|
30-
| SOUP-001 | [libiconv](https://www.gnu.org/software/libiconv/) | GNU Project | 1.17 | LGPL-2.1 | Character encoding conversion (non-Windows platforms only) | A | Dynamic linking required for LGPL compliance |
18+
| ID | Name | Manufacturer | Version | License | Usage | Safety Class | Linking | Known Anomalies |
19+
|----|------|-------------|---------|---------|-------|-------------|---------|-----------------|
20+
| SOUP-001 | [GNU libiconv](https://www.gnu.org/software/libiconv/) | GNU Project | 1.17 | LGPL-2.1-or-later | Character encoding conversion (wide/narrow strings, non-Windows only) | A | **Dynamic only** (LGPL) | None |
21+
22+
> **LGPL Compliance**: libiconv must be dynamically linked to preserve BSD-3-Clause licensing. macOS provides it as a system framework (always dynamic). Linux glibc includes iconv natively. Windows is excluded (`"platform": "!windows"`).
3123
3224
---
3325

3426
## Optional SOUP
3527

36-
| ID | Name | Manufacturer | Version | License | Usage | Safety Class | Known Anomalies |
37-
|----|------|-------------|---------|---------|-------|-------------|-----------------|
38-
| SOUP-002 | [spdlog](https://github.com/gabime/spdlog) | Gabi Melman | 1.13.0 | MIT | Advanced logging capabilities (optional `logging` feature) | A | None |
28+
| ID | Name | Manufacturer | Version | License | Usage | Safety Class | Linking | Known Anomalies |
29+
|----|------|-------------|---------|---------|-------|-------------|---------|-----------------|
30+
| SOUP-002 | [spdlog](https://github.com/gabime/spdlog) | Gabi Melman | 1.13.0 | MIT | Fast C++ logging library (optional `logging` feature) | A | Header-only or shared | None |
3931

4032
---
4133

@@ -52,7 +44,7 @@
5244

5345
| Class | Definition | Example |
5446
|-------|-----------|---------|
55-
| **A** | No contribution to hazardous situation | Logging, formatting, test frameworks |
47+
| **A** | No contribution to hazardous situation | Logging, formatting, character encoding |
5648
| **B** | Non-serious injury possible | Data processing, network communication |
5749
| **C** | Death or serious injury possible | Encryption, access control |
5850

@@ -93,10 +85,9 @@ When updating any SOUP dependency:
9385

9486
| License | Count | Copyleft | Obligation |
9587
|---------|-------|----------|------------|
96-
| LGPL-2.1 | 1 | Weak | Dynamic linking required |
88+
| LGPL-2.1-or-later | 1 | Weak | Dynamic linking required; include license text |
9789
| MIT | 1 | No | Include copyright notice |
9890
| BSD-3-Clause | 1 | No | Include copyright + no-endorsement clause |
9991
| Apache-2.0 | 1 | No | Include license + NOTICE file |
10092

101-
> **GPL contamination**: None detected. All dependencies are permissively licensed.
102-
> **LGPL note**: libiconv (SOUP-001) uses LGPL-2.1; dynamic linking ensures compliance.
93+
> **LGPL contamination**: Avoided by dynamic linking. libiconv is always loaded as a shared library on supported platforms (macOS system framework, Linux glibc).

0 commit comments

Comments
 (0)