每日HackerNews RSS

## Go 数据竞争:深入剖析 本文深入探讨了 Go 语言中令人惊讶的常见问题——数据竞争,尽管该语言以并发性著称。当 Go 代码违反 Go 内存模型时,就会发生数据竞争,可能导致从静默失败到任意内存损坏等各种问题——尤其是在处理像 map 和 slice 这样复杂的数据结构时。 作者详细介绍了在生产代码中遇到的几个真实案例。一个常见的陷阱是在 goroutine 中意外捕获变量,导致对共享变量的并发修改。另一个涉及对看似线程安全类型(如 `http.Client`)内的字段进行并发修改,强调了仔细考虑可变性的必要性。一个特别微妙的竞争涉及一个保护全局 map 的互斥锁,但互斥锁的生命周期与数据不一致,导致同步无效。 关键要点是,Go 语言并发的简易性并不能保证安全性。作者建议使用竞态检测器进行严格测试,深度克隆数据以避免共享可变状态,并尽量减少对闭包的依赖。他们还建议进行潜在的语言改进,例如为闭包提供显式的捕获列表以及编译器生成的 `Clone()` 函数,以帮助防止这些问题。最终,警惕性和对 Go 内存模型的深入理解对于编写健壮的并发应用程序至关重要。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 Go 中因数据竞争导致的百万种死法 (gaultier.github.io) 8 分,由 ingve 发表于 1 小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系方式 搜索:

将 Windows 95 用户界面带到 Windows NT 4.0 是一个复杂的工程,涉及两个团队的紧密合作。虽然定期的沟通让 NT 团队了解 Windows 95 的开发情况,但 NT 团队在后期移植过程中发挥了更积极的作用。 窗口管理器很大程度上是*重新实现*的,以 Windows 95 代码为参考,因为与它们共同的 Windows 3.1 祖先相比,代码差异很大。像 Explorer 这样的组件更直接地*合并*,但需要大量的更新——特别是从 `CHAR` 过渡到 Unicode,这需要像创建 `IShellLinkA` 和 `IShellLinkW` 接口这样的更改。 至关重要的是,更改是双向的。NT 的修复程序被反馈回 Windows 95 代码库,受到 `#ifdef` 指令和巧妙的宏(如 `TCHAR` 和自定义 `SIZEOF` 宏)的保护,以跟踪兼容性验证。这确保了现有 Windows 95 用户的稳定性。 整个过程因其源代码控制系统“SLM”的限制而变得复杂,该系统缺乏分支功能,需要为每次文件更改手动进行三方合并。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 Windows 95用户界面代码是如何移植到Windows NT的? (microsoft.com) 15 分,ayi 发表于 1小时前 | 隐藏 | 过去 | 收藏 | 4 条评论 JojoFatsani 发表于 22分钟前 | 下一个 [–] 真希望有人能把win95的UI代码交给LLM,让它在win11 74位内核上运行。 回复 hulitu 发表于 22分钟前 | 父级 | 下一个 [–] > 让它在win11 74位内核上运行。 它无法编译。 回复 speed_spread 发表于 16分钟前 | 上一个 [–] 我更愿意相信他们只是在SourceSafe中合并了这两个分支。 回复 plorkyeran 发表于 13分钟前 | 父级 [–] 微软内部从未对重要的事情使用SourceSafe。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:

作者探讨了近期大型语言模型(LLM)的进步,以及这如何改变了他们个人的“基准”测试。过去,在晦涩、有记录的个人身上测试模型很有启发性,但现在模型很容易通过。他们转向了更复杂的任务:生成统计物理概念的Javascript可视化图。 作者使用谷歌的Antigravity IDE(由Gemini 3 Pro提供支持),成功地在一个小时内创建了铁磁性的Ising模型的可视化图。该模型准确地生成了数学框架和使用随机扫描吉布斯采样器的模拟。 虽然OpenAI和Anthropic的先前模型也表现良好,但Antigravity的DOM检索功能被证明特别有用。作者认为一些UI元素是不必要的,但总体上赞扬了Antigravity/Windsurf团队和谷歌员工的工作,强调了LLM能力的显著飞跃。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 使用 JavaScript 中的反重力进行统计物理 (christopherkrapu.com) 3 分,由 ckrapu 1 小时前发布 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

