docs(feedback): add VDE-053, VDE-054, VDE-055 — MSVC compatibility fixes and build records
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# VDE-053: license_manager.cpp 缺少 #include <unordered_map> (MSVC 编译失败)
|
||||
|
||||
- **ID**: VDE-053
|
||||
- **Date**: 2026-07-29
|
||||
- **Status**: Open
|
||||
- **Severity**: Critical
|
||||
- **Category**: BUILD
|
||||
- **Source**: ViewDesign 架构纠正计划 (Task 11) — VDE=ON 构建
|
||||
|
||||
## 现象
|
||||
|
||||
MSVC 编译 `src/core/license_manager.cpp` 时出现 100+ 错误,包括:
|
||||
```
|
||||
error C2143: 语法错误: 缺少";"(在"}"的前面)
|
||||
error C2065: "Feature": 未声明的标识符
|
||||
error C2065: "unordered_map": 未声明的标识符
|
||||
```
|
||||
|
||||
## 根因
|
||||
|
||||
`license_manager.cpp` 中 `parse_feature()` 函数使用了 `std::unordered_map`(行95),但文件未包含 `<unordered_map>` 头文件。GCC/Clang 的 STL 实现会通过 `<string>` 或 `<set>` 间接包含 `<unordered_map>`,但 MSVC STL 不会。
|
||||
|
||||
**受影响代码:** `src/core/license_manager.cpp:95`
|
||||
```cpp
|
||||
int parse_feature(const std::string& name) {
|
||||
static const std::unordered_map<std::string, int> map = {
|
||||
// ...
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## 修复
|
||||
|
||||
在 `license_manager.cpp` 的 include 区域添加:
|
||||
```cpp
|
||||
#include <unordered_map>
|
||||
```
|
||||
|
||||
## 验证
|
||||
|
||||
- 编译器: MSVC 2022 (v143)
|
||||
- C++ 标准: C++20
|
||||
|
||||
## 相关
|
||||
|
||||
- commit: `c7f2524c46a98afe8319b97d1d11674c44742533` (v1.0.0-104)
|
||||
@@ -0,0 +1,39 @@
|
||||
# VDE-054: GCC builtins 在 MSVC 不可用 (__builtin_prefetch / __builtin_ia32_pause)
|
||||
|
||||
- **ID**: VDE-054
|
||||
- **Date**: 2026-07-29
|
||||
- **Status**: Open
|
||||
- **Severity**: Critical
|
||||
- **Category**: BUILD
|
||||
- **Source**: ViewDesign 架构纠正计划 (Task 11) — VDE=ON MSVC 构建
|
||||
|
||||
## 现象
|
||||
|
||||
MSVC 编译 VDE 核心库时出现以下错误:
|
||||
```
|
||||
error C3861: "__builtin_prefetch": 找不到标识符 (performance_tuning.h:310,319,581,587,601)
|
||||
error C3861: "__builtin_ia32_pause": 找不到标识符 (concurrent_data.h:491,516)
|
||||
```
|
||||
|
||||
## 根因
|
||||
|
||||
以下文件使用了 GCC/Clang 特有的 builtin 函数,缺少 MSVC 等价实现:
|
||||
|
||||
1. **`include/vde/core/performance_tuning.h`** — 使用 `__builtin_prefetch` (6处)
|
||||
- MSVC 等价: `_mm_prefetch(addr, hint)` (需 `#include <intrin.h>`)
|
||||
|
||||
2. **`include/vde/core/concurrent_data.h`** — 使用 `__builtin_ia32_pause` (2处)
|
||||
- MSVC 等价: `_mm_pause()` (需 `#include <intrin.h>`)
|
||||
|
||||
## 修复建议
|
||||
|
||||
添加跨平台宏,统一抽象为:
|
||||
- `VDE_PREFETCH(addr)` → `__builtin_prefetch` / `_mm_prefetch`
|
||||
- `VDE_PREFETCH_WRITE(addr)` → 写入预取
|
||||
- `VDE_PREFETCH_DIST(addr, dist)` → 带距离参数的预取
|
||||
- `VDE_CPU_PAUSE()` → `__builtin_ia32_pause` / `_mm_pause` / `yield`
|
||||
|
||||
## 相关
|
||||
|
||||
- 文件: `include/vde/core/performance_tuning.h`, `include/vde/core/concurrent_data.h`
|
||||
- 编译器: MSVC 2022 (v143)
|
||||
@@ -0,0 +1,31 @@
|
||||
# VDE-055: MSVC __builtin_prefetch & __builtin_ia32_pause 兼容性修复
|
||||
|
||||
- **ID**: VDE-055
|
||||
- **Date**: 2026-07-29
|
||||
- **Status**: fixed
|
||||
- **Severity**: High
|
||||
- **Category**: BUILD / MSVC
|
||||
- **Source**: ViewDesign Architecture Remediation Task 11
|
||||
|
||||
## Trigger
|
||||
ViewDesign 工程在架构优化(Task 11: 共享库转换)后在 MSVC 下构建失败。
|
||||
|
||||
## Root Cause
|
||||
VDE 代码使用了 GCC 专用内置函数,MSVC 不支持:
|
||||
1. `__builtin_prefetch()` — `performance_tuning.h`
|
||||
2. `__builtin_ia32_pause()` — `concurrent_data.h`
|
||||
|
||||
## Fix Applied (commit 55dc3a2)
|
||||
1. **`include/vde/core/performance_tuning.h`**: 添加 `VDE_PREFETCH`、`VDE_PREFETCH_WRITE`、`VDE_PREFETCH_DIST` 跨平台宏
|
||||
- MSVC: 映射到 `_mm_prefetch()`
|
||||
- GCC/Clang: 保持不变 (`__builtin_prefetch()`)
|
||||
2. **`include/vde/core/concurrent_data.h`**: 添加 `VDE_CPU_PAUSE` 跨平台宏
|
||||
- MSVC: 映射到 `_mm_pause()`
|
||||
- GCC/Clang: 保持不变 (`__builtin_ia32_pause()`)
|
||||
- ARM64: `__asm__ volatile("yield")`
|
||||
|
||||
## Also Fixed
|
||||
- **`src/core/license_manager.cpp`**: 添加缺失的 `#include <unordered_map>`
|
||||
|
||||
## Impact
|
||||
ViewDesign 100 个模块 + 100+ plugins 在 MSVC 下全部构建通过 (0 errors)。
|
||||
Reference in New Issue
Block a user