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版本中实现,同时带来新的颜色管理系统。

阅读更多
147
未分类

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

阅读更多
66
未分类 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
未分类

Python 与苹果应用商店的审核之争

2024-07-18

由于 Python 3.12 版本包含了苹果应用商店禁止的字符串“itms-services”,导致部分 Python 应用被拒绝上架。Python 开发者就此展开了讨论,最终决定在 Python 3.13 版本中添加一个名为“--with-app-store-compliance”的编译选项,以解决这个问题。该选项允许开发者在构建应用时移除可能引发审核问题的代码。

阅读更多
50
未分类

Rust能否为Linux文件系统开发带来福音?

2024-07-15

本文探讨了在Linux文件系统中使用Rust语言的优势和挑战。支持者认为,Rust的类型系统和抽象能力可以帮助开发者在编译阶段捕获更多错误,减少内存相关漏洞,并提高开发效率。然而,反对者担心Rust绑定过于复杂且难以维护,尤其是在C代码不断演进的情况下。他们认为,强制所有文件系统开发者都使用Rust是不现实的,并且可能会导致C代码和Rust绑定之间出现同步问题。

阅读更多
54
未分类

Unison:另辟蹊径的编程语言

2024-07-05

Unison是一种编程语言,它将代码存储在数据库中,而不是文本文件中。这种方法简化了分布式编程,并提供了一种新的编程语言接口方式。Unison使用结构哈希来标识代码,使得重命名函数或使用不同版本的库变得更加容易。它还引入了“能力”的概念,用于管理代码与外部世界的交互,从而简化测试。Unison Cloud平台允许开发者运行使用自定义云能力的Unison程序。然而,Unison也存在一些缺点,例如缺乏对其他语言的稳定FFI支持,以及需要从头开始构建社区工具。

阅读更多
50
未分类 Unison

悼念Daniel Bristot de Oliveira

2024-06-28

文章悼念了英年早逝的计算机科学家Daniel Bristot de Oliveira,他年仅37岁。Daniel是一位专注于实时系统和调度理论的专家,在学术界和Linux内核社区中享有盛誉。他致力于将理论研究应用于现实世界的问题,推动了Linux在实时关键应用领域的成功。他为人谦逊、幽默,乐于与人合作,为Linux内核做出了杰出贡献,例如开发SCHED_DEADLINE调度策略、RTLA和RV工具等。他的离去是社区的巨大损失,但他留下的工作成果和精神将激励后人。

阅读更多
69

面向懒人开发者的Aeon:openSUSE新桌面环境

2024-06-28

openSUSE项目发布了Aeon桌面环境的第二个候选版本(RC2),Aeon之前被称为MicroOS Desktop GNOME。Aeon的目标是使用可原子应用的快照提供自动系统更新,从而为那些希望专注于工作而不是桌面管理的“懒惰开发者”减轻系统维护的负担。Aeon使用名为transactional-update的实用程序(底层是openSUSE的Zypper包管理器)和Btrfs子卷来创建和更新系统快照。用户安装的软件与系统软件分离,安装在可变文件系统上,并使用Flatpak等应用程序容器化技术进行管理。

阅读更多
55
未分类 openSUSE Aeon
1 3