超相机 你正在查看四维超相机的三维传感器。 WASD:向前、向侧面移动超相机 Q/E:在ana、kata方向上移动超相机 IJKL:向上/向下、向左/向右旋转超相机 U/O:在wx平面上旋转超相机 Y/P:在wy平面上旋转超相机 0-2:旋转超相机朝向物体 鼠标拖动:旋转传感器视角 鼠标滚轮:缩放 v:显示附加视图 g:切换小工具模式 x:切换体素栅格化 点击:选择顶点 已选:无 h:显示/隐藏控制 超相机 XZ投影(侧视图) YZ投影(正面视图) WZ投影(AnaKata视图) YW投影(奇怪视图) XW投影(奇异视图)

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 展示HN:Hypercamera – 一款基于浏览器的4D相机模拟器 (dugas.ch) 5点 由 chronolitus 1小时前 | 隐藏 | 过去的 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:

## 哈萨克斯坦的塞米亚尔卡:一个重要的青铜时代中心 塞米亚尔卡遗址位于哈萨克斯坦的额尔齐斯河沿岸,是一项重要的考古发现,占地40-140公顷,年代可追溯到晚期青铜时代(公元前1600-1100年)。初步调查显示,通过卫星图像和现场考察,发现了绵延1公里的广泛的矩形土方工程。 出土文物表明文化融合,主要属于阿列克谢耶夫卡-萨加里文化,并受到切尔卡斯库尔文化的影响。重要的是,塞米亚尔卡显示出大量现场锡青铜生产的证据——对于一个草原聚落来说,这非常罕见——利用当地开采的矿石。地球物理勘探揭示了土方工程内部的结构化布局,表明存在居住结构和一个潜在的公共中心建筑。 该遗址的规模及其对河流交通的控制表明它是一个重要的区域中心,可能是哈萨克斯坦北部草原上最大的“原始城市”。由DREAM项目资助的持续挖掘旨在进一步了解其建筑布局、冶金工艺以及在更广泛的区域网络和经济中的作用。塞米亚尔卡挑战了人们对半游牧草原社区及其金属加工能力的先入之见。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 哈萨克草原上的一个主要城市?调查塞米亚尔卡的青铜时代遗产 (cambridge.org) 11点 由 1659447091 1小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系方式 搜索:

## EDN.C:一个快速、零拷贝的EDN读取器 EDN.C是一个用C11编写的高性能EDN(可扩展数据表示法)读取器,旨在实现速度和效率。EDN是一种功能强大、可扩展的数据格式,类似于JSON,提供更丰富的数据类型,如关键字、符号、集合和带标签的字面量,用于自定义数据处理。 **主要特点:** * **性能:** 利用SIMD加速(NEON、SSE4.2、WebAssembly SIMD128)实现快速解析。 * **零拷贝:** 通过直接引用输入数据来最小化内存分配。 * **可扩展性:** 支持带标签的字面量,通过读取器函数进行自定义数据转换。 * **全面支持:** 处理所有核心EDN数据类型和可选的Clojure扩展(命名空间、元数据、扩展字符、比例等 – 编译时可配置)。 * **内存安全:** 使用竞技场分配器进行高效的内存管理。 * **跨平台:** 适用于macOS、Linux、Windows和WebAssembly。 * **经过充分测试:** 包含340多个测试。 **用法:** EDN.C提供了一个简单的API,用于读取和解析EDN数据。它可以作为静态库集成到项目中,也可以通过直接包含源代码来实现。 命令行工具也可用于解析和美化打印EDN文件。 **适用于:** 配置文件、函数式编程环境中的数据交换以及需要快速灵活的数据解析的应用程序。 更多详细信息、构建说明和示例可在[GitHub仓库](https://github.com/DotFox/edn.c)中找到。

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 工作 | 提交 登录 用 C11 编写的快速 EDN(可扩展数据表示法)读取器,具有 SIMD 加速 (github.com/dotfox) 39 分,由 delaguardo 1 小时前发布 | 隐藏 | 过去的 | 收藏 | 2 条评论 Jeaye 2 分钟前 | 下一个 [–] 太棒了。感谢您制作并使用 MIT 许可。我认为它有潜力取代 jank 中的词法分析器。明年我会进行一些基准测试,拭目以待!回复 medv 56 分钟前 | 上一个 [–] 一个非常令人印象深刻的实现,具有 SIMD 和 WASM!回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

