2024-05-08

23 篇热帖

1. AlphaFold 3 predicts the structure and interactions of life's molecules (blog.google)

AlphaFold 3:预测生命分子结构与相互作用的革命性AI模型

模型概述

AlphaFold 3是由Google DeepMind与Isomorphic Labs联合开发的新一代AI模型。它能够以前所未有的精度,预测蛋白质、DNA、RNA、配体(包括许多药物)等生命分子的三维结构及其相互作用。相较于现有预测方法,AlphaFold 3在预测蛋白质与其他分子类型的相互作用方面,精度至少提升50%,在某些关键类别中精度甚至翻倍

核心技术特点

  • 能力范围:给定分子列表,AlphaFold 3能生成它们的联合三维结构,揭示分子间的结合方式。它不仅建模大型生物分子(蛋白质、DNA、RNA),也建模小分子(配体)以及控制细胞功能的化学修饰。
  • 模型架构:核心基于改进的Evoformer模块(深度学习架构),并采用扩散网络(类似AI图像生成器)来组装预测。该过程从一个原子云开始,通过多步骤迭代收敛至最精确的最终分子结构。
  • 整体计算:作为一个单一模型,它能够整体计算整个分子复合物,从而统合科学见解,这是其独特优势。

应用与影响

推动药物发现

  • AlphaFold 3能高精度预测药物样相互作用,例如蛋白质与配体的结合、抗体与其靶蛋白的结合。
  • PoseBusters基准测试上,其精度比最佳传统方法高50%,且无需输入任何结构信息,成为首个在生物分子结构预测上超越基于物理工具的AI系统。
  • Isomorphic Labs已与制药公司合作,将AlphaFold 3应用于实际的药物设计挑战,以加速并提高药物设计的成功率,开发新的治疗方法。

免费研究工具:AlphaFold Server

  • Google DeepMind新推出的AlphaFold Server是全球最精确的预测蛋白质与其他分子相互作用的工具,免费供全球科学家用于非商业研究。
  • 科学家只需点击几下,即可利用其建模由蛋白质、DNA、RNA及多种配体、离子和化学修饰组成的复杂结构,快速生成假设并加速实验室工作流。
  • 该服务器降低了研究门槛,使研究人员无需强大的计算资源或机器学习专业知识即可使用。此前,实验性蛋白质结构预测可能耗时数年、花费数十万美元,而AlphaFold系列模型已预测了数亿个结构。

拓展生物学与农业研究

  • AlphaFold 3超越了蛋白质范畴,覆盖了广泛的生物分子谱系,有望解锁更多变革性科学,例如开发生物可再生材料、培育更具抗逆性的作物,以及加速基因组学研究。

负责任的开发与共享

  • 团队采取科学引领的方法,在发布前与50多位领域专家及第三方机构进行了广泛评估,以缓解潜在风险并确保广泛受益。
  • AlphaFold Server体现了其持续共享成果的承诺,包括免费的2亿蛋白质结构数据库。
  • 正在与EMBL-EBI等合作伙伴扩展免费的AlphaFold在线教育课程,并与全球南方地区的组织合作,为科学家提供工具,以加速在资金不足领域(如被忽视疾病和粮食安全)的研究。
  • 承诺继续与科学界和政策制定者合作,负责任地开发和部署AI技术。

展望未来

AlphaFold 3将生物世界带入“高清时代”,让科学家能够看到细胞系统在结构、相互作用和修饰方面的全部复杂性。它揭示了生命分子之间的连接及其如何影响生物功能(如药物作用、激素产生、DNA修复)。通过赋能全球科学家加速生物学领域的开放性问题研究,AlphaFold 3及其免费服务器的影响正在逐步实现,其未来潜力有待进一步发掘。

2. 'Underwater bicycle' propels swimmers forward at superhuman speed (newatlas.com)

设备概述
Seabike 是一种水下移动设备,被称为“水下自行车”,旨在通过机械推进方式使游泳者获得超快速度。该设备由可延伸杆、腰部带子和踏板组成,驱动一个直径约15英寸(38厘米)的螺旋桨。

工作原理
用户将杆延伸至合适长度,并用带子固定在腰部,通过踩踏板推动螺旋桨。螺旋桨转动产生推力,使用户在水中前进。设备设计允许用户同时使用手臂游泳,以增强推进力,或采用超人姿势漂浮,甚至完全潜入水下。它兼容SCUBA装备,适合潜水使用。

关键功能和用途

  • 多模式使用:可正面或反向使用;反向时,翻转设备并用手臂驱动,但体验较差。
  • 安全特性:螺旋桨转速较慢,可在泳池安全使用;设备具有浮力,便于找回。
  • 应用场景:适用于开放水域游泳、浮潜、潜水等活动。公司还提供配套的浮潜板和钓鱼套件。
  • 便携性:可拆卸存储,方便携带。

价格和市场
Seabike 起售价为290欧元(约310美元),已销售至少一年。尽管目前关注度不高,但其简单、机械的设计被认为具有潜力,无需充电,依靠人体动力驱动。

总结
Seabike 是一种创新的水下推进设备,通过机械方式提升游泳速度,结构简单、功能多样,适合娱乐和运动使用。

3. U.S. Rules Apple Illegally Interrogated Staff and Confiscated Union Flyers (www.forbes.com)

