LinuxZH

通过自由/开源软件周刊通讯,可以学习有用的Linux技巧,发现应用程序,探索新的发行版,并随时了解Linux世界的最新动态

文章

Fedora Linux 43 is here!
Fedora Linux 43 is here!
Anonymous

作为新的Fedora项目负责人,我很兴奋地宣布我的第一个Fedora Linux版本。Fedora Linux 43在这里!43个版本!哇,很多啊。我在考虑提出特殊的四环画贴纸来庆祝这个发布,但我不确定有人会注意到它们不是圆圈。 感谢并祝贺所有为Fedora这个版本做出贡献的人,以及在此之前的所有版本中做出贡献的人。我很感激能有机会以Fedora项目负责人的身份来管理这个协作项目。在最初的几个月里,我一直在尽可能多地努力工作。我期待着写一些更长的文章来说明我想把这艘船驶向何方,但是现在我只想强调您应该在最新版本的Fedora Linux中遇到的一些变化。阅读下面的要点,了解更多。或者如果你准备好了,就跳进去吧! 升级 如果您有一个现有的系统,那么将Fedora Linux升级到新版本是很容易的。在大多数情况下,这与重启常规更新没有太大区别,除了你会有更多的时间喝杯咖啡。 全新安装 如果这是你第一次运行Fedora Linux,或者你只是想用Fedora重新开始,下载我们的旗舰版本(工作站,KDE等离子桌面,云,服务器,CoreOS, IoT)的安装媒体,为我们的原子桌面(Silverblue, Kinoite, Cosmic, Budgie, Sway)之一,或用于替代桌面选项(如Cinnamon, Xfce, Sway等)。 有什么新鲜事吗? 与往常一样,在Fedora中,有太多单独的更改和改进,无法详细介绍。你会想看一下发布说明。 显著的用户可见变化 然而,在这个版本中有一些值得注意的用户可见的变化。对于那些安装了新的Fedora Linux 43 spin的用户,您可能会看到新的Anaconda web。这是Fedora Workstation 42的默认安装界面,现在它也是spin的默认安装UI。 如果您是GNOME桌面用户,您还会注意到,在Fedora Linux 43中,GNOME现在只支持wayland了。GNOME上游已经弃用了X11支持,并且在GNOME 49中禁用了它作为编译时默认值。上游GNOME计划在GNOME 50中完全移除X11支持。 管道的升级 除了用户可见的更改之外,还有一些重要的管道,大多数用户可能不会注意到,但仍然是一个大问题。 Fedora Linux 43将是第一个使用RPM 6.0的版本。就像我说的,终端用户应该不会注意到这一点,但这是一个重大的变化。RPM 6.0提供了一些有趣的安全性增强,比如包的多密钥签名。当我们在未来的版本中过渡到后量子加密的OpenPGP密钥时,这应该有助于防未来的包签名。 我们也在推进我们的启动实现故事。Fedora CoreOS现在可以使用Containerfile从Fedora基本引导映像构建,而不需要使用自定义工具构建。这意味着任何使用podman的人都可以构建Fedora CoreOS镜像,无论是手动还是通过CI/CD自动化。 Fedora CoreOS (FCOS)在Fedora 43中也改变了向用户发布更新的方式。FCOS更新将只作为OCI映像交付,而不是使用OSTree存储库。FCOS 42为用户提供了OSTree存储库和OCI注册中心作为转换。在FCOS 43中,OSTree更新被完全禁用。 保存日期:Fedora Linux 43发布派对! 为了庆祝所有这些令人难以置信的社区工作,我们将举办一个虚拟的Fedora Linux 43发布派对!请将日期保留到11月21日星期五。我们还在最终确定日程安排和演讲者,所以现在还不开放注册,但更多细节将很快分享。您可以关注Fedora Linux 43发布派对时间表wiki页面以获取最新更新! 如果你遇到障碍 如果遇到问题,请访问我们的Ask Fedora用户支持论坛。这个论坛包括一个类别,我们收集常见的问题和解决方案或变通方法。 顺便过来打声招呼 在Fedora Discussion上访问我们的“虚拟饮水机”,加入我们的对话,分享一些有趣的东西,并介绍你自己。我们总是很高兴见到新朋友! ...

CryptoMB Intel 加速加密库
CryptoMB Intel 加速加密库
Anonymous

