硬核老王 发布的文章

AlphaCode 在编程比赛中胜过了近一半的程序员

DeepMind 在《科学》杂志发布文章说,在至少有 5000 人参加的在线编码比赛中,AlphaCode 的表现超过了 45.7% 的程序员。令人惊讶的是,研究人员将其产生的程序与训练数据库中的程序进行了比较,发现它并没有重复大段的代码或逻辑,而产生了一些新的代码。这让专家们注意到了递归式自我改进的软件的长期风险,这可能导致超级智能的人工智能接管世界。专家们希望尽早为人工智能编码领域建立护栏。

消息来源:《科学》杂志
老王点评:在科幻小说中,阿西莫夫创造性的提出了《机器人三定律》,而就目前的发展来看,可能要制定更具体的限制规则,让人工智能的递归式发展具有自限性。

费米实验室和 CERN 选择 AlmaLinux

在 2021 年底,CentOS 项目停止了 CentOS Linux 的更新,并以滚动版的 CentOS Stream 取代,重建了红帽的 Linux 开发和维护流程。很多使用 CentOS Linux 的企业转而使用其他的替代版本,如 AlmaLinux 和 Rocky Linux,以及国内的 AnolisOS 和 openEuler。著名的科学研究机构费米实验室和欧洲粒子物理研究所(CERN)发表联合声明,宣布将在其研究设施中采用 AlmaLinux。声明称,AlmaLinux 的优点包括:每个大版本支持寿命长,支持扩展架构,快速的发布周期,上游社区贡献,支持安全建议元数据,完美兼容红帽的企业版 Linux(RHEL)。

消息来源:The Register
老王点评:CentOS 当年的决定,带来的影响非常深远。

美国 FBI 对苹果扩大端到端加密技术表示密切关注

苹果公司昨天宣布,将在更多敏感类型的 iCloud 数据上采用端到端加密,这包括设备备份、信息、照片等,以满足用户和隐私团体的长期需求。这意味着只有受信任的设备才能解密和读取用户存储在 iCloud 中的数据。FBI 表示它“深切关注端到端加密和只允许用户访问的加密所带来的威胁”。它表示端到端加密使该机构更难开展工作,要求“通过设计进行合法访问”。

消息来源:Mac Rumors
老王点评:隐私和公众安全的边界确实存在冲突,至少值得讨论和博弈。

美国将斥资 15 亿美元启动华为替代方案

美国认为,少数海外公司制造蜂窝网络核心设备存在经济和国家安全风险,计划投资 15 亿美元到开放无线电接入网(ORAN),帮助推动基于标准的现代蜂窝网络核心设备的替代方案。它使用标准的计算设备来取代诺基亚、爱立信和华为等公司的专有硬件。不过,现有的网络运营商转而使用这种装备存在很多困难。

消息来源:Axios
老王点评:ORAN 听起来似乎挺好,但是实际如何呢?

GCC 即将加入对 Rust 的支持

GCC 不仅仅是 C 语言的编译器,其实它是“GNU 编译器集合”,所以它能支持很多语言的编译。GCC 的 Rust 前端项目 Gccrs 已被批准合并到 GCC 主分支,下一个版本的 GCC 将能编译 Rust 源代码。GCC 编译器支持的目标平台的数量要远多于标准的 Rust 编译器。开发者表示 Gccrs 仍然极具实验性,在发布之前会有很多变化。

消息来源:Phoronix
老王点评:要是能用 GCC 编译 Rust,那对 Rust 的发展应该是加速器。

一堆 X.org 组件得到了更新,但无关紧要

过去一周,有 20 个 X.org 软件组件得到了更新。长期维护者 Alan Coopersmith 每当准备为 Solaris 发布更新时,就会发布大量的 X.Org 更新。但这些更新大多无足轻重。Linux 基本上都迁移到了 Wayland,只有一些 Solaris 和 BSD 还继续使用 X.org。

消息来源:Phoronix
老王点评:这真是象征性的工作,表示 X.org 还继续活着而已。