## CIS531:从零开始构建编译器 CIS531是一门面向硕士级别的编译器设计课程,侧重于实际实现。学生将为一种不断发展的语言构建编译器,从简单的算术开始,逐步扩展到包含函数、递归和堆分配——最终生成x86-64汇编代码。 该课程使用Racket编程语言(易于学习,并提供相关资源),并参考Jeremy Siek的《编译原理基础》(可选购买)。项目涉及增量开发,每个阶段都建立在上一阶段的基础上,并具有全面的测试。 **课程的主要特点:** * **五个项目:** 逐步构建一个编译器,从栈解释器到支持函数和lambda表达式的语言。 * **强调测试:** 每个项目都包含一个强大的测试套件,以确保正确性。 * **清晰的结构:** 明确的项目结构,提供用于passes、IR定义、解释器和测试的代码。 * **独特的方案:** 专注于一种实用且函数式的方案,牺牲一些典型的编译器特性(如内存安全和寄存器分配),以实现快速开发和清晰度。 该课程旨在提供有益的体验,让学生能够构建一个功能齐全的编译器,并有可能通过添加类型检查或更高级的优化等功能来扩展它。资源和项目详情请访问[https://kmicinski.com/cis531-f25](https://kmicinski.com/cis531-f25)。

Hacker News 新闻 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 用五个项目构建一个编译器 (kmicinski.com) 26 分,作者 azhenley 2 小时前 | 隐藏 | 过去 | 收藏 | 2 评论 AdityaSanthosh 10 分钟前 [–] 你好,看起来是个有趣的课程。我本科期间没有学过编译器(我是电子专业的学生),但我一直是一名程序员,学过 C 和一些底层语言。这门课程需要任何先修的编译器知识吗?回复 ktimespi 7 分钟前 | 父评论 [–] 唯一的先决条件可能是 Racket,以便跟随本书。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

客户端挑战:您的浏览器已禁用 JavaScript。请启用 JavaScript 以继续。网站的必要部分无法加载。这可能是由于浏览器扩展、网络问题或浏览器设置造成的。请检查您的连接,禁用任何广告拦截器,或尝试使用不同的浏览器。

这次黑客新闻的讨论围绕着一项最近的说法,即美国国际开发署(USAID)停摆导致数十万人的死亡。最初的帖子质疑哈佛大学是否应该利用其捐赠基金来应对此类危机。 用户迅速辩论了这一说法的有效性,其中一人链接到FactCheck.org的一篇文章,揭穿了埃隆·马斯克对美国国际开发署内部腐败的指控——据报道,他曾向唐纳德·特朗普提出这些指控。 几位评论员表示支持哈佛大学的立场,引用了提供的证据,而另一些人则认为责任在于受影响国家的政府,将这一说法称为“情感勒索”。 对话还涉及黑客新闻上的自动标题编辑,以及对报道中死亡事件责任归属的一般性分歧。

客户端挑战:您的浏览器已禁用 JavaScript。请启用 JavaScript 以继续。网站的必要部分无法加载。这可能是由于浏览器扩展、网络问题或浏览器设置造成的。请检查您的连接,禁用任何广告拦截器,或尝试使用不同的浏览器。

海龟新闻新 | 过去 | 评论 | 提问 | 展示 | 工作 | 提交登录利用地球磁场学习位置:研究 (unc.edu)10 分,由 hhs 1 小时前发布 | 隐藏 | 过去 | 收藏 | 1 条评论 FridayoLeary 18 分钟前 [–] 我想知道地球磁场反转时会发生什么。 大规模死亡?“令人惊叹的是,海龟可以获取大量无形信息,用于以我们难以想象的方式导航。”我们永远无法与自然竞争,但我发现这句话很有趣。他们实际上制造了一种设备来帮助模拟海龟导航。GPS 已成为生活的一部分。人类可以检测并发现了几乎所有光谱的部分。 指南针已经存在了几个世纪。我绝不是对这项发现不屑一顾。我只是觉得我们所取得的成就令人惊叹。回复 指南 | 常见问题解答 | 列表 | API | 安全 | 法律 | 申请 YC | 联系方式 搜索:

启用 JavaScript 和 Cookie 以继续。

## Supabase-Test:简化的 RLS 测试 一个新的框架 **supabase-test** 旨在简化 Supabase 行级别安全 (RLS) 策略的测试。它为每个测试用例创建快速、隔离的 Postgres 数据库,无需复杂的全局 fixtures 或模拟身份验证。 主要功能包括测试后自动回滚、通过 `.setContext()` 进行身份验证模拟的本地 RLS 测试,以及灵活的数据填充选项(SQL、CSV、JSON、JS)。该框架与流行的测试运行器(如 Jest 和 Mocha)兼容,并与 CI/CD 管道(如 GitHub Actions)集成良好。 创建者 LaunchQL 提供了示例项目和教程来帮助用户入门:[https://launchql.com/learn/supabase](https://launchql.com/learn/supabase)。该包可在 npm 上获取:[https://www.npmjs.com/package/supabase-test](https://www.npmjs.com/package/supabase-test),源代码在 GitHub 上:[https://github.com/launchql/supabase-test-suite](https://github.com/launchql/supabase-test-suite)。

更多

联系我们 contact @ memedata.com