当前位置: 首页 > 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.jsqmd.com/news/967232/

相关文章:

  • 通化市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 如何3分钟破解百度网盘提取码难题?这个免费神器让你告别搜索焦虑
  • Nature和Science投稿实战:从实验室师兄那听来的选刊“潜规则”与避坑经验
  • 两自由度Stewart平台Matlab仿真工具包:正逆运动学计算、复合姿态动画与高精度工作空间点云生成
  • 2026年合肥市PMP培训机构哪家好?官方授权R.E.P.报考指南 - 众智商学院课程中心
  • 汕头周六黄金回收上门实测 2026年6月六家正规门店报价与甄选指南 - 余生黄金回收
  • DP2232H的MPSSE双通道玩法:同时调试JTAG和UART,一个USB口搞定嵌入式开发
  • MATLAB FFT多波束合成仿真包:含汉宁窗对比图与方向图可视化
  • 68%的Agent因“提前放弃“而失败——长时域任务的真正考验
  • Go 语言:开源高效编程之选,附下载、安装与贡献代码指南
  • 从实验室到产业界:OpenAirInterface(OAI)如何成为5G/6G创新的开源引擎?
  • KingbaseES日常运维‘急救包’:连接不上、备份失败?这些命令帮你快速排错
  • ABAP ALV转换例程避坑指南:排序筛选乱码?别忘了配对这个关键函数
  • 通辽市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 点云标注避坑指南:用CloudCompare保存带语义标签的PLY文件,为什么选ASCII格式?
  • 终极Unity游戏自动翻译解决方案:XUnity Auto Translator完全配置指南
  • Python写的串口传文件小工具,支持YMODEM和XMODEM协议
  • 180B参数也扛不住抽象推理——ARC-AGI-2揭示的“规模定律失效“
  • 汕尾市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 多曝光图像融合双平台实现:Matlab与Python拉普拉斯金字塔融合脚本+测试图
  • 5G网络优化实战:如何通过SIB1参数调整(如BWP配置、RACH时机)改善小区接入性能
  • 铜川市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 从全局平均池化到任意尺寸:深入理解PyTorch AdaptiveAvgPool2d的计算逻辑与可视化
  • 别再只背单词了!用《Midnight Visitor》这篇课文手把手教你搭建英语技术阅读环境
  • 百考通:AI一键生成期刊论文写作,让学术创作更高效
  • ABAP ALV报表进阶:深入理解转换例程(Conversion Exit)的原理与实战应用
  • C语言这么厉害,它自身又是用什么语言写的?
  • 3分钟安装智慧树自动刷课插件:免费开源的高效学习解决方案
  • 商洛市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 2026年最新庆阳市黄金回收白银回收铂金回收彩金回收权威TOP5口碑门店推荐+正规可靠机构联系方式 - 亦辰小黄鸭