引用Rick Brewster
Quoting Rick Brewster
Paint.NET 作者 Rick Brewster 宣布,为在 WINE 上运行,该软件内置了从零开始、干净室逆向工程重写的 Direct2D 版本,存放于 `PaintDotNet.Windows.Direct2D1.Managed.dll`,通过 `/wine` 参数触发。代码由 Claude 编写,约 18 万行,未经彻底审查,属“vibe coded”(随性编码)。开发中需人工监督资源管理,Claude 曾遗漏 COM 引用计数 `AddRef()` 操作,并成功逆向工程 Direct2D 效果库公式。
Direct2D 一直是 Paint.NET 在 WINE 上最大的障碍,而且很明显,它永远无法完善到足以满足 Paint.NET 的需求。我也不能直接“禁用”Direct2D 的使用。因此,Paint.NET 现在内置了一个从零开始、干净室逆向工程重写的 Direct2D 版本,用于在 WINE 上运行(通过使用 /wine 参数触发)。它位于 PaintDotNet.Windows.Direct2D1.Managed.dll 中。这是由我们的好朋友 Claude 编写的,没有它,这一切都不可能实现,也永远不会发生。[...] 正如他们所说,这段代码大部分是“vibe coded”(随性编码)。我的意思是,它没有经过彻底审查,更像是“信我没错”的风格。我不可能审查 18 万行代码,这实在太多了。作为参考,Paint.NET 的其余部分大约有 70 万行代码,而我已经开发了 20 多年。[...] 有时,Claude 像 10 个刚被解放的爱因斯坦级 10 倍效率程序员一样疯狂工作。而其他时候……嗯,就不那么尽如人意了。我不得不花不少精力照看 Claude,确保它正确处理资源管理(有一阵子它根本没有对引用计数对象执行 COM 中相当于 AddRef() 的操作,哎呀)。当我发现一些非常糟糕的设计或架构决策时,我不得不敲打它几次。同时,我也对它为了弄清实现 Direct2D 内置效果库所需的所有公式而进行的巧妙且不知疲倦的逆向工程工作印象深刻。—— Rick Brewster,Paint.NET 作者
标签:逆向工程、编码代理、Claude、生成式 AI、AI、LLM、.NET、Linux、随性编码