标签 GNU 下的文章

GNU 庆祝成立 40 周年,RMS 患癌

本周三,自由软件基金会发布公告,将于 10 月 1 日庆祝 “GNU 操作系统诞生 40 周年暨自由软件运动启动 40 周年”,称其为 “计算机历史上的一个转折点”。1983 年 9 月 27 日,一位名叫 理查德·斯托尔曼 Richard Stallman (RMS)的计算机科学家宣布,计划开发一种类似 Unix 的自由软件操作系统,名为 GNU,意为 “GNU's not Unix”。GNU 是唯一一个专门为用户自由而开发的操作系统。在当天召开的 GNU 黑客会议上,RMS 一改以往的浓密的头发和胡子的形象出席,并发表了演讲。他还顺便 透露,他已经患癌,并已在接受化疗(因而没有了头发)。不过,庆幸的是,他表示,病情是可以控制的,他仍能活很多年。

消息来源:FSF
老王点评:伟大的 GNU,伟大的 RMS,祝愿 RMS 早日康复!

微软解释在云中提供 Python in Excel 的原因

之前,我们 报道 过,微软发布了 Python in Excel 的公开预览版,无需任何设置就可以在同一工作簿中结合 Python 和 Excel 分析。有用户表示,表示希望能够在其他环境中运行 Python,而不是被锁定的、价格待定的 Azure 云容器。微软解释了这样做的原因:1、在本地机器上安全运行 Python 是一个难题。我们将工作簿中的所有 Python 代码都视为不可信任的,因此我们在 Azure 上的一个与管理程序隔离的容器中执行这些代码;2、我们希望确保您共享的工作簿中的 Python 代码在您的同事打开它时表现相同,而不需要他们安装和管理 Python。3、通过在 Azure 上运行,用户或其系统管理员无需在其组织中使用该功能的每台机器上维护 Python 的本地安装。

消息来源:Reddit
老王点评:似乎有道理,但是在本地有一个沙盒化的 Python 环境有多难?

Canonical 的 Snap 商店暂停上传

一些 Snap 用户报告了最近发布的几个可能是恶意的 Snap 软件包。接到这些报告后,Snap 商店团队立即下架了这些软件包。此外,该团队还对所有新的 Snap 注册提出了临时人工审核要求。这不是 Snap 商店第一次遇到恶意软件包,之前就有带有未披露的隐藏的加密挖掘功能的软件包被上传。

消息来源:Snap Craft
老王点评:似乎这种审核机制不够啊,原来是事后审核吗?

无法从 Ubuntu Linux 中消除 Ubuntu Pro 的广告

在更新 Ubuntu 时,它会提示你安装 esm-apps 软件包,以通过 Ubuntu Pro 获得更多的安全更新。当然,你可以获得一个免费的 Ubuntu Pro 账户,为不超过 5 台的计算机获得更多安全支持。但是,如果你不想用它,也不想看到这个广告信息,你可能认为永久防止这些信息的方法之一是删除提供 Ubuntu Advantage 集成的软件包。但你不能这样做。正如 Ubuntu #1950692 错误所描述的,该软件包现在是核心的 ubuntu-minimal 元包的一个依赖关系,所以如果你删除它,它将会删除其他多个核心包。

消息来源:The Register
老王点评:就没有“免费”的午餐,但是 Canonical 一直将广告打到 Ubuntu 中,并且不能删除,总是有些失望。

新的 GitHub Copilot 将为开发者写出 40-60% 的代码

GitHub 更新了它的 Copilot 编码助手,变得更智能,它建议的代码的接受度从 2022 年 6 月的 27% 提升到现在的 46%,而 Java 代码的接受度甚至高达 61%。此外,它还新提供了一个漏洞过滤系统,以阻止不安全的编码模式,如 SQL 注入或硬编码凭证。新的漏洞扫描器使用大型语言模型来“接近静态分析工具的行为”,虽然不会像那样严格。

消息来源:Dev Class
老王点评:就像大部分手工制品都会被机器淘汰,以后编码这种手工活早晚被替代。

非 GNU/Linux 的 Linux