美国国家劳动关系委员会(NLRB)于本周一裁定,苹果公司在2022年于纽约世贸中心门店非法质询员工,确认了此前行政法法官的裁决。该裁决认定苹果公司因员工的工会倾向而对其进行了不当质询。

主要事实

  • 委员会确认了行政法法官劳伦·埃斯波西托去年的裁决:苹果公司违法阻止员工在世贸中心门店休息室的桌子上放置工会传单,没收了传单,并就员工的“受保护的协同活动”(指组建或支持工会的活动)进行了质询。
  • 法官此前已命令苹果公司停止就工会相关事宜非法质询员工,并停止从员工休息室没收工会传单。
  • 据彭博社报道,这是NLRB首次对苹果公司做出裁决。
  • 委员会不能对苹果公司的违规行为施加罚款或直接处罚。
  • 苹果公司未立即回应媒体的置评请求。

关键背景

  • 苹果公司仍有其他涉及工会的待决案件。据彭博社报道,其中一案指控苹果公司非法将已加入工会的员工排除在某些福利之外。
  • 近年来,包括新泽西州Short Hills、俄克拉荷马城和马里兰州Towson在内的多家苹果门店尝试组建工会,后两者已成功建立工会。
  • 苹果公司在应对员工工会化努力时似乎面临普遍反对。2022年底,NLRB曾认定苹果在亚特兰大一家门店举办强制性反工会会议,并由管理层发表了针对员工的胁迫性言论,该行为属违法。
4. 40 years later, a game for the ZX Spectrum will be again broadcast over FM radio (www.racunalniski-muzej.si)

40年后,一款ZX Spectrum游戏将再次通过FM广播播放

斯洛文尼亚的Radio Študent电台曾在广播中传输Sinclair ZX Spectrum游戏,用户通过录音带记录并游玩。如今,在电台庆祝55周年之际,将重现这一怀旧体验。

电台邀请了两位传奇Software编辑团队成员:Žiga Turk(Moj Mikro杂志联合创始人、斯洛文尼亚互联网先驱)和Matevž Kmet。他们共同创作了著名的文本冒险游戏《Kontrabant》及其续作《Kontrabant 2》。

活动安排:

  • 访谈环节:今天20:30至21:30,两位嘉宾将在计算机博物馆进行对话
  • 广播传输:约21:30开始,通过89.3 MHz FM频率广播《Kontrabant 2》
  • 参与方式:持有ZX Spectrum设备的玩家可直接测试;无设备者可前往计算机博物馆或在线参与

此次活动旨在通过技术手段重现40年前的游戏传播方式,让玩家重温历史。

5. Decker: A reincarnation of HyperCard with 1-bit graphics (www.beyondloom.com)

Decker:基于1位图形的HyperCard精神续作

Decker 是一个用于创建与分享交互式文档的多媒体平台,支持声音、图像、超文本和脚本行为。用户可在浏览器中直接体验。

它继承了 HyperCard 的遗产与经典 MacOS 的视觉风格,保留了 HyperCard 的简洁与易学性,并引入了诸多改进:深度撤销历史、支持滚轮与触摸屏、更现代的键盘导航以及批量编辑操作。

Decker 可用于创建电子杂志、组织笔记、制作演示文稿、构建冒险游戏或绘制1位像素艺术。其整体的“抖动朋克”美学舒适且带有一丝怀旧感,提供了独特而有趣的创作约束。作为原型工具,它鼓励一种草图式、不完美的创作方式。完成的“卡片组”可保存为独立的 .html 文件,在浏览器中自行执行,并可嵌入任何可托管网页的地方。Decker 也可在 MacOS、Windows、BSD 和 Linux 上原生运行。

为应对更复杂的项目,Decker 提供了一种新颖的脚本语言 Lil,深受 Lua(常用于工具和游戏引擎的命令式语言)和 Q(用于时序数据库的 APL 家族函数式语言)的影响。Lil 易于学习,对已有编程经验的用户来说足够常规,但也包含如隐式标量-向量运算和集成的类 SQL 查询语言等实用特性。少量 Lil 代码即可实现强大功能。

Decker 内置了一系列交互小部件用于构建界面,并允许定义新的自定义小部件。自定义小部件及其定义可通过系统剪贴板复制粘贴,使得任何可共享文本的地方都能分享它们。每个卡片组都是一个可复用部件的工具箱,可被提取并用于其他项目。

Decker 对命令行友好:从源代码构建时,它会附带 Lilt,这是一个独立的 Lil 解释器,可(除其他功能外)以“无头”模式读取、写入、操作甚至执行 Decker 文档。Lilt 的依赖比 Decker 本身更少,因此也可编译为跨平台的 APE 可执行文件,用于编写可随处运行的脚本。甚至还有一个运行在 POSIX AWK 上的 Lil 解释器。卡片组以面向行的文本格式存储,可与 Git 和 SVN 等版本控制工具良好互操作。

Decker 不包含广告、遥测、游戏化、垃圾生成器集成或其他侵犯用户隐私和自主权的元素。

示例、库与文档 文章列出了多个应用示例(如导览、游戏、解释器等)、一系列功能库(绘图、统计、PDF导出、动画、寻路等),以及丰富的文档资源(参考手册、语言指南、快速入门等)。

额外资源 Decker 是免费且开源的,采用 MIT 许可证。源代码和错误跟踪器位于 GitHub。适用于 MacOS 和 Windows 的定期二进制版本可在 Itch.io 下载,该页面还设有社区论坛。项目每年七月和十二月举办主题“游戏开发活动”。

