2025 年 Linux 内核及开源领域的展望:机遇与挑战并存

2025-01-17

LWN.net 的 2025 年预测文章,对 Linux 内核、开源软件和硬件发展趋势进行了大胆预测。文章指出,可扩展调度类 (sched-ext) 将带来变革;Rust 代码将更多地应用于内核;新的后门攻击企图将被发现;单维护者项目面临风险;AI 生成代码的潜在问题将凸显;对免费生成式 AI 系统和维护者的支持将增加;云产品故障和数据泄露问题将持续;开源硬件将蓬勃发展;移动设备发行版将重获关注;地缘政治因素将影响开源社区。总而言之,2025 年开源领域机遇与挑战并存,需要社区共同努力,维护开源生态的健康发展。

阅读更多
开发

Vim之殇与新生:在Bram Moolenaar逝世后

2025-01-11

Vim创始人Bram Moolenaar的去世给社区带来了冲击,但Vim并未消亡。新的维护者Christian Brabandt在VimConf 2024上概述了项目的重组和未来规划。团队扩张,网站和基础设施得到升级,并处理了安全漏洞报告和社区沟通问题。虽然Vim目前处于维护模式,但开发并未停止,版本9.1已发布,并计划改进GUI、终端支持和拼写检查等功能。社区合作至关重要,Brabandt强调了倾听用户需求和保持社区健康的重要性。

阅读更多
开发 社区维护

Linux内核初始提交SHA值碰撞风险

2024-12-31

Linux内核开发者Kees Cook发现一个内核文档提交的ID与Linux内核初始提交的ID前12位相同,这可能导致工具识别错误。虽然该提交尚未合并到主分支,但它可以作为测试用例,帮助提前解决此类SHA值碰撞问题,避免未来可能造成的广泛影响。

阅读更多
开发 SHA碰撞

Homa网络协议:挑战TCP/UDP的全新方案

2024-12-30

Homa是一种针对数据中心应用的新型网络传输协议,旨在减少数据中心中大量小消息传输的开销。它不同于传统的TCP/UDP,无需连接建立,通过独特的请求-应答机制和优先级队列管理,显著降低延迟。目前,Homa正在尝试进入Linux内核,但其未来可能更多地依赖于网络硬件加速。

阅读更多
1
开发 Homa

io_uring子系统迎来进程创建功能更新

2024-12-20

LWN.net报道,io_uring子系统正在开发一项新的进程创建功能。这项功能通过两个新的io_uring操作IORING_OP_CLONE和IORING_OP_EXEC实现,前者创建新进程,后者执行execveat()系统调用加载新程序。这将提高效率,并允许在内核中异步执行更复杂的逻辑,例如路径搜索。然而,该功能仍处于早期阶段,存在一些限制,例如新进程中io_uring操作必须同步执行。未来,开发者希望提升其灵活性,并最终将其合并到Linux主线内核中。

阅读更多
开发 进程创建

Fish Shell 4.0 正式发布:Rust 重写带来全新体验

2024-12-19

Fish shell,一款以其易用性和智能功能而闻名的命令行shell,正式发布了4.0版本。此次更新最大的亮点在于将代码库从C++迁移至Rust,提升了现代计算效率。4.0版本还带来了诸多新特性,例如更自然的按键绑定和更强大的历史搜索功能,旨在为用户提供更便捷、愉悦的命令行体验。为了确保稳定性,项目组特别推出了公开测试版,邀请所有用户参与测试。

阅读更多
开发

Guile赋能Emacs:一个野心勃勃的重写计划

2024-12-16

Emacs编辑器因其可扩展性而闻名,但其核心语言Emacs Lisp(Elisp)的性能和表达能力已成为瓶颈。为解决这个问题,Guile-Emacs项目应运而生,它计划用Guile Lisp替换Emacs中的Elisp。Guile-Emacs项目已历经多年,几经沉浮,如今在开发者Robin Templeton和Larry Valkama的努力下再次焕发生机,目标是在保持Elisp兼容性的前提下,利用Guile的编译器和性能优势,提升Emacs的运行效率和可扩展性,甚至最终用Lisp重写Emacs的大部分C代码,这将显著增强Emacs的可定制性。虽然面临着技术和政治上的挑战,但该项目为Emacs的未来发展提供了令人兴奋的可能性。

阅读更多
开发

Rust编译器:基于查询的增量编译架构

2024-12-13

Rust编译器为了解决传统流水线式编译带来的效率问题,采用了基于查询的增量编译架构。该架构将编译过程分解成一系列相互依赖的查询,并利用编译数据库缓存中间结果,从而只重新计算必要的代码部分。这类似于构建系统的依赖管理机制,显著提升了编译速度,尤其在IDE集成等场景下效果显著。虽然该架构引入了复杂性,但相比传统方法的逐步改进,它为Rust带来了更稳定、高效的增量编译体验,目前已成为开发构建的默认模式。