有一些 Unix 极客坚持认为 Linux 应该正确地被称为 GNU/Linux,因为内核是用 GNU C 编译器构建的,所有东西都是针对 GNU C 库链接的,使用 GNU Coreutils,通常还有来自 GNU 项目的其他多个组件。Chimera Linux 是一个正在建设中的新发行版,它不仅是无 systemd 的,而且也是无 GNU 的。它的创建者希望在今年春天达到 alpha 测试。Chimera 用 LLVM 编译,使用与轻量级 Alpine Linux 发行版相同的 musl C 库和打包工具,新的 Dinit 初始化系统,用户空间其余的大部分都来自当前版本的 FreeBSD。

消息来源:The Register
老王点评:这说明 Linux 并不一定必须的 GNU 的,也可以是 Free 的。

微软发布免费的 AI 图像合成软件

微软宣布了基于 OpenAI 的 DALL-E 2 模型的应用 Designer。用户可通过输入文字提示生成一系列图像。Designer 有免费版和付费版,将提供给微软 365 个人和家庭订阅用户。目前 Designer 作为一个免费的 Web 应用供公众测试和获取反馈,类似的技术将整合到 Edge 浏览器和 Bing 搜索引擎中。

消息来源:ARS Technica
老王点评:AI 图像生成已经势不可挡,虽然目前还有一些道德瑕疵,但是这总是能解决的。

GNU 工具链考虑将其基础设施转移到 Linux 基金会

GNU 工具链是 GNU/Linux 生态系统、云和嵌入式环境的基石。红帽公司资助的 SourceWare.org 多年来一直在托管 GNU 工具链的大部分基础设施,但最近有提议将其基础设施转移到 Linux 基金会提供的 IT 服务下。Linux 基金会的 IT 服务将管理 Git 存储库、邮件列表、错误跟踪器、网站、CI/CD 以及相关的基础设施。GNU 工具链的领导层已经正式表态支持这一提议。

消息来源:Phoronix
老王点评:这件事 Linux 基金会做的不错,毕竟有专门的组织来负责维护,总比红帽员工兼职维护更可靠些。毕竟,现在这种基础软件的安全一旦动摇,影响的范围已经不仅仅是个人爱好者了。

Debian GNU/Linux 14 代号已确定为“Forky”

Debian 方面今天宣布,计划 2027 年发布的 Debian 14 将被称为 “Forky”。Debian 的代号是以《玩具总动员》系列中的玩具命名的。即将在 2023 年发布的 Debian 12 代号为“Bookworm”,而 2025 年发布的 Debian 13 的代号是 “Trixie”。

消息来源:Phoronix
老王点评:不知道《玩具总动员》中有多少个的有名字的玩具,要是用完了怎么办。

GNU 创始人 RMS 发布《GNU C 语言介绍及参考手册》

Richard Stallman 最近一直致力于精心编写这本手册,它涵盖了在 GNU/Linux 系统和其他系统上与 GNU 编译器集合(GCC)一起使用的 C 语言。你可以把它作为一本参考手册,也可以从头开始按顺序阅读来学习 C 语言。

消息来源:GNU
老王点评:在不少争议行为之外,RMS 还是安安静静的做些实务更让人尊敬。

欧盟的人工智能法案可能对开源产生寒蝉效应

2021 年,欧盟发布了《人工智能法案》草案以征求意见。据该草案,开源开发者必须遵守风险管理、数据治理、技术文件和透明度的准则,以及准确性和网络安全的标准。一些专家在一项新的研究中警告说,这可能会限制产生 GPT-3 等尖端人工智能工具的研究类型的发展。如果一家公司部署的开源人工智能系统导致了一些灾难性的结果,不难想象该公司可能会试图通过起诉他们建立产品的开源开发者来转移责任。这可能会进一步将控制人工智能未来的权力集中在大型技术公司。

消息来源:Tech Crunch
老王点评:开源开发就是“按原样”提供,既不应该承担额外的责任,也不能承担这些责任,否则个人开发者谁会去贡献,谁敢去贡献?

PHP 8.2 发布了第一个候选版本