6. TimesFM: Time Series Foundation Model for time-series forecasting (github.com)

TimesFM:时间序列预测基础模型

TimesFM 是由 Google Research 开发的时间序列预测基础模型。

核心信息

  • 定位:预训练的时间序列预测基础模型。
  • 来源:Google Research,相关论文《A decoder-only foundation model for time-series forecasting》已在 ICML 2024 发表。
  • 主要版本:当前最新公开版本为 TimesFM 2.5。历史版本 1.0 和 2.0 的代码已归档。

TimesFM 2.5 版本关键特性

与前代 2.0 版本相比,TimesFM 2.5 的主要改进包括:

  • 参数规模:使用 200M 参数,从 500M 大幅减少。
  • 上下文长度:支持最长 16k 的输入上下文长度(2.0 版本为 2048)。
  • 预测能力:支持最长达 1k horizon 的连续分位数预测,通过一个可选的 30M 分位数预测头实现。
  • 架构优化:移除了频率指示器。
  • 功能增强:新增了若干预测配置标志。
  • 附加功能:支持通过 XReg 引入协变量。

自 2025 年 9 月发布以来,模型持续进行了以下优化:提供了 Flax 版本以加快推理速度、完善了协变量支持、丰富了文档与示例(包括代理技能)、增加了基于 HuggingFace Transformers + PEFT (LoRA) 的微调示例,以及为核心层、配置和工具函数添加了单元测试。

部署与使用

  • 集成环境:TimesFM 已集成在 Google 的产品中,包括 BigQuery ML、Google Sheets 和 Vertex Model Garden。
  • 安装方式
    1. 克隆代码仓库。
    2. 使用 uv 创建虚拟环境并安装依赖。支持根据不同后端(PyTorch 或 Flax/Flax)及特定需求(如 XReg)安装。
  • 使用示例:文章提供了一个基于 PyTorch 的基本代码示例,展示了如何加载预训练的 timesfm-2.5-200m-pytorch 模型、配置预测参数(如最大上下文、最大预测 horizon、是否进行输入归一化、是否启用连续分位数预测等),并执行预测以获取点预测和分位数预测结果。
7. IBM Granite: A Family of Open Foundation Models for Code Intelligence (github.com)

IBM Granite 代码智能开源基础模型家族概览

模型概述

IBM Granite 是一系列仅解码器(decoder-only)的开源代码模型,专门针对代码生成任务(如修复缺陷、解释代码、编写文档等)设计,支持116种编程语言。该系列模型在多样化任务评测中表现优异,是目前开源代码大语言模型中的领先方案。

核心优势

  • 全能型代码助手:在代码生成、解释、修复、编辑、翻译等各类代码任务上均达到竞争力或最先进的性能水平。
  • 可信赖的企业级模型:遵循IBM AI伦理原则和企业法律团队指导,使用许可证合规数据训练,全部模型采用Apache 2.0许可证开源,支持研究和商业使用。

模型变体与规格

Granite代码模型包含两个主要变体:

  1. 基础模型(Base Models):专为代码相关任务(如代码修复、解释、合成)设计的基础模型。
  2. 指令模型(Instruct Models):基于Git提交记录对与人工指令结合,以及开源合成代码指令数据集进行微调的指令跟随模型。

两个变体均提供3B、8B、20B、34B四种参数规模。

数据准备

代码预训练数据处理流程包括:

  1. 数据收集:整合公开数据集(如GitHub Code Clean、Starcoder数据)、公开代码仓库及GitHub Issues。
  2. 数据过滤:根据文件扩展名筛选编程语言,并过滤低质量代码。
  3. 去重策略:采用精确与模糊去重相结合的激进策略,移除(近乎)完全相同的代码内容。
  4. 安全与隐私处理
    • 应用HAP内容过滤器,减少模型生成仇恨、辱骂或亵渎性语言的可能性。
    • 脱敏个人身份信息(PII),如将姓名、邮箱、密钥等替换为对应标记(如⟨NAME⟩)。
    • 使用ClamAV扫描所有数据集以识别和移除恶意软件。
  5. 补充自然语言数据:整理多个高质量公开自然语言数据集,以提升模型在语言理解和数学推理方面的能力。

预训练流程

基础模型在约3-4万亿个代码及自然语言相关token上训练,使用字节对编码(BPE)分词器(与StarCoder相同)。

  • 第一阶段(纯代码训练)
    • 3B和8B模型在4万亿token的代码数据(覆盖116种语言)上训练。
    • 20B模型在3万亿token代码数据上训练。
    • 34B模型基于20B模型的1.6T检查点进行深度扩展后,在1.4万亿token上训练。
  • 第二阶段(代码+自然语言训练)
    • 引入高质量公开数据(包括技术、数学、网络文档等领域),进行5000亿token训练(80%代码+20%自然语言混合)。

指令微调

指令模型在以下类型数据上进行微调:

  1. 代码提交数据:来自CommitPackFT的数据集。
  2. 数学数据集:如MathInstruct、MetaMathQA。
  3. 代码指令数据集:包括Glaive-Code-Assistant-v3、Self-OSS-Instruct-SC2、Glaive-Function-Calling-v2、NL2SQL11及合成API调用数据集。
  4. 语言指令数据集:如HelpSteer和经许可证过滤的Platypus。