回音

  • Fedora 获准 开发 移动版 Fedora,采用 Phosh 合成器,预计将在明年春季发布的 Fedora 38 里出现。
  • 旧金山参事会第一次投票同意 武装机器人 的提案后,遭到了强烈抗议,因而在通常只是走个形式的第二次投票中 逆转 了该批准。最终投票将一周后举行。

少了一个空格的错误指令导致僵尸网络瘫痪

安全专家们观察到一个利用 SSH 连接和脆弱的登录凭证来感染目标的僵尸网络 KmsdBot,该僵尸网络能够挖掘加密货币和发动 DDoS 攻击。专家发现,在该网络接收到一条格式错误的控制指令后,导致该僵尸网络瘫痪,并停止了其攻击。这条错误指令丢失了 URL 和端口号参数之间的空格,由于提供了错误的参数数量,出现了“索引超出范围”的错误,而导致 Go 程序崩溃。

消息来源:The Register
老王点评:编程错误经常有,而观察到僵尸网络因为一个编程错误而崩溃的机会却不多。估计背后的恶意黑客正在叹气。

亚马逊以每月 2 美元换取手机个性化广告

亚马逊邀请部分用户参与其广告验证计划,允许亚马逊跟踪其看到的广告,以提供更具有个性化的广告体验。受邀参加该计划的用户每月可得到 2 美元的奖励。目前该计划只针对英国和美国的部分亚马逊用户,希望加入的用户可以申请等待名单。

消息来源:Ars Technica
老王点评:人家看个性化广告还有钱拿,我们只能选择要不要个性化,反正广告总是要显示给你的。

新版 WinAMP 增加了对音乐 NFT 的支持

沉寂多年的 WinAMP 于今年 8 月复活,发布了一个 5.9 版本。现在它发布了一个修正版本,修复了一些错误和更新了一些组件。在此版本中,WinAMP 出人意料的添加对 NFT 的支持,只是这种 NFT 不是图片而是音视频。其称,“好处是艺术家可以通过创造稀缺性(例如发布独特或限量的曲目),和从歌迷之间的 NFT 的二手销售中获得分成来赚更多的钱。”

消息来源:Ars Technica
老王点评:说实话,我觉得与其将心思放在 NFT 上,不如好好重构 WinAMP。

前不久,欧拉社区发布了今年的创新版本 openEuler 22.09。作为欧拉社区贡献给开放原子开源基金会后的首个创新版本,此版本中新增了 2012 万行代码,其中仅在 Linux 内核上就新增了 4.8 万行代码,全量代码已达 6.7 亿行!

openEuler 采用长期支持(LTS)版本和创新版本间隔的发布方式,每两年发布一个 LTS 版本,期间每半年发布一个创新版本,用于推出实验性的技术特性。本次发布的 openEuler 22.09 创新版就带有不少的创新特性。但是在欧拉社区官方发布的公告中,并没有特别详细地介绍这些特性,因此,我特别邀约了华为服务器 OS 首席架构师、openEuler 社区技术委员会委员熊伟来为我们解读了本次发布中的一些最新、最酷的技术特性。

从内核说起

在本次的 openEuler 22.09 发布公告中提及了若干技术特性,比如可编程内核、分布式软总线、嵌入式硬实时,这些新的名称给人一种似曾相识,但又不明其中奥秘的感觉。作为欧拉技术委员会的专家,熊伟针对我的好奇,给出了他的解答:

什么是可编程内核?

“可编程内核”这个名词是我最迷惑的 —— 内核难道不是代码吗?肯定是编程产生的,那这个“可编程”的意思是什么?

对此,熊伟首先解释了“可编程内核”产生的背景,“现在的硬件迭代变化非常快,但是相对而言,软件的变化就有点跟不上。比如说,芯片一般的生命周期就三年,你得花一年时间上传到上游,半年后进入内核社区,而从社区到用户手里还有很长的周期。本质原因在于内核相对是固定的,一次开发完成以后,编译成内核模块后就相对固定了。”因此,openEuler 创新性地借鉴了 eBPF 的思想,将机制和框架分离,框架内置到内核,而实现的功能和策略只需要写完以后注入到内核即可。