在过去的几个月里,经过一系列的 alpha 和 beta 版本,PHP 8.2 的第一个候选版本出来了。PHP 8.2 RC1 带来了各种错误的修复,包括可能的崩溃修复,PHP CLI 的内置 Web 服务器也对处理静态资源进行了各种改进。更多发布细节请参考发布公告。在未来的几周内,预计至少还有五个候选版本,而 PHP 8.2.0 的 GA 版本预计在 11 月 24 日左右。

消息来源:PHP
老王点评:曾经特别流行的 PHP ,感觉不香了。这消息都过去一周了,也没什么人在意。有点感慨,我曾经最熟悉的 Perl、PHP,似乎都渐渐成了老古董,我当时就该学习 C 和 Java。

曹子德和格雷等重新当选 Linux 基金会技术咨询委员会

2021 内核峰会期间,Linux 内核社区对基金会的技术咨询委员会(TAB)举行了年度选举,包括格雷和曹子德在内的五名现任成员重新当选,任期两年。有资格投票的开发者需要有 3 个以上提交,其中至少一个是 2020 年或 2021 年内,超过 50 个提交的开发者将自动获得投票资格,3 到 49 个提交的开发者则需要通过电邮要求投票。共有 1,012 名开发者获得投票资格。

恭喜!这都是 Linux 大神。

美国每周增加数百台比特币 ATM 机

根据行业跟踪网站 Coin ATM Radar 的数据,美国已经有超过了 26000 台比特币 ATM 机,而去年同期大约有 6000 台。现在每周还在安装数百台。而这只计算了“纯”比特币 ATM 机,即只出售加密货币的 ATM 机。此外,数以千计的传统现金 ATM 也被修改为支持加密货币购买。另外,大约有 7500 台的美国超市里的硬币计数机也在出售比特币,预计到年底这个数字将达到 10,000。根据芝加哥大学的一项调查,13% 的美国成年人,即将近 3300 万人在过去一年中购买或出售过加密货币。

还是美国人会玩。

GNU Coreutils 9.0 发布

Coreutils 9.0 现在可以使用了,它是对所有 Linux 系统上常见的开源实用程序集合的一次重大更新。广泛使用的用于复制文件/目录的 cp/mv 工具有一些明显的变化,默认启用了写时复制。此外,还有许多错误修复和对这些常用工具的其他改进。

这是 Linux 中最常用的命令了,它们也在一点点演进。

软件如果不能被电脑运行,那么它就是无用的。而在处理 运行时 run-time 性能的问题上,即使是最有才华的开发人员也会受编译器的支配 —— 因为如果没有可靠的编译器工具链,就无法构建任何重要的东西。 GNU 编译器集合 GNU Compiler Collection (GCC)提供了一个健壮、成熟和高性能的工具,以帮助你充分发挥你代码的潜能。经过数十年成千上万人的开发,GCC 成为了世界上最受尊敬的编译器之一。如果你在构建应用程序是没有使用 GCC,那么你可能错过了最佳解决方案。

根据 LLVM.org 的说法,GCC 是“如今事实上的标准开源编译器” [1] ,也是用来构建完整系统的基础 —— 从内核开始。GCC 支持超过 60 种硬件平台,包括 ARM、Intel、AMD、IBM POWER、SPARC、HP PA-RISC 和 IBM Z,以及各种操作环境,包括 GNU、Linux、Windows、macOS、FreeBSD、NetBSD、OpenBSD、DragonFly BSD、Solaris、AIX、HP-UX 和 RTEMS。它提供了高度兼容的 C/C++ 编译器,并支持流行的 C 库,如 GNU C Library(glibc)、Newlib、musl 和各种 BSD 操作系统中包含的 C 库,以及 Fortran、Ada 和 GO 语言的前端。GCC 还可以作为一个交叉编译器,可以为运行编译器的平台以外的其他平台创建可执行代码。GCC 是紧密集成的 GNU 工具链的核心组件,由 GNU 项目产生,它包括 glibc、Binutils 和 GNU 调试器(GDB)。