评估表现

在HumanEvalPack、MBPP、MBPP+等涵盖Python、JavaScript、Java等多种语言的综合基准测试中,Granite模型在不同参数规模上均优于同类开源模型(如Mistral-7B、LLama-3-8B等)。

使用指南

推理示例

from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"
model_path = "ibm-granite/granite-3b-code-base-2k"  # 可选择其他模型路径
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()

input_text = "def generate():"
input_tokens = tokenizer(input_text, return_tensors="pt").to(device)
output = model.generate(**input_tokens)
print(tokenizer.batch_decode(output))

模型微调: 使用Dolomite Engine进行微调,步骤包括克隆仓库、修改配置文件并执行训练与导出脚本。

许可证与反馈

所有Granite代码模型均以Apache 2.0许可证分发。用户可通过HuggingFace仓库的社区讨论区或GitHub Discussions页面提供反馈。

8. Tesla is being investigated for securities and wire fraud for self-driving claim (www.theverge.com)

美国司法部正在对特斯拉公司就其自动驾驶功能宣传展开证券欺诈和电信欺诈调查。调查主要关注特斯拉高管(特别是首席执行官埃隆·马斯克)是否通过夸大其自动驾驶技术的能力,误导了消费者、投资者和监管机构。

调查重点包括特斯拉的“Autopilot”(自动辅助驾驶)和“完全自动驾驶”(Full Self-Driving)系统。尽管特斯拉长期以来声称其车辆具备或即将具备完全自动驾驶能力,但这些高级驾驶辅助功能实际上并未实现车辆自主驾驶,仍要求驾驶员保持注意力并随时准备接管。

特斯拉曾因使用Autopilot系统涉及数百起碰撞事故(包括数十起致命事故)而多次召回车辆。最近的一次召回涉及所有已售特斯拉车辆,但该软件修复方案又因未能有效防止驾驶员误用而面临新的调查。

此次调查不仅涉及特斯拉的自动驾驶宣传,还可能包括其对车辆续航里程的夸大宣传。美国证券交易委员会(SEC)也在对特斯拉的自动驾驶相关通讯进行审查。

特斯拉在其最新的证券文件中表示,公司“定期”收到美国证券交易委员会和司法部的传票及信息请求,其中一些涉及Autopilot和完全自动驾驶系统。但特斯拉同时声称,据其所知,没有政府机构在任何进行中的调查中认定其存在不当行为。

10. Show HN: I made a better Perplexity for developers (devv.ai)

Devv:面向开发者的下一代AI编码代理

Devv是一款针对开发者的AI编码工具,被定位为比Perplexity更优的解决方案。它是一个原生编码代理,旨在帮助独立开发者和小型团队快速构建和交付全栈AI驱动的产品。该产品已获得超过70万开发者的信任,并有数百万资金支持。推广口号鼓励用户在本周末启动他们的第一个AI产品。主要特点包括专注于AI编码、支持快速开发,以及面向特定用户群体(独立构建者和小团队)的实用性。

11. Symbolica Computer Algebra System (symbolica.io)

Symbolica 计算机代数系统 是一个用于 Python 和 Rust 的高性能计算机代数库,专注于实现大表达式操作、模式匹配以及生成优化的数值代码,并提供前所未有的处理速度。该系统被 CERN 和全球领先的研究机构所信赖。

核心功能与示例:

  1. 高级模式匹配:允许使用强大的通配符和条件规则来匹配和转换数学表达式。
  2. 自动求导:支持符号求导,并能自动应用链式法则和乘积法则。
  3. 多项式代数:提供世界一流的多变量最大公因式、因式分解和插值计算,这是其速度的核心。
  4. 数值评估:能够在表达式中混合内置函数和用户自定义函数,并生成高效的数值代码。

主要特点:

  • 表现力强的API:为 Python 和 Rust 提供清晰、直观的接口,简化复杂的代数操作。
  • 无限扩展性:通过流式评估处理超过内存限制的表达式,不受问题规模约束。
  • 开源与可用性:个人和非商业用途可免费使用一个实例;完整源代码在 GitHub 上公开,支持开发跟踪和贡献。

应用价值:Symbolica 旨在为科研和工程领域提供高效、可靠的符号计算与数值代码生成工具。

12. Why use ECC? (2015) (danluu.com)

为何使用ECC内存?

本文旨在反驳程序员Jeff Atwood反对使用ECC(纠错码)内存的主要论点,并阐明在服务器和消费级硬件中使用ECC的重要性。