阅读更多
开发 增量编译

Git项目陷入Rust语言引入困境

2024-12-13

Git项目内部就是否引入Rust语言展开了激烈的讨论。支持者认为Rust的内存安全性和易于重构等特性将提升Git的安全性及开发效率。然而,反对者担忧引入Rust会影响Git对NonStop等特定平台的支持,并限制其长期发展。NonStop平台在金融领域广泛应用,其对Git的依赖关系以及缺乏Rust编译器使得这一问题变得复杂。最终,讨论未能达成一致,Git项目面临着在广泛平台支持和提升安全性及开发效率之间的艰难抉择。

阅读更多
2
开发 平台支持

利用Git分支名称入侵PyPI软件包

2024-12-09

一个名为ultralytics的Python包在PyPI上发布了一个被入侵的版本。攻击者利用了该项目自动化处理拉取请求的机制,在分支名称中注入了恶意脚本。ultralytics使用了pull_request_target GitHub Action触发器,该触发器运行的脚本可以访问存储库的secrets,但容易受到来自拉取请求分支名称的shell注入攻击。注入的脚本利用获取的凭证在后续上传到PyPI的版本中包含了加密货币挖矿程序。虽然GitHub已删除恶意脚本,但此次事件提醒开发者谨慎处理自动化访问重要secrets的机制。

阅读更多
115
未分类 PyPI安全

Inkscape 1.4即将发布

2024-12-09

开源矢量图形编辑器Inkscape 1.4版本预计将于10月发布。此版本带来了新功能、用户界面改进、新的和改进的文件格式支持以及代码库的重要更改。新版本改进了对话框,包括扩展和滤镜库,并改进了Swatch对话框和渐变编辑器。核心功能方面,形状构建器工具现在支持光栅图形,文本编辑工作流程也得到了改进。界面和内部变化包括可自定义的画布控件和新的图标主题“Dash”。此外,命令行界面也新增了一些功能和选项。Inkscape 1.4为过渡到GTK+ 4奠定了基础,GTK+ 4预计将在1.5版本中实现,同时带来新的颜色管理系统。

阅读更多
146
未分类

Debian 用户名规则引发的争议

2024-12-06

Debian 项目正在处理用户名规则问题,其两个用户创建工具(useradd 和 adduser)对允许使用的字符存在分歧。useradd 工具遵循更严格的 POSIX 标准,而 adduser 则更为宽松。开发者们讨论了是否允许 UTF-8 用户名,以及用户名长度和字符限制。鉴于 UTF-8 支持带来的复杂性和潜在安全风险(例如同形异义字攻击),adduser 的维护者决定在下一个版本中默认拒绝 UTF-8 用户名,但仍允许通过选项启用。

阅读更多
12
未分类 用户名

GIMP 3.0:开源图像编辑的里程碑

2024-11-29

GIMP 3.0 迎来了自 2018 年以来的首次重大更新,采用了 GTK 3 用户界面,带来了性能和可用性提升,并增强了与 Wayland 和复杂输入设备的兼容性。新版本支持 CSS 主题、多点触控和改进的色彩管理,并实现了非破坏性编辑,优化了图层工作流程和文件格式支持。此外,GIMP 3.0 还引入了新的扩展系统和文件格式 GEX,方便插件和主题的管理。

阅读更多
10
未分类

struct sockaddr伪灵活数组的麻烦

2024-11-29

本文讨论了Linux内核中struct sockaddr结构体中的sa_data字段带来的问题。sa_data最初设计为固定长度,但随着网络协议的发展,其长度不足以容纳所有地址类型,因此在实践中被当作灵活数组使用。这种用法导致编译器难以进行边界检查,从而带来安全隐患。内核开发者尝试通过多种方式解决这个问题,包括重新定义struct sockaddr,引入sockaddr_storage和sockaddr_legacy等变体,但都存在兼容性问题。最终,开发者计划逐步淘汰内核内部对struct sockaddr的使用,以改进内存安全。

阅读更多
12
未分类 sockaddr

6.12内核版本发布

2024-11-18

Linus Torvalds 已发布 6.12 内核版本。此版本带来了众多新特性,包括:支持Arm权限覆盖扩展、更好的编译时Spectre漏洞缓解控制、实时抢占支持的最后部分、实时截止日期服务器机制、更多 EEVDF 调度器开发、可扩展调度器类、设备内存 TCP 工作、安全模块子系统中静态调用的使用、完整性策略实施安全模块、XFS 文件系统中处理块大小大于系统页面大小的设备的功能等。此版本被认为是一个重要的里程碑版本,可能成为2024年的LTS版本,并将构成明年 Debian 13 及其衍生版本的基础。