“一直以来我最喜欢的 GNU 工具是 GCC,即 GNU 编译器集合 GNU Compiler Collection 。在开发工具非常昂贵的时候,GCC 是第二个 GNU 工具,也是使社区能够编写和构建所有其他工具的工具。这个工具一手改变了这个行业,导致了自由软件运动的诞生,因为一个好的、自由的编译器是一个社区软件的先决条件。”—— Red Hat 开源和标准团队的 Dave Neary。 [2]

优化 Linux

作为 Linux 内核源代码的默认编译器,GCC 提供了可靠、稳定的性能以及正确构建内核所需的额外扩展。GCC 是流行的 Linux 发行版的标准组件,如 ArchLinux、CentOS、Debian、Fedora、openSUSE 和 Ubuntu 这些发行版中,GCC 通常用来编译支持系统的组件。这包括 Linux 使用的默认库(如 libc、libm、libintl、libssh、libssl、libcrypto、libexpat、libpthread 和 ncurses),这些库依赖于 GCC 来提供可靠性和高性能,并且使应用程序和系统程序可以访问 Linux 内核功能。发行版中包含的许多应用程序包也是用 GCC 构建的,例如 Python、Perl、Ruby、nginx、Apache HTTP 服务器、OpenStack、Docker 和 OpenShift。各个 Linux 发行版使用 GCC 构建的大量代码组成了内核、库和应用程序软件。对于 openSUSE 发行版,几乎 100% 的原生代码都是由 GCC 构建的,包括 6135 个源程序包、5705 个共享库和 38927 个可执行文件。这相当于每周编译 24540 个源代码包。 [3]

Linux 发行版中包含的 GCC 的基本版本用于创建定义系统 应用程序二进制接口 Application Binary Interface (ABI)的内核和库。 用户空间 User space 开发者可以选择下载 GCC 的最新稳定版本,以获得高级功能、性能优化和可用性改进。Linux 发行版提供安装说明或预构建的工具链,用于部署最新版本的 GCC 以及其他 GNU 工具,这些工具有助于提高开发人员的工作效率和缩短部署时间。

优化互联网

GCC 是嵌入式系统中被广泛采用的核心编译器之一,支持为日益增长的物联网设备开发软件。GCC 提供了许多扩展功能,使其非常适合嵌入式系统软件开发,包括使用编译器的内建函数、#语法、内联汇编和以应用程序为中心的命令行选项进行精细控制。GCC 支持广泛的嵌入式体系结构,包括 ARM、AMCC、AVR、Blackfin、MIPS、RISC-V、Renesas Electronics V850、NXP 和 Freescale Power 处理器,可以生成高效、高质量的代码。GCC提供的交叉编译能力对这个社区至关重要,而预制的交叉编译工具链 [4] 是一个主要需求。例如,GNU ARM 嵌入式工具链是经过集成和验证的软件包,其中包含 ARM 嵌入式 GCC 编译器、库和其它裸机软件开发所需的工具。这些工具链可用于在 Windows、Linux 和 macOS 主机操作系统上对流行的 ARM Cortex-R 和 Cortex-M 处理器进行交叉编译,这些处理器已装载于数百亿台支持互联网的设备中。 [5]

GCC 为云计算赋能,为需要直接管理计算资源的软件提供了可靠的开发平台,如数据库和 Web 服务引擎以及备份和安全软件。GCC 完全兼容 C++ 11 和 C++ 14,为 C++ 17 和 C++ 2a 提供实验支持 [6] (LCTT 译注:本文原文发布于 2018 年),可以创建性能优异的对象代码,并提供可靠的调试信息。使用 GCC 的应用程序的一些例子包括:MySQL 数据库管理系统,它需要 Linux 的 GCC [7] ;Apache HTTP 服务器,它建议使用 GCC [8] ;Bacula,一个企业级网络备份工具,它需要 GCC。 [9]

优化一切