对反对论点的逐一反驳

  1. 谷歌在1999年的做法不是榜样

    • 谷歌很快意识到不使用ECC是一个代价高昂的错误。盲目模仿谷歌早期的实验性做法(如将服务器放入集装箱、设计存在缺陷导致火灾和员工伤害的服务器)是不明智的。
    • 不使用ECC曾导致谷歌搜索索引出现随机结果。这表明,即使应用能容忍个别错误,内存损坏也可能导致系统级的、难以预料的完全故障,而不仅仅是个别错误。
  2. 硬错误与软错误的比例不足以忽视软错误

    • 引用的研究表明约70%的DRAM故障是永久性(硬)故障,30%是瞬态(软)故障。这实际上支持了使用更强纠错功能(如Chipkill)的论点。
    • 硬错误并非一成不变,它们会随着时间推移而出现。定期运行内存测试(如memtest)不切实际,且无法像ECC那样持续监测。
    • ECC的关键作用之一是错误信号,以便在无声数据损坏发生前更换硬件。作者以实际经历为例,说明内存问题导致的数据损坏难以追踪,而更换内存后问题解决。
  3. 硬件可靠性提高并不意味着错误罕见

    • 随着内存容量呈指数增长,即使硬件可靠性提高,发生错误的总次数也可能增加。
    • 芯片工艺尺寸缩小(如20nm)使得晶体管和电容对噪声更敏感,增加了出错风险。
    • 引用的研究本身显示,在发生故障的节点中,修正错误的数量达到每月数百至数千次,这与“可靠性极高”的说法相矛盾。
    • 历史教训:Sun公司曾因在缓存中省略ECC而导致客户数据损坏,声誉受损。
    • 购买ECC内存不仅是为了纠错码本身,通常也意味着购买了经过更严格质量认证(qualified)的CPU和主板等部件,其整体可靠性更高。
  4. “如果重要就会普及”的市场逻辑不成立

    • 服务器与消费级硬件的功能差异源于价格歧视策略,而非消费级不需要。硬件厂商通过为高价值服务器功能溢价定价来获利。
    • 一些功能对服务器远比对移动设备或偶尔崩溃重启的消费设备更重要。

结论

  • 服务器:考虑到成本,使用ECC内存是一个明智的选择。虽然难以精确量化无声数据损坏的成本,但避免因偶发故障耗费大量开发时间进行排查,其价值是明确的。
  • 消费级桌面用户:作者支持使用ECC。在确保已有基本备份等保障措施后,ECC能提供额外保护。例如,它可以防止将损坏的数据写入主存储并随后复制到备份中。
    • 消费者不使用ECC的主要原因并非其不值得,而是多数用户无法将系统崩溃和数据损坏归因于内存错误。一旦像谷歌等大公司那样进行错误追踪,ECC的价值便显而易见。
  • 安全附录:允许代码执行的环境(即使是沙盒)可能面临如Rowhammer等通过诱发内存错误进行权限提升的攻击。ECC虽不能完全阻止此类攻击,但能显著增加其难度。

总而言之,ECC内存在确保数据完整性和系统可靠性方面具有重要价值,不应仅因其在服务器领域常见就认为它对消费级用户不重要。

15. Show HN: A simple 2D fluid and gravity simulation with WASM and WebGL (aestuans.github.io)

项目概述

这是一个在 Hacker News 上展示的项目,旨在演示一个简单的2D流体和重力模拟。

核心功能

  • 模拟类型:实现2D流体动力学和重力效果,可能包括粒子运动或网格基模拟。
  • 技术实现:使用 WebAssembly(WASM)和 WebGL 技术,以在网页浏览器中提供高性能的图形渲染和计算。

代码访问

  • 项目代码托管在 GitHub 仓库:aestuans/blob,可供查看和进一步开发。

其他细节

  • FPS(每秒帧数)信息未提供,表明可能默认或未特别强调性能数据。
16. The search for easier safe systems programming (www.sophiajt.com)

文章摘要

背景与动机

作者自2016年参与Rust项目,认为Rust虽强大但学习曲线陡峭。基于两年教学经验,作者提出问题:是否能创建一种易于使用、学习和教学的安全系统语言?为此,作者与合作者Jane Losare-Lusby秘密开发了新语言June,目标是达到类似Go的学习难度。

June的核心创新:分组内存分配

  • Rust的复杂性:Rust中每个内存部分有独立生命周期,需跟踪所有权、借用、泛型等概念,导致代码和错误信息复杂。
  • June的改进:提出将相关内存分配分组共享生命周期,简化内存管理。例如,数据结构(如链表)中所有节点共享同一生命周期。

分组分配的好处

  1. 代码简洁:所有用户定义值均为指针,类型名直接表示指针,减少注解。
  2. 生命周期简化:仅需三种可读生命周期:
    • Local:分配未逃逸函数。
    • Param(xxxx):分配通过参数逃逸。
    • Return:分配通过返回值逃逸。
  3. 释放效率:组内分配整体释放,无需管理释放顺序,可能提升性能。
  4. 灵活数据结构:允许创建循环链表等任意结构,使用共享可变指针。

处理共享可变指针

  • 问题:Rust禁止共享可变指针以避免竞态条件和意外副作用。
  • June的解决方案:允许共享可变指针,但通过“完全封装”管理:
    • 编译器强制封装,防止内部指针别名化。
    • 支持单所有者封装,可安全跨线程发送。
    • 促进清晰API设计,真正隐藏实现细节。

分组分配的缺点与回收机制

  • 缺点:内存膨胀,分配内存在组释放前无法回收(无垃圾回收或引用计数)。
  • 安全内存回收
    • 利用完全封装跟踪指针副本计数(类似引用计数但无自动回收)。
    • 提供recycle命令手动触发回收,针对指针及其可达指针进行标记-清扫。
    • 回收操作线性时间,需开发者可见性以避免隐藏开销。

未来工作与挑战

  • 工具需求:开发内存跟踪工具以检测和警告内存膨胀。
  • 增量开发:支持先实现功能再优化,June保证内存安全的同时提供改进工具。
  • 与Rust的关系:June偏向应用开发,可与Rust(专注嵌入式/系统)互补;待Rust稳定ABI后,June可调用Rust crate。
  • 探索方向:超越面向对象编程,寻求更模块化、可组合的代码重用方法;研究其他内存管理技术。
  • 现状:June文档和参考编译器已发布(pre-alpha质量),感谢众多专家贡献和测试者反馈。