CryptoMB 通常指的是 Intel Multi-Buffer Cryptography Library(英特尔多缓冲区加密库)。 介绍 它是一个用于加密操作的库,主要特点是: 多缓冲区加密(Multi-Buffer Cryptography):它利用 SIMD(单指令多数据) 机制,尤其是 英特尔 ® 高级矢量扩展 512 (Intel® AVX-512) 等指令集。 性能优化:通过将多个加密操作(例如多达八个 RSA 或 ECDSA 操作)收集到一个缓冲区中并同时处理,从而显著提高性能,特别是在处理大量并发的 TLS/SSL 握手操作时效果明显。 应用场景:它常被用于加速 TLS/SSL 握手过程中的私钥操作,例如在 Envoy 和 Istio 等服务网格代理中,可以作为私钥提供程序(Private Key Provider)来配置使用,以提高加密操作的效率。 简而言之,CryptoMB 是一种利用硬件特性(如 Intel® AVX-512)来加速加密计算的技术或库。 ...

Linux基金会的最新努力:Agentic AI的基础
Linux基金会的最新努力:Agentic AI的基础
Anonymous

Linux基金会今天宣布,它在其不断壮大的保护伞下成立了另一个基金会,该基金会远远超出了传统的“Linux”领域:代理人工智能基金会。 人工智能代理基金会(AAIF)已经成立,Anthropic贡献了模型上下文协议(MCP), Block’s goose和OpenAI贡献了他们的代理。导向编码剂的Md规范。 人工智能基金会的目标是“建立一个中立、开放的基金会,以确保人工智能透明、协作地发展”。 代理AI基金会标志 新成立的代理人工智能基金会的白金会员包括Amazon Web Services、Anthropic、Block、Bloomberg、Cloudflare、谷歌、微软和OpenAI。 那些对代理AI基金会感兴趣的人可以通过Linux基金会的新闻稿了解更多信息。该基金会的网站是AAIF.io。 ...

Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库
Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库
Anonymous

title: "Chapter 2 - 标准模式" weight: 3 date: 2023-04-28 18:00:00 description: "Chapter 2 - 本节教程将详细介绍Zig编程语言的标准库." 自动生成的标准库文档可以在这里找到。安装ZLS也可以帮助你探索标准库,它为你提供了完成度。 Allocators 分配器 Zig标准库提供了一个分配内存的模式,它允许程序员准确地选择在标准库中如何进行内存分配--在标准库中没有分配在你背后发生。 最基本的分配器是[std.heap.page_allocator](https://ziglang.org/documentation/master/std/#A;std:heap.page_allocator)。每当这个分配器进行分配时,它都会向你的操作系统索取整页的内存;一个单一字节的分配可能会保留多个kibibytes。由于向操作系统索取内存需要一个系统调用,这对速度来说也是非常低效的。 在这里,我们分配了100个字节作为[]u8。注意defer是如何与free结合使用的--这是Zig中内存管理的一个常见模式 . const std = @import("std"); const expect = std.testing.expect; test "allocation" { const allocator = std.heap.page_allocator; const memory = try allocator.alloc(u8, 100); defer allocator.free(memory); try expect(memory.len == 100); try expect(@TypeOf(memory) == []u8); } std.heap.FixedBufferAllocator是一个分配器,将内存分配到一个固定的缓冲区,而不进行任何堆分配。当不希望使用堆时,例如在编写内核时,这很有用。出于性能方面的考虑,也可以考虑这样做。如果它的字节数用完了,它将给你一个错误OutOfMemory。 test "fixed buffer allocator"...

Chapter 1 - 基础知识 Chapter 1 - 这将使你快速掌握几乎所有的Zig编程语言。这一部分的教程应该可以在一小时内完成."
Chapter 1 - 基础知识 Chapter 1 - 这将使你快速掌握几乎所有的Zig编程语言。这一部分的教程应该可以在一小时内完成."
Anonymous

title: "Chapter 1 - 基础知识" weight: 2 date: 2023-04-28 18:00:00 description: "Chapter 1 - 这将使你快速掌握几乎所有的Zig编程语言。这一部分的教程应该可以在一小时内完成." Assignment 赋值 赋值语法: (const|var) identifier[: type] = value. const表示identifier是一个constant 常量,存储一个不可变的值。 var表示identifier是一个variable 变量,存储一个可变的值。 : type是对identifier的类型注释,如果可以推断出value的数据类型,可以省略。 const constant: i32 = 5; // signed 32-bit constant var variable: u32 = 5000; // unsigned 32-bit variable // @as performs an explicit type coercion const inferred_constant = @as(i32, 5); var inferred_variable = @as(u32, 5000); 常量和变量必须有一个值。如果不能给出已知的值,只要提供一个类型注释,就可以使用undefined值,它可以强制到任何类型 . const a: i32 = undefined; var b: u32 =...