阅读更多
16
未分类 6.12

Linux man页面维护资金恢复

2024-11-09

Linux man页面维护者Alejandro Colomar在9月份因缺乏资金支持而暂停工作后,现已获得Linux基金会及多家公司提供的为期一年的资金支持,并已于11月1日恢复维护工作。此事件引发了关于开源软件文档维护资金的广泛讨论,许多人认为企业应该对开源项目提供更多支持,并探讨了如何提高开源项目资金的可持续性。

阅读更多
28
未分类 man pages

使用 BOLT 优化内核

2024-11-06

本文介绍了 Meta 的二进制优化和布局工具 (BOLT) 如何用于优化 Linux 内核。BOLT 通过重新排列二进制文件中的代码块来提高代码局部性,从而减少指令缓存未命中和 TLB 未命中,最终提升性能。Meta 在其生产内核中使用 BOLT,并在 RocksDB 基准测试中观察到 2.5% 的性能提升,在实际服务中观察到 2% 的 QPS 提升。BOLT 适用于各种架构,包括 x86_64、Arm64 和 RISC-V,并且可以与 GCC 和 Clang 编译器一起使用。虽然 BOLT 主要针对大型应用程序设计,但也已用于加速编译器本身,例如 Python 3.12、LLVM 和 Rust。

阅读更多
21
未分类

BPF指令集架构正式成为RFC 9669标准

2024-11-05

经过两年多的努力,BPF指令集架构已被接受为RFC 9669标准,使其在内核实现之外拥有一个标准。David Vernet在一篇消息中描述了标准化过程及其重要性:尽管一些供应商已经在没有标准化ISA的情况下实现了BPF卸载功能,但其他供应商的风险承受能力并不那么高。某些NVMe供应商表示有兴趣为各种用例(如eXpress Resubmission Path (XRP))构建BPF卸载功能,但如果没有BPF的某些组件的标准化,他们就无法为此类项目提供资金。因此,BPF的标准化工作应运而生。

阅读更多
24
未分类 RFC 9669

苹果M1/M2 GPU驱动更新

2024-11-01

Alyssa Rosenzweig在2024年X.Org开发者大会上介绍了苹果M1/M2 GPU开源驱动的最新进展。该驱动已实现OpenGL 4.6和Vulkan 1.3标准的兼容,并通过软件模拟方式克服了硬件Tessellation的限制。Rosenzweig还展示了该驱动在运行AAA游戏上的进展,通过结合DXVK、Wine、FEX-Emu以及一个运行4KB页面内核的虚拟机,成功在M1/M2 Mac上运行了Portal 2、The Witcher 3、Cyberpunk 2077等游戏。

阅读更多
24
未分类 苹果M1/M2

Debian的“秘方”

2024-10-29

本文介绍了Debian发行版维护和开发的“秘方”,即其用于创建和维护版本的软件工程工作。Debian致力于改进上游代码,并支持已发布的软件包,同时维护当前稳定版本和开发下一版本。文章详细解释了Debian的社会契约、宪法、策略手册和开发者参考文档如何指导项目运作。此外,还介绍了Debian的各种版本库(实验版、不稳定版、测试版、稳定版、旧稳定版和backports),以及支持的20种架构(9种官方架构和11种非官方架构)。文章重点介绍了Debian的多架构支持如何帮助发现上游软件中的错误,并以GoAWK和Aircrack-ng为例进行了说明。最后,文章还介绍了Debian用于测试和质量保证的各种工具,例如dh_auto_test、Lintian、Autopkgtest、debci和Salsa CI。

阅读更多
25
未分类

OSI即将推出备受争议的开源人工智能定义

2024-10-26

开源计划(OSI)将于10月27日对其开源人工智能定义(OSAID)进行投票,并计划于10月28日发布1.0版本。然而,OSAID因不要求开源AI系统必须公开训练数据而受到开源社区的广泛批评,人们担心这将违背开源的初衷,降低开源标准。拥护者则认为,训练数据并非修改AI系统的必要条件,OSAID已经充分考虑了AI领域的特殊性。

阅读更多
23
未分类 OSAID

通往懒惰抢占的漫长道路

2024-10-19