总结

June旨在通过分组内存分配和完全封装简化安全系统编程,降低学习门槛,同时保持内存安全和系统级控制。尽管存在内存管理挑战,但提供了半自动回收和未来改进路径。

17. Show HN: Tegon: AI-first open source alternative to Jira and Linear (github.com)

Tegon:AI优先的开源问题跟踪工具

Tegon 是一款面向开发者的轻量级、可定制的开源问题跟踪工具,旨在成为 Jira 和 Linear 的替代方案。它不仅仅是一个记录系统,更致力于成为一个集成上下文自动化操作的系统,以提升团队生产力。

核心特点与定位

  • 开源与轻量:提供灵活的自托管(🚀 Self-hosting🖥️ Local Setup)与托管云版本(app.tegon.ai)。
  • AI优先:核心设计围绕集成工作上下文和自动化操作。
  • 解决现有工具不足:针对传统工具或过于臃肿、或过于简单无法处理复杂场景的问题。

主要功能

目前处于 Alpha 开发阶段,已实现的功能包括:

  • 问题管理:支持添加、筛选、排序、编辑和跟踪问题。
  • 看板视图:可视化跟踪工作进度。
  • Slack 集成:可通过 Slack 中的 👀 表情符号自动创建问题。
  • 集中管理入口:在“Triage”模块统一处理所有传入的请求。
  • 自定义视图:创建符合团队需求的个性化视图。

Tegon Actions:自动化框架

这是一个强大的自动化框架,用于简化重复性任务,例如:

  • 创建问题时自动分配标签。
  • PR 提交时自动创建评审子问题。
  • 从 Slack 中快速创建问题。
  • 在 Slack 上每周自动发送已完成问题的摘要和更新日志。

未来规划

  • 持续更新:计划快速迭代,定期发布新功能。
  • 自定义工作流:即将提供更多工具,让用户能够扩展和自定义 Tegon 的工作流。

参与和贡献

项目欢迎社区参与:

  • 可以在 GitHub 上为项目加星标。
  • 查阅官方文档。
  • 关注其 Twitter 或 LinkedIn 账号。
  • 加入 Slack 社区交流。
  • 非常欢迎贡献代码或反馈需求。
18. Ointers: A library for representing pointers where bits have been stolen (2021) (github.com)

Ointers 库摘要

Ointers 是一个用于创建“ointer”的Rust库,即那些高位比特被“窃取”以供程序员另作他用的指针。它本质上为程序员提供了一小块免费的存储空间。该库的特性包括:完全支持no_std(包括无内存分配场景),体积小巧且无外部依赖。

核心功能:比特来源

库支持多种从指针中窃取比特的方式,但由使用者负责确保其安全性。

  1. 对齐比特 如果已知指针地址始终按 A 字节对齐(A > 1),则可窃取 log2(A-1) 个比特。例如,对于8字节对齐的值,可提供3个比特。在并行编程中,数据常被填充到缓存行(在amd64/aarch64上通常为128字节),从而提供高达7个额外比特。更大的对齐能提供更多的比特(如16MB对齐可提供24个比特)。需要注意的是,Rust只认类型声明的对齐,因此要利用大对齐,必须创建新类型包装器。

  2. 符号比特 大多数操作系统将虚拟地址空间的上半部分保留给内核(视为负地址),下半部分分配给用户空间(视为正地址)。对于大多数不处理内核地址的用户空间程序,这提供了一个额外的符号比特。在内核模式下,如果确知不处理用户空间地址,也可通过窃取栈上值的指针符号位来获取此比特。如果存在交叉访问或内核不符合此惯例,需将S参数设为false

  3. 未使用的虚拟地址空间比特 在64位模式下,地址空间充足,实际可用的少于64位。V参数必须为0,除非编译目标为64位。可窃取的比特数量取决于微架构和页表深度。

    • 对于x86-64和aarch64:
      • 3层页表:可窃取25比特(仅限aarch64,不常见,需手动启用)。
      • 4层页表:可窃取16比特(最常见默认设置)。
      • 5层页表:可窃取7比特(仅限部分Intel,不常见,需手动启用)。 若需要超过128TB的虚拟地址空间,应限制在7比特;若确定使用3层页表,可窃取高达25比特;一般情况下,可能限制在16比特。

平台注意事项

该库目前未明确支持某些使用高位指针比特的aarch64可选平台功能(如MTE、指针认证)。如果目标系统是此类嵌入式设备,任何窃取高位比特的尝试都会破坏功能,因此建议仅使用对齐比特方式。

开发与测试

欢迎贡献代码。测试套件目前因randThreadRng而需要标准库。测试配置有限,目前仅覆盖x86-64 Linux(4层页表)。项目希望扩展测试支持范围,包括x86 Linux 4层页表、aarch64 Linux 4层页表、32位ARM 3层页表等(相对容易),以及aarch64 Linux 3层页表、Intel 5层页表等(较困难,可能需要硬件赞助)。