对于 高性能计算 High Performance Computing (HPC)中使用的科学代码的研究和开发,GCC 提供了成熟的 C、C++ 和 Fortran 前端,以及对 OpenMP 和 OpenACC API的支持,用于基于指令的并行编程。因为 GCC 提供了跨计算环境的可移植性,它使得代码能够更容易地在各种新的和传统的客户机和服务器平台上进行测试。GCC 为 C、C++ 和 Fortran 编译器提供了 OpenMP 4.0 的完整支持,为 C 和 C++ 编译器提供了 OpenMP 4.5 完整支持。对于 OpenACC、 GCC 支持大部分 2.5 规范和性能优化,并且是唯一提供 OpenACC 支持的非商业、非学术编译器。

代码性能是这个社区的一个重要参数,GCC 提供了一个坚实的性能基础。Colfax Research 于 2017 年 11 月发表的一篇论文评估了 C++ 编译器在使用 OpenMP 4.x 指令并行化编译代码的速度和编译后代码的运行速度。图 1 描绘了不同编译器编译并使用单个线程运行时计算内核的相对性能。性能值经过了归一化处理,以 G++ 的性能为 1.0。

 title=

图 1 为由不同编译器编译的每个内核的相对性能。(单线程,越高越好)。

他的论文总结道:“GNU 编译器在我们的测试中也做得很好。G++ 在六种情况中的三种情况下生成的代码速度是第二快的,并且在编译时间方面是最快的编译器之一。” [10]

谁在用 GCC?

在 JetBrains 2018 年的开发者生态状况调查中,在接受调查的 6000 名开发者中,66% 的 C++ 程序员和 73% 的 C 程序员经常使用 GCC。 [11] 以下简要介绍 GCC 的优点,正是这些优点使它在开发人员社区中如此受欢迎。

  • 对于需要为各种新的和遗留的计算平台和操作环境编写代码的开发人员,GCC 提供了对最广泛的硬件和操作环境的支持。硬件供应商提供的编译器主要侧重于对其产品的支持,而其他开源编译器在所支持的硬件和操作系统方面则受到很大限制。 [12]
  • 有各种各样的基于 GCC 的预构建工具链,这对嵌入式系统开发人员特别有吸引力。这包括 GNU ARM 嵌入式工具链和 Bootlin 网站上提供的 138 个预编译交叉编译器工具链。 [13] 虽然其他开源编译器(如 Clang/LLVM)可以取代现有交叉编译工具链中的 GCC,但这些工具集需要开发者完全重新构建。 [14]
  • GCC 通过成熟的编译器平台向应用程序开发人员提供可靠、稳定的性能。《在 AMD EPYC 平台上用 GCC 8/9 与 LLVM Clang 6/7 编译器基准测试》这篇文章提供了 49 个基准测试的结果,这些测试的编译器在三个优化级别上运行。使用 -O3 -march=native 级别的 GCC 8.2 RC1 在 34% 的时间里排在第一位,而在相同的优化级别 LLVM Clang 6.0 在 20% 的时间里赢得了第二位。 [15]
  • GCC 为编译调试 [16] 提供了改进的诊断方法,并为运行时调试提供了准确而有用的信息。GCC 与 GDB 紧密集成,GDB 是一个成熟且功能齐全的工具,它提供“不间断”调试,可以在断点处停止单个线程。
  • GCC 是一个得到良好支持的平台,它有一个活跃的、有责任感的社区,支持当前版本和以前的两个版本。由于每年都有发布计划,这为一个版本提供了两年的支持。

GCC:仍然在继续优化

GCC 作为一个世界级的编译器继续向前发展。GCC 的最新版本是 8.2,于 2018 年 7 月发布(LCTT 译注:本文原文发表于 2018 年),增加了对即将推出的 Intel CPU、更多 ARM CPU 的硬件支持,并提高了 AMD 的 ZEN CPU 的性能。增加了对 C17 的初步支持,同时也对 C++2A 进行了初步工作。诊断功能继续得到增强,包括更好的发射诊断,改进了定位、定位范围和修复提示,特别是在 C++ 前端。Red Hat 的 David Malcolm 在 2018 年 3 月撰写的博客概述了 GCC 8 中的可用性改进。 [17]

