Skip to content

Releases: unknowbug/CoreSwap

CoreSwap 1.20.1-1.0.9

CoreSwap 1.20.1-1.0.9 Pre-release
Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 06 Aug 11:52

修复 Issue #7低线程数/老平台 CPU 吞吐严重倒退(i3-10105 4C8T 上 Chunky 6:59 vs vanilla 2:42)。

根因

默认线程数 = \hardware_concurrency()\(逻辑线程数)——4C8T 上开 8 线程 = SMT 过分配:执行单元争抢 + thread_local 缓存翻倍(8 份挤 L3)+ 内存带宽饱和 → 吞吐倒退 2.5x。

修复(1.0.9)

  1. 默认线程数改为 物理核数(Windows \GetLogicalProcessorInformationEx\ 数物理核,SMT 不重复计;未来可区分 P/E 核)——4C8T → 4 线程
  2. 可配:\CORESWAP_THREADS\ 环境变量 / -Dcoreswap.threads=N\(服务端/客户端同享,可做 A/B 测试)
  3. 顺带修复:WG_B3DDUMP 诊断插桩 getenv 每次采样调用(热路径 393 万次/批)导致性能暴跌——改一次性

验证

  • 主世界 100% 逐位一致保持
  • 本机(12 物理核)16 chunks 171ms(~10.7ms/chunk)

请 i3-10105 用户重测 Chunky radius 650(预期从 6:59 大幅回落;也可 -Dcoreswap.threads=4\ 对比验证)。

CoreSwap 1.20.1-1.0.8

CoreSwap 1.20.1-1.0.8 Pre-release
Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 06 Aug 10:26

修复 Issue #1 最终根因:mod 更新时 dll 缓存不自动替换(XuanRikka 确认)。

修复

  • dll 缓存版本化:每次启动比较 jar 内 dll 与 %TEMP%\\coreswap-native\\worldgen.dll 的逐字节哈希,不同则自动重新解压覆盖——以后更新 mod 无需手动删缓存
  • 根因回顾:旧逻辑只在缓存不存在时解压一次 → mod 更新后缓存里还是旧 dll → 用户永远跑旧代码报假 bug(1.0.2 MinGW dll / 1.0.6 旧 MSVC dll 都是这个缓存机制的受害者)

验证

  • 内嵌 dll = 最新 MSVC(哈希 CFD82B3C4 与构建产物逐字节一致,dumpbin 导入表 MSVCP140/VCRUNTIME140)
  • 主世界 100% 逐位一致保持

如果你已经手动删过 %TEMP%\\coreswap-native,1.0.8 不需要再删(自动处理)。

CoreSwap 1.20.1-1.0.7

CoreSwap 1.20.1-1.0.7 Pre-release
Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 06 Aug 09:33

发布铁律落实版:内嵌 dll 保证是当前最新 MSVC 构建(dumpbin 导入表验证,杜绝 MinGW/旧版 dll 再流入发布包)。

修复:

  • 🔴 打包不同步(1.0.6 内嵌的是 8/5 旧 MSVC dll,缺后续修复)——processResources 自动同步最新 MSVC dll
  • surface 字段错位(surfaceDepth 列初始 / runDepth 扫描计数器分离,hole 条件对齐 Java MaterialRuleContext 语义)
  • 彻底清除 MinGW 残留(构建目录/工具链/脚本,共约 1.2GB)——CMake 只留 MSVC 分支

验证:主世界 100% 逐位一致(1572864/1572864);jar 内 dll 哈希 = build-msvc(CFD82B3C4...);导入表 MSVCP140/VCRUNTIME140(无 libstdc++/libgcc)。

CoreSwap: NOISE+SURFACE 100% 逐位一致,批量并行生成 10-20x;与 Sodium/Iris 互补。多维度引擎(下界 72%)开发中。

CoreSwap 1.20.1 v1.0.6

Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 06 Aug 07:37

Forge+Connector 兼容版(基于社区 PR #3 dustinmoon78 的思路,手动合入并增强 dev 支持)。

  • CoreSwapFixHelper:多级定位 mod jar(codeSource → FabricLoader.getAllMods()/ModOrigin.getPaths() → classloader)后 JarFile 提取
  • 原 getRootPaths() 在 Forge UnionFileSystem(Sinytra Connector)下不可遍历——本版可遍历
  • 增强:dev classpath(目录)也支持(Fabric 开发环境回归验证通过)
  • Fabric 下 codeSource 路径与旧逻辑等价,行为不变

CoreSwap: NOISE+SURFACE 100% 逐位一致,批量并行生成 10-20x;与 Sodium/Iris 互补。Forge 需 Sinytra Connector。

CoreSwap 1.20.1 v1.0.5

Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 06 Aug 07:26

修复 1.0.4 客户端进入世界崩溃(Cppworldgen.java:36 mod id 漏改)。

  • 1.0.3 只修了 CppBridge.java,CppWorldgen.java 的 getModContainer("worldgen-bench") 漏改——全新环境(无 %TEMP%\coreswap-native 缓存)进入世界时解压 dll 触发 NoSuchElementException
  • 本版全量排查 worldgen-bench 残留(src+resources 清零)
  • 验证方法:删 %TEMP%\coreswap-data 和 %TEMP%\coreswap-native 两个缓存目录(此前只删前者未暴露)

CoreSwap: NOISE+SURFACE 100% 逐位一致,批量并行生成 10-20x;与 Sodium/Iris 互补。多维度引擎(下界 72%)开发中。