在实现上,主要是两个方面:

  1. 把这种类似 eBPF 的机制扩展到内核的很多方面。比如说,扩展到内存、可调度性,让它们都成为可变化的;
  2. 把内核中的驱动程序和内核主体的绑定解耦。

Linux 内核中的大部分代码都是驱动程序。熊伟说,“我们有一种想法,是不是能把内核驱动也能抽离出来。现在驱动程序跟 Linux 内核绑定得太死了,是不是能把内核驱动也变成可变化?”换言之,让驱动程序和 Linux 内核版本的演进尽量减少关系,这样的话,内核版本可以不断演进,但驱动程序可以在几个大版本内不断复用,而不像现在内核稍微一变化,所有的内核驱动都得重新测试验证甚至重新开发。

而关于“可编程内核”的开发计划,熊伟称,“从现在开始尝试,到明年的下半年,我们期望能推出一个相对比较完整的框架。”

对此,我不禁想到,我们知道内核的各个部分都是模块化的,不但可以在编译内核时选择和配置不同的模块,而且可以在运行中根据需要动态加载。那么,“可编程内核”和内核的模块化有什么关系和区别呢?

熊伟解释称,内核的模块还不是“彻底可变化的”,这些内核模块(KO)插入内核后是固定的,在运行过程中是不能变化的。而“可编程内核,是可以灵活动态进行调整的。”更进一步说,动态加载的不仅仅是模块,更多的是策略,模块加载进去以后可以动态地给它提供新的策略。比如说,可以根据运行的业务使用不同的内核调度器,来适应不同的需求,比如大数据和数据库对内核所采用的调度器是有不同的需求的。

对于这样的一种在内核底层机制层面进行的创新,而不仅仅是某些内核驱动程序或某个子系统,我非常期待在后继的几个版本中看到它变得成熟和更多应用。

什么是分布式软总线?

在最近的几个版本中,openEuler 提到了一个“分布式软总线”,这个名词有的人可能在鸿蒙操作系统中见到过,这是否标志着欧拉和鸿蒙的进一步融合?

熊伟称,openEuler 的“分布式软总线”就是来自于鸿蒙操作系统。“软总线”是鸿蒙的万物互联、自动发现、自动识别、自动认证、自动连通的基础。平移过来以后,凡是基于 openEuler 的操作系统和所有基于鸿蒙的操作系统的设备之间就可以实现同样的特性。在 openEuler 的上个版本中已经开始进行“分布式软总线”的平移,而在此版本中已经基本完成。

“分布式软总线”基础设施的工作,相当于提供了一个“底座”,能在这个基础上出现什么有趣的应用和场景,我们期待合作伙伴和用户去探索。

什么是嵌入式硬实时?

我也看到了这次 openEuler 22.09 中提到了“嵌入式硬实时”,这是将 RTLinux 的部分加入到了 openEuler 中了么?

熊伟首先澄清了“硬实时”这个名词:硬实时能力是个通用词,实时到什么程度才能称作“硬”,这个没有什么明确的说法。实时一般分为三个层次:

第一层,就是标准的 Linux 内核,现在芯片处理能力是比较快的,只要达到一定的响应速度,其实一般的 Linux 可以满足大部分实时的要求。

第二层,在内核中打上 RTLinux 补丁,相对于标准的 Linux 内核具有更强的实时性。

但是第三层,对实时性要求就会特别严格。比如汽车的刹车系统,目前 Linux 是达不到相关的要求的,同时合规层面等也都面临挑战,所以一般这类场景中还是选用专用的实时操作系统。对此,欧拉社区容纳了多个不同的内核,不仅仅是 Linux 内核,还包括了 Zephyr 内核、一个华为贡献的小型实时内核 uniproton 等。此外,欧拉也在和国内的实时性操作系统 RT-Thread、翼辉等形成合作。