版本历史

  • v5.0.0:最低支持Rust版本升至1.84.0。支持无大小类型/宽指针。内部从sptr迁移至新的标准库溯源API,进行重构并添加了Miri支持。
  • v4.0.2:过渡性版本,为预1.84 Rust编译器提供支持,并修复了克隆时的潜在安全问题(UAF)。
  • v4.0.1:添加可选的指针溯源支持。
  • v4.0.0:添加了new_stealing方法。
  • v3.0.1:添加i_know_what_im_doing特性以在非64位目标上启用从V窃取。
  • v3.0.0:使Ointer<T>NotNull<T>即使TClone/Copy也可复制。
  • v2.0.0:引入了pack(), unpack(), raw()等新API,并改变内部表示。

版权与许可

版权归2021年James Laver及ointers贡献者所有,采用Apache License 2.0(附带LLVM例外)授权。

19. Sound-suppressing silk can create quiet spaces (news.mit.edu)

MIT研发降噪丝绸面料:可创造静音空间

研究背景与团队

  • MIT与多机构跨学科合作,针对日常生活和工作环境中的噪音问题,开发了一种超薄降噪丝绸面料。
  • 该面料基于团队此前“织物麦克风”研究的逆向应用,将压电纤维从声音采集转为声音抑制。

面料特性与原理

  • 材料构成:由丝绸、帆布、薄纱等常见材料制成,仅比人类头发略厚。
  • 核心结构:内嵌单根压电纤维,通电时会产生振动。
  • 工作原理:通过控制纤维振动,实现两种声音抑制方式。

两种降噪机制

  1. 主动声波抵消(类似降噪耳机):

    • 面料振动产生与噪音相位相反的声波,通过波干涉抵消噪音。
    • 适用于小范围空间,实验显示可降低约65分贝的噪音。
  2. 振动抑制隔音(创新方式):

    • 通过控制面料保持静止,阻止振动传递,从而阻隔声音穿透。
    • 能使噪音传输减少高达75%,适用于房间、汽车等大空间。
    • 面料此时类似“声音镜子”,反射声波而非吸收。

实验结果与优势

  • 降噪效果:在振动抑制模式下,声音传输可减少75%;主动抵消模式下可处理最高65分贝的噪音。
  • 材料优势:使用常见纺织材料,易于实际生产;丝绸因孔隙小,在声音生成方面效率更高。
  • 应用场景:可制成开放式办公室隔断、房间隔音墙等,创造安静空间。

未来研究方向

  • 探索同时抑制多种频率噪音,需结合复杂信号处理。
  • 进一步优化面料结构,如调整压电纤维数量、缝纫方向、施加电压及孔隙大小等参数以提升性能。

媒体评价与支持

  • 《科学美国人》等媒体指出该技术将“大幅简化实现静音的过程”。
  • 研究获美国国家科学基金会、陆军研究办公室等机构资助,成果发表于《Advanced Materials》期刊。
20. Show HN: Convert your Containerfile to a bootable OS (github.com)

Bootable Container Extension:将Containerfile转换为可启动操作系统

核心概念

这是一个Podman Desktop扩展,允许用户从标准的Containerfile构建可启动的容器(bootc)磁盘镜像。该技术基于bootc-image-builder,实现了从容器定义到可启动操作系统(VM、USB启动盘、原始磁盘镜像)的转换。

兼容的镜像列表

支持多种Linux发行版的基础镜像:

  • CentOS Stream 9/10quay.io/centos-bootc/centos-bootc:stream9/10
  • Fedora 42/43/44quay.io/fedora/fedora-bootc:42/43/44
  • RHEL 9/10registry.redhat.io/rhel9/rhel-bootc:latest(需要Red Hat订阅)

关键特性

  1. 事务性更新:构建的系统可以从新推送的容器镜像进行原地更新,无需重新构建磁盘镜像。
  2. 多种输出格式:支持构建为qcow2、ami、raw、anaconda-iso、vmdk、vhd、gce等磁盘镜像格式。
  3. 内建虚拟机测试:支持在macOS和Linux上通过macadam工具本地创建和启动虚拟机进行测试(Windows暂不支持)。
  4. 离线支持:可预先拉取所需镜像,在无网络环境下构建磁盘镜像(仅anaconda-iso格式除外)。

使用要求

  • 操作系统:Windows、macOS、Linux
  • 软件:Podman Desktop 1.10.0+ 和 Podman 5.0.1+
  • Podman Machine(macOS/Windows):需以rootful模式运行,并分配至少6GB内存。
  • Linux:构建过程需要sudo权限。

安装与使用

安装

通过Podman Desktop的“扩展”目录安装“Bootable Container”扩展。

基本使用流程

  1. 编写Containerfile:基于兼容的bootc基础镜像(例如FROM quay.io/centos-bootc/centos-bootc:stream10),自定义系统和应用。
  2. 构建磁盘镜像:在Podman Desktop中构建镜像,过程约需2-5分钟。
  3. 使用镜像
    • 本地测试:使用“Create VM”功能启动虚拟机(需配置ed25519 SSH密钥)。
    • 物理机/USB:使用工具(如Rufus、balenaEtcher)将raw或ISO镜像写入USB启动。
    • 第三方虚拟化:将镜像用于VMware、VirtualBox、QEMU等。

高级功能

  • bootc CLI管理:在启动后的系统内使用bootc statusbootc upgrade等命令管理镜像和更新。
  • 离线构建:可预先拉取builder镜像、基础镜像及所需应用镜像,以便在无网络环境下构建qcow2、raw等格式(ISO格式除外)。