Linux内核的CPU调度器目前提供了几种抢占模式,在系统吞吐量和响应时间之间取得平衡。2023年9月,关于调度的讨论引发了“懒惰抢占”的概念,它可以简化内核中的调度,同时提供更好的结果。懒惰抢占模式引入了一个新的标志TIF_NEED_RESCHED_LAZY,用于指示需要在某个时刻进行重新调度,但不一定马上进行。此模式下,大多数内核事件不会导致当前任务被抢占,从而提高了系统吞吐量。同时,它仍然允许在真正需要的时候(例如实时任务变得可运行)快速进行抢占。懒惰抢占的目标是最终用PREEMPT_LAZY和PREEMPT_FULL两种非实时模式取代现有的四种模式,并移除大量的cond_resched()调用,从而使内核更小、更简单,并在不需要在代码中添加大量调度相关调用的情况下提供可预测的延迟。

阅读更多
35
未分类 懒惰抢占

Linux 内核智能指针

2024-10-18

文章介绍了 Linux 内核中使用 Rust 语言实现智能指针的最新进展。Rust 提供了一些内置的智能指针类型,但为了遵循 Linux 内核的内存模型,需要手动编写智能指针。文章详细讨论了如何使自定义智能指针具有与内置智能指针相同的功能,例如指针类型转换和动态分派。此外,文章还提到了为了确保代码安全,需要使用 unsafe 关键字来标记那些可能导致内存安全问题的操作,并解释了这样做的原因。

阅读更多
28
未分类

GCC Rust 前端开发进展更新

2024-10-11

这篇文章主要介绍了 GCC Rust 前端(gccrs)的最新开发进展。虽然 gccrs 已经包含在 GCC 14 中,但它仍然处于开发阶段,其主要目标是能够编译 Linux 内核代码。目前,gccrs 已经可以编译 Rust 核心库,但速度很慢。未来,gccrs 将致力于支持 Rust 的更多功能,并最终赶上 rustc 编译器。

阅读更多
33
未分类

Vanilla OS 2:一款面向所有软件的不变性发行版

2024-09-27

Vanilla OS 2是一款面向开发者和高级用户的不可变桌面Linux发行版,它基于Debian unstable,使用OCI镜像进行系统更新。该版本简化了从其他发行版软件仓库安装软件的流程,并通过容器化技术隔离核心系统与其他应用软件,保证系统稳定性。Vanilla OS支持使用Flatpak、VSO容器以及Apx子系统安装应用程序,为用户提供了灵活的软件安装方式。

阅读更多
32
未分类

Linux man-pages 项目维护公告

2024-09-06

Linux man-pages 项目维护者 Alejandro Colomar 近日宣布,由于个人经济原因,将暂时无限期停止对该项目的维护工作。他表示,过去四年一直以志愿者身份利用业余时间维护该项目,从未得到任何公司的赞助。如果未来有公司有意向赞助该项目的维护工作,请与其联系。

阅读更多
64
未分类 man-pages

SpamAssassin 的意外问题

2024-09-05

这篇文章讨论了 LWN 网站在运行自己的邮件系统时遇到的一个 SpamAssassin 问题。由于 Validity 公司对查询数量进行了限制,LWN 的邮件服务器被判定为查询过度,导致 SpamAssassin 无法正确识别垃圾邮件,大量垃圾邮件涌入收件箱。文章还探讨了依赖第三方服务带来的风险,以及运行独立邮件系统所面临的挑战,并引发了对电子邮件系统未来发展的思考。

阅读更多
46

Zettlr:使用 Markdown 进行笔记和发布

2024-08-23

Zettlr 是一款功能丰富的 Markdown 编辑器,适用于撰写博客文章、学术论文、日记,以及使用 Zettlekasten 方法做笔记。它提供实时渲染、灵活的界面自定义、多种导出格式、图表和表格编辑器以及对引文和拼写检查的支持。Zettlr 基于 Electron 构建,可在 Linux、Windows 和 macOS 上运行,并提供强大的功能和灵活的自定义选项,是一款值得尝试的开源 Markdown 工具。

阅读更多
51
未分类

链接器20篇系列文章目录

2024-08-22

这篇文章提供了一个由20部分组成的关于链接器文章系列的目录,该系列文章由Ian Lance Taylor撰写,涵盖了链接器的定义、动态链接、目标文件格式、符号解析、重定位等主题。

阅读更多
67
未分类

Linux内核引入新型哈希表rosebush

2024-07-26

Matthew Wilcox提交了一个名为rosebush的新数据结构补丁集,旨在替代内核现有的rhashtable,以提高文件系统缓存(dcache)的性能。rosebush采用数组作为固定大小的桶,避免了rhashtable使用链表带来的指针追逐问题,从而减少缓存未命中次数。该设计利用RCU机制,以实现高效的并发访问。尽管开发者声称rosebush性能更优,但目前尚缺乏测试数据支持。

阅读更多
61
未分类
2