面对纷繁复杂的场景,社区目前正在做的一个方案是混合部署方案。比如说,一个芯片或一个 SOC 中有 8 个核心,可以分出两个核做强实时性的工作,运行 RT-Thread、翼辉等这种实时内核,而另外六个核可以跑 openEuler 的 Linux 版本,两者之间构建通信机制,两者之间可以进行交互。实时部分做实时的工作,非实时部分充分利用 Linux 庞大的生态,两者再通过标准化的语义联通起来,这样就能兼顾各种场景的需求。熊伟称,这个部分社区还正在开发当中,应该在年底到明年年初大家可以看到样例。

对架构的支持

根据欧拉社区披露的信息,openEuler 全版本支持 x86、ARM、申威、龙芯、RISC-V 五种架构,支持众多的芯片厂商的多种芯片,多个硬件厂商发布的多款整机型号、板卡型号,支持网卡、RAID、FC、GPU&AI、DPU、SSD、安全卡七种类型的板卡,具备良好的兼容性。

对国产的龙芯和申威等架构的支持是应有之义。此外,随着内核对树莓派的支持,包括 openEuler 在内的各个 Linux 发行版也都纷纷提供了对最新的树莓派板卡的支持。

此外, openEuler 对 RISC-V 的支持也引起了业界关注。RISC-V 被誉为硬件里的 Linux,因其开放性而广受开源界的追捧。提及 RISC-V 支持,熊伟说,对于单板级的产品来讲,RISC-V 的成熟度已经比较高,但对于边缘计算以上的,比如说服务器、桌面,差距还是比较大。如果想在 RISC-V 上把欧拉操作系统的数千个软件包都编译过,这个本身就是一个很大挑战。但编译通过还只是第一步,第二步你得先能跑起来,第三步是要跑得好。第二步、第三步对于整个 Linux 产业线来讲,熊伟觉得 RISC-V 还有比较长的路要走。

熊伟说,“我们在去年上半年和国内很多 RISC-V 厂商都有过沟通,还组织过相关的讨论会等活动,现在的情况是大家先合力把技术准备工作做好,欢迎 RISC-V 相关厂商基于 openEuler 来开放相关产品”。

对应用场景的支持

什么是虚拟化混合部署,其意义何在?

前面我们在嵌入式硬实时部分提到一种虚拟化混合部署场景,熊伟就此做了进一步展开:对于未来的趋势可以探讨一下。以汽车为例,汽车上分为实时部分和非实时部分,汽车设计起初是分离式的,非实时部分和实时部分都是各走各的芯片,各走各的线路,但这样成本就比较高,结合起来也比较复杂。未来可能会出现这种趋势,这些功能都集中在一个板卡上,甚至一个 SOC 上,而 SOC 会分成不同的分区,有实时控制的分区,有非实时控制的分区。实时分区进行车辆控制,非实时分区负责车载娱乐系统。在很多场景上都会产生这种需求,其好处就是它的成本会降低,交互和互联或者信息共享更加容易方便。openEuler 有几种内核,会通过构建系统进行混合部署,根据不同的场景采用不同的内核。

所以,基于混合部署可能会催生出很多有趣的想象力,熊伟称,今年年底可以推出混合部署的一个原型,明年有望变得相对比较成熟。

对云计算/服务器场景的支持

对于云计算和服务器场景的支持,除了对英特尔最新硬件的支持之外,openEuler 还在云原生、混合部署方面做了较多工作,比如离线/在线的混合部署,增强了资源利用率。熊伟称,云以及云原生方向是 openEuler 的发力重点。

此外,熊伟还提到了一个令我颇感兴趣的东西,即一个新的初始化系统。我们知道,Linux 最初的初始化系统,比如 sysVinit,已经基本上被 systemd 所取代。虽然 systemd 也带来很多新的进步,但是其也因不透明、庞杂、大一统等有违 UNIX 传统思维的做法而广受诟病。因而,欧拉社区也在开发一个新的初始化系统 SysMaster,它是一个使用 Rust 开发的轻量级初始化系统,目前计划首先应用在嵌入式和容器中。熊伟称,今年年底将会发布原型系统,并预期未来会支持更多的场景。

当然,在 openEuler 社区里,SysMaster 和 systemd 可以按照客户的要求自行选择,在特定场景下可以提供更好的性能、更轻量的资源占用。熊伟还就此表达了欧拉操作系统的设计理念,“沿这个脉络出发,openEuler 做的很多工作都是期望把操作系统的部件尽量简化,而不是越做越复杂。做事太多对操作系统也是一种负面影响。”