新的硬件平台继续依赖 GCC 工具链进行软件开发,例如 RISC-V,这是一种自由开放的 ISA,机器学习、人工智能(AI)和物联网细分市场都对其感兴趣。GCC 仍然是 Linux 系统持续开发的关键组件。针对 Intel 架构的 Clear Linux 项目是一个为云、客户端和物联网用例构建的新兴发行版,它提供了一个很好的示例,说明如何使用和改进 GCC 编译器技术来提高基于 Linux 的系统的性能和安全性。GCC 还被用于微软 Azure Sphere 的应用程序开发,这是一个基于 Linux 的物联网应用程序操作系统,最初支持基于 ARM 的联发科 MT3620 处理器。在培养下一代程序员方面,GCC 也是树莓派的 Windows 工具链的核心组件,树莓派是一种运行基于 Debian 的 GNU/Linux 的低成本嵌入式板,用于促进学校和发展中国家的基础计算机科学教学。

GCC 由 GNU 项目的创始人 理查德•斯托曼 Richard Stallman 首次发布 于 1987 年 3 月 22 日,由于它是第一个作为自由软件发布的可移植的 ANSI C 优化编译器,因此它被认为是一个重大突破。GCC 由来自世界各地的程序员组成的社区在指导委员会的指导下维护,以确保对项目进行广泛的、有代表性的监督。GCC 的社区方法是它的优势之一,它形成了一个由开发人员和用户组成的庞大而多样化的社区,他们为项目做出了贡献并提供支持。根据 Open Hub 的说法,“GCC 是世界上最大的开源团队之一,在 Open Hub 上的所有项目团队中排名前 2%。” [18]

关于 GCC 的许可问题,人们进行了大量的讨论,其中大多数是混淆而不是启发。GCC 在 GNU 通用公共许可证(GPL)版本 3 或更高版本下发布,但运行时库例外。这是一个左版许可,这意味着衍生作品只能在相同的许可条款下分发。GPLv3 旨在保护 GCC,防止其成为专有软件,并要求对 GCC 代码的更改可以自由公开地进行。对于“最终用户”来说,这个编译器与其他编译器完全相同;使用 GCC 对你为自己的代码所选择的任何许可都没有区别。 [19]


  1. http://clang.llvm.org/features.html#gcccompat ↩︎
  2. https://opensource.com/article/18/9/happy-birthday-gnu ↩︎
  3. 由 SUSE 基于最近的构建统计提供的信息。在 openSUSE 中还有其他不生成可执行镜像的源码包,这些不包括在统计中。 ↩︎
  4. https://community.arm.com/tools/b/blog/posts/gnu-toolchain-performance-in-2018 ↩︎
  5. https://www.arm.com/products/processors/cortex-m ↩︎
  6. https://gcc.gnu.org/projects/cxx-status.html#cxx17 ↩︎
  7. https://mysqlserverteam.com/mysql-8-0-source-code-improvements/ ↩︎
  8. http://httpd.apache.org/docs/2.4/install.html ↩︎
  9. https://blog.bacula.org/what-is-bacula/system-requirements/ ↩︎
  10. https://colfaxresearch.com/compiler-comparison/ ↩︎
  11. https://www.jetbrains.com/research/devecosystem-2018/ ↩︎
  12. http://releases.llvm.org/6.0.0/tools/clang/docs/UsersManual.html ↩︎
  13. https://bootlin.com/blog/free-and-ready-to-use-cross-compilation-toolchains/ ↩︎
  14. https://clang.llvm.org/docs/Toolchain.html ↩︎
  15. https://www.phoronix.com/scan.php?page=article&item=gcclang-epyc-summer18&num=1 ↩︎
  16. https://gcc.gnu.org/wiki/ClangDiagnosticsComparison ↩︎
  17. https://developers.redhat.com/blog/2018/03/15/gcc-8-usability-improvements/ ↩︎
  18. https://www.openhub.net/p/gcc/factoids#FactoidTeamSizeVeryLarge ↩︎
  19. https://www.gnu.org/licenses/gcc-exception-3.1-faq.en.html ↩︎

via: https://www.linux.com/blog/2018/10/gcc-optimizing-linux-internet-and-everything

作者:Margaret Lewis 选题:lujun9972 译者:Chao-zhi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出