当前位置: 首页 > news >正文

2026 年发布 WoofWare.PawPrint 早期版本:确定性 .NET 运行时的新进展

照明

切换导航菜单

  • [关于我]
  • [关于本网站]
  • [电影列表]
  • [游戏]
  • [主页]
  • [生活小窍门]
  • [文章]
  • [阅读列表]
  • [热门文章]

宣布推出 WoofWare.PawPrint,一款确定性 .NET 运行时

已向 NuGet 发布了 WoofWare.PawPrint 的早期版本。PawPrint 是一款确定性 .NET 运行时,类似于 CHESS。它运行 .NET 10 的 BCL,解释执行 IL 代码,仅对 BCL 的 JIT 内联函数和本地代码进行包装,没有任何捷径可走。

目前已实现的功能足以支持以下操作:

  • `Console.Writeline`
  • `async void Main(string[] args) {...}`
  • `Task.Run`
  • 大量反射操作
  • 许多低级同步原语,如 `Monitor`

在调度线程时,它采用了概率并发测试的变体,旨在最大程度地探索“有趣”的线程顺序。

如何判断它已准备就绪

选取了六个标准竞态条件,并测试证明能够确定性地识别它们。具体来说,受 Deadlock Empire 的启发,这些测试的形式为“证明某些线程的交错执行会导致已知的不良状况(如死锁或抛出异常)”。尝试的每个测试,测试框架都能立即发现问题,通常只需尝试几个种子值。

它尚未准备好的方面

如果使用它,很可能马上就会出错。BCL 包含大量本地代码,要让 PawPrint 执行这些代码,必须对其进行显式建模。接下来的一项工作是允许用户插入自己的实现,以免受内置不完整性的限制。

总体设计

PawPrint 的最终目标是实现时间旅行调试和对历史的控制。为此,它维护了一个极其丰富的 IL 机器内部模型。所有内容都进行了来源跟踪;每个指针都知道它指向的对象、字段、方法等,每个字节数组都知道它是“对象 Foo 转换为原始字节的投影”还是“用户提供的一堆字节”。所有算术结果都知道它们是“原始整数的和”还是“同一数组内指针的差”等等。

大语言模型的使用

最初的设计是自己完成的,一开始是手动编写代码。在这个过程中的某个时候,Sonnet 4.6 发布,开始用它来获取有关 .NET 的参考信息。还使用 Gemini 2 Pro 在 ECMA - 335 规范中进行模糊搜索。

到了 2026 年,也和其他人一样陷入了大语言模型狂热,使用 Claude Opus 4.6/7 和 GPT - 5.5 来“完成”项目。这极大地加速了开发进程,相信这让项目节省了数年时间,但代价是代码在细节上带有 Claude 的风格。

这个项目特别适合使用大语言模型,因为有参考实现(.NET 10 本身)和规范(ECMA - 335)。

大语言模型犯的错误

在这个项目中仍需把控架构方向。只有一次,因为太懒而把一个复杂的架构决策完全交给了 GPT - 5.5,结果是一场灾难,最后不得不手动重写。

这个决策涉及到本地代码和一些不安全类型转换需要真正的字节数组来计算结果,而且 BCL 中有大量 `Unsafe.As` 调用,这使得很难避免通过扁平字节来传递来源跟踪指针。在 PawPrint 中,严格跟踪来源信息。

GPT - 5.5 选择通过在特定范围内分配假地址来表示数组在内存中的特定位置。随着时间的推移,这种方式变得越来越难以处理,对这些数组进行算术运算也变得很麻烦,因为一旦决定用一个真正的整数来表示它们的位置,就会丢失其来源信息。最终,摒弃了这种方式,用合成的“我是堆对象 Foo 的地址”标记来代替那些整数;对这类对象进行算术运算通常会导致 PawPrint 崩溃,但这没关系,因为 .NET 对这些整数结果通常没有明确的定义。(对已知在同一数组内的指针进行算术运算有特殊支持。)

http://www.zskr.cn/news/1478972.html

相关文章:

  • Nature和Science投稿实战:从实验室师兄那听来的选刊“潜规则”与避坑经验
  • 通化市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 如何3分钟破解百度网盘提取码难题?这个免费神器让你告别搜索焦虑
  • Android 7.1系统设置里直接开关状态栏和导航栏的方案(免Root、AOSP级实现)
  • MATLAB FFT多波束合成仿真包:含汉宁窗对比图与方向图可视化
  • 通辽市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • Python写的串口传文件小工具,支持YMODEM和XMODEM协议
  • 从全局平均池化到任意尺寸:深入理解PyTorch AdaptiveAvgPool2d的计算逻辑与可视化
  • 铜川市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 百考通:AI一键生成期刊论文写作,让学术创作更高效
  • 2026年最新庆阳市黄金回收白银回收铂金回收彩金回收权威TOP5口碑门店推荐+正规可靠机构联系方式 - 亦辰小黄鸭
  • 告别BarTender!用C#和POSTEK SDK,从零搭建一个轻量级标签打印系统
  • 铜陵市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • NVIDIA显卡隐藏设置终极指南:如何用Profile Inspector解锁200+隐藏功能
  • 别再死记硬背了!用‘文件特征观察法’5分钟识别CTF MISC题考点
  • 南阳市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 铜仁市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 百考通:AI一键生成开题报告,让学术研究起步更高效
  • 告别手动配置!在Ubuntu 22.04上用VSCode+CMake一键集成OpenCV(C++)
  • 2026年最新衢州市黄金回收白银回收铂金回收彩金回收权威TOP5口碑门店推荐+正规可靠机构联系方式 - 亦辰小黄鸭
  • 2026年最新辽源市黄金回收白银回收铂金回收彩金回收权威TOP5口碑门店推荐+正规可靠机构联系方式 - 亦辰小黄鸭
  • 假如我的代码只有三天生命:从《Three Days to See》反思软件架构的可读性、可维护性与“技术债”清理
  • 【新手也能懂】Windows 环境部署 OpenClaw2.7.9,本地 AI 数字员工完整配置教程(包含安装包)
  • 交直流混联系统优化|基于显式拓扑变量可靠性评估的双Q交直流混合配电网优化规划研究(Python代码实现)
  • 2026年最新开封市黄金回收白银回收铂金回收彩金回收权威TOP5口碑门店推荐+正规可靠机构联系方式 - 亦辰小黄鸭
  • t检验与卡方检验实战指南:数值差异vs类别关联的正确选择
  • 给GIS和游戏开发者的空间坐标转换指南:从ECEF到ENU的图形学理解
  • 2026年最新临沧市黄金回收白银回收铂金回收彩金回收权威TOP5口碑门店推荐+正规可靠机构联系方式 - 亦辰小黄鸭
  • 别再只盯着GPU了!用Xilinx Zynq FPGA加速MobileNet V2图像分类,实测功耗与延迟对比
  • 避开回收猫腻,常州黄金回收去哪认准实体店 - 奢侈品回收测评