可能有人会对技术圈重复造轮子感到不以为然,熊伟说,“我们是非常强烈地建议大家重复造轮子的。重复造轮子,造更好的轮子才能不断推动技术的进步。比如说 OpenSSL 问题也比较多,如果谁用 Rust 或者其它语言重写了 SSL 实现,我们也非常乐意支持,会融合到我们的操作系统当中。”

欧拉为开发者提供的支持

从这次公布的数据来看,欧拉社区的开发者、贡献者增长迅速。有 1265 名开发者参与了 openEuler 22.09 的版本贡献,相较于上一个版本,参与版本贡献的开发者数量新增 63%,是 openEuler 已发布的版本中开发者数量最多的一次。

对此,我和熊伟进行了讨论,欧拉社区为开发者做了什么支持,才能有这么多的开发者、贡献者参与贡献。熊伟对这个话题表示了很大的兴趣。他认为,如果对标 Debian、Fedora 等操作系统社区来看,在 openEuler 之前,甚至是 openEuler 早期,其实中国是没有一个完整的操作系统社区的。

在开始阶段,欧拉社区是以包括华为在内的各个厂商的力量结合在一起组成的,但坦白来讲,开始阶段还是人拉肩扛这种方式比较多,相当于堆人力。熊伟说,但是从今年开始,欧拉开始真正地把社区的一些综合性的机制建立起来了,同时我们正在重构基础设施。比如建立统一账号,之前欧拉操作系统的开发需要在 Gitee 上注册账号进行,而如果是 GitHub 上的开发者就没办法参与。所以,欧拉首先要有一个统一账号,把这个基础设施变成分布式的,不会强制捆绑到某一个托管平台。通过分布式平台,使用统一的工具从不同的平台上拉取到一个构建仓进行构建。

这样,整个基础设施做了脱胎换骨式的变革,把公共能力抽取出来,可以适配不同的平台,你个人的开发行为和平台的绑定就可以进行隔离了。这样做有非常大的好处,不光是可以集合几个厂商的力量,还可以让更多的个人开发者参与进来。这使得整个社区的运作更加分布化,同时也容易走向国际化。熊伟说,基础设施改造完成后,一些自动化的工具,包括一些看板、可视化、可量化的评估体系都健全了,社区后续走向国际化、社区规模的进一步扩大也就有了坚实的基础了。

这一点我听了以后特别受鼓舞,我一直在看着欧拉社区是怎么发展起来的,我认为这是下一步发展的重要动力。

说到这里,熊伟也说,“大家在社区里抱怨很多事情,其实我们都是听得到的,技术委员会都听得到。但是很多事情是比较复杂的,消耗的工作量很大,这需要有条不紊地在一点一点去改进。整个社区的演变,我们肯定是有清晰规划的,一定会实现,但是大家可能要稍微耐心点,因为它不可能一蹴而就。”

下一个版本的蓝图

之后,熊伟还谈到了之后的版本蓝图。社区也在讨论如何更好的使得上下游企业,把社区的开发节奏和产品迭代速度相适应。

从目前的计划来看,欧拉社区期望能在下一个 LTS 版本中真正实现全场景、全覆盖,真正能够从嵌入式、边缘计算到服务器、云计算全部拉通。目前的全场景还是比较初级的,组件只是能通,从构建、从基础设施角度来讲还都是比较分离的组件。熊伟称,“至少从我的角度来讲,最重要的就是把整个东西都能变成一个大的体系,而不是分离性的系统。”

此外,欧拉还期望在下一个 LTS 版本上完成基础设施的分布式化、国际化。这是从整个社区角度来讲,欧拉最关心的两件事。熊伟称,运行基础只要好了,产出一定不会差,但是如果运行基础不好,还是原先按照堆人力,手动的太多,这个路是走不下去的,因为社区已经大到不可能走下去。