已知问题

  • Windows:不支持Hyper-V provider的Podman Machine。
  • macOS:无法构建跨架构镜像(如为AMD64构建)。
  • Linux:首次进行虚拟机操作时,可能需手动安装macadamgvproxy二进制文件。

项目贡献

欢迎通过项目的CONTRIBUTING文档参与开发和贡献。

21. Logicola 3 (medium.com)

Logicola 3 项目概述

项目背景

Logicola 是一款旨在帮助学生学习逻辑学的教育软件,由逻辑学家 Harry Gensler 创作,与其广受认可的教科书《逻辑学导论》(Routledge 出版)配套使用。该软件的最新原生版本发布于近20年前,仅支持 Windows 系统。

开发起源与动机

开发者 Malik Piara 在接触原软件后,意识到其更新需求,并希望贡献己力。在得知原作者 Harry Gensler 已故后,他决定延续其工作,以开源形式开发全新版本的 Logicola。该项目的核心目标是让更多学生受益于逻辑学习,提升其推理与判断能力。

新版本核心特性

  • 跨平台访问:新版本基于网页技术开发,用户可在 Windows、macOS、Chromebook 或手机等任意设备上通过浏览器免费使用,无需安装。
  • 主要功能 - 测验模式:首个版本重点推出了逻辑测验功能,包含:
    1. 定义与含义测验(Set Q)
    2. 命题翻译测验(Set C) 测验每次提供10道随机题目,耗时约5分钟,答题后即时反馈并给出评分,方便用户利用碎片时间练习。
  • 设计考量:开发者注重保留原软件的特色与“个性”,同时融入现代化、简洁的界面设计,力求在创新与继承原作精神之间取得平衡。

开发者承诺与未来计划

  • 持续维护:开发者承诺将以开源形式长期维护该软件。
  • 未来内容:目前正在开发与三段论逻辑相关的内容,并计划为教授和课堂开发配套工具(新版本的 Logiskor)。
  • 参与方式:用户可通过项目网站、邮件或 GitHub 公开讨论渠道进行反馈与交流。

项目现状

Logicola 3 的首个版本已上线发布,其内容仍依赖于 Harry Gensler 的原著《逻辑学导论》。开发者承认首个版本尚有改进空间,并强调优秀软件的开发需要时间、耐心与持续的迭代。

22. XLSTM: Extended Long Short-Term Memory (arxiv.org)

标题: xLSTM:扩展长短期记忆网络

摘要: 本文探讨了将传统长短期记忆网络(LSTM)扩展至数十亿参数规模的可行性。研究动机源于Transformer架构的兴起,其可并行化的自注意力机制在大规模应用中逐渐超越了LSTM。作者提出核心问题:在利用现代大型语言模型技术并缓解LSTM已知局限性的前提下,扩展后的LSTM在语言建模任务上能取得多大进展?

研究提出了两项关键技术创新:

  1. 指数门控机制:引入了指数门控,并配合适当的归一化与稳定化技术。
  2. 修改记忆结构
    • sLSTM:采用标量记忆、标量更新和新的记忆混合机制。
    • mLSTM:采用矩阵记忆和协方差更新规则,实现了完全并行化计算。

将这些扩展集成到残差块骨干网络中,形成了xLSTM块,进而通过残差堆叠构建出完整的xLSTM架构。实验结果表明,结合指数门控与改进记忆结构的xLSTM,在性能与扩展性上均能与当前最先进的Transformer模型和状态空间模型相竞争。

23. Needle: A DFA Based Regex Library That Compiles to JVM ByteCode (justinblank.com)

Needle 是一个将正则表达式编译为 JVM 字节码的库。其核心思想是:将每个正则表达式编译为一个确定性有限自动机(DFA),再将该 DFA 编译为 Java 类。该库会分析 DFA 结构以优化匹配效率,例如识别可利用 String.indexOf 快速查找的必选前缀、后缀或中缀,以及能轻易在 while 循环中进行首字符快速测试的模式(如 [Ss])。这使得匹配过程能在更高效的循环中进行,而非完全依赖自动机。

基准测试表明,不同正则表达式模式的性能表现差异显著:

  1. 字面量模式(如 Sherlockzqj):这类模式本身可通过 String.indexOf 查找。Needle 识别出字面量并直接调用 String.indexOf,其性能优于 Java 标准库,但文章作者对其优于原生 indexOf 表示困惑,需进一步调查。
  2. 可提取子串/进行首字符搜索的模式(如 [Ss]herlockanywhere|somewhere):这类模式包含可被 String.indexOf 定位的字面量部分。在此场景下,搜索子串的速度主导了性能,Needle 表现良好。
  3. 无可用子串搜索的模式(如 Sherlock|Holmes):匹配完全依赖自动机完成。在此类别中,Needle 的性能慢于另一个高效的 DFA 库 brics,但仍快于 Java 标准库。原因在于 Needle 生成的自动机核心循环速度不如 brics。

文章指出了未来的改进方向:

  • 扩展快速循环优化:例如,对正则表达式的首字符或后续字符施加的约束(如必须大写、属于某个字符集等),应能生成更高效的检测代码。
  • 提升纯自动机匹配性能:针对没有子串可搜索的正则表达式,需改进生成的代码结构,使其性能匹配或超越 brics。作者认为从结构上这是可行的,挑战在于编译复杂度。