最后,熊伟还谈到了关于基础工作的观点,“我们做的事不但困难、花费又大、成效又很缓慢。水面下的工作可能并不那么显眼,但实际上它真正是我们这个产业最基础的。”

NASA 将使用 3D 打印机在月球上建设

从地球向月球运送原材料是非常昂贵的,其费用将是天文数字。NASA 委托 3D 打印建筑公司 ICON,研发在月球表面建造基础设施如着陆场、公路和住宅的 3D 打印机。该 3D 打印机将使用月球上存在的材料,如月尘和月球上的岩石。

消息来源:Singularity Hub
老王点评:这才是大型 3D 打印机的重要用途。

Adobe 将销售 AI 生成的图片库

dobe 认为生成性 AI 将会在未来的内容创作中扮演重要角色,它不认为 AI 将会替代人类艺术家,而是作为一种补充。它现在允许销售 Dall-E 等 AI 辅助生成的图像,条件是这些图像必须明确标明。而 Getty 等商业图片库则在早些时候宣布不接受 AI 生成的图像。

消息来源:Solidot
老王点评:就像 Photoshop 一样,这些 AI 工具也只是工具而已,并不会取代人类艺术家。

AMD 暗示摩尔定律将继续保持 6 至 8 年

在过去,像 AMD 和英特尔这样的芯片制造商可以每 18 到 24 个月将晶体管密度提高一倍,并保持在相同的成本范围内。AMD 的 CTO 在采访中说,“创新总是能找到绕过障碍的方法,我们将有更高的密度、更低的功率,但它将花费更多。”他们正在规划未来 6 到 8 年的晶体管技术,但会花费更多。

消息来源:The Register
老王点评:和以前一样,摩尔定律总是能找到解决方案。

Stack Overflow 临时封杀 ChatGPT

OpenAI 的新通用聊天机器人原型 ChatGPT 过去几天风靡互联网,它在解决各种问题上的能力使其可以部分替代谷歌等搜索引擎和 Stack Overflow 等编程问答社区。Stack Overflow 上也涌入了数以千计的用 ChatGPT 回答的问题,但由于 ChatGPT 给出的答案正确性太低,发布的人也缺乏专业性,甚至也不愿意验证正确性,对寻求正确答案的用户来说是有害的。Stack Overflow 因而发表声明,宣布临时封杀 ChatGPT。如果用户被发现使用 ChatGPT 回答问题,他们可能会受到禁止继续发帖的惩罚。

消息来源:Stack Overflow
老王点评:虽然 ChatGPT 能做到一些令人惊讶的对话,但是本质上并不是有效的知识和思考,因此,这些似是而非的回答确实可能会毁了寻求答案者的信任。但是,有个问题是,Stack Overflow 如何识别这些以假乱真的回答?

开源软件托管商 Fosshost 关闭,CEO 失联

非盈利托管商和云计算服务商 Fosshost 免费托管了多个知名的开源项目,其中包括 GNOME、Armbian、Debian 等项目的部分内容,不过,GNOME 和 Debian 的核心基础设施并不依赖 Fosshost。Fosshost 发布了即将下线的公告称,由于情况超出了志愿者的控制,服务器无法保证能继续上线,他们预计将会很快下线。据称下线原因是控制着银行账号和资金的 CEO 已经失联了六个月,以至于无法支付服务器托管费用。

消息来源:Solidot
老王点评:本来很好的开源项目,却由于不良的管理而导致结束。希望有开源基金会或科技企业可以伸出援手。

PyTorch 终于进入 2.0,性能大幅提升

在 2021 年,开发者们对 PyTorch 1.10 是否应该被标记为 2.0 版本进行过简短讨论。当时认为 PyTorch 1.10 与 1.9 相比没有足够的根本性变化,不值得将其升级到 2.0 的主要版本号。但现在,开发者们认为是 PyTorch 2.0 的正确时机,因为该项目引入了一个新模式,称为 torch.compile,大幅提升了速度。经验证,在 2.0 试验版的大约 160 个开源模型上,速度提高了 43%。

消息来源:Venture Beat
老王点评:虽然有部分代码是 C++ 写的,但是能取得这样的性能提高也非常可观。