【Rust日报】2023-10-03 Rust std 对 UEFI 的支持进入 Nightly 版本

Rust std 对 UEFI 的支持进入 Nightly 版本

Ayush Singh 在文章中分享了他在 Google Summer of Code 2022 项目期间,开始在 Tianocore 下为 UEFI 开发 Rust Std 的经历。经过一年的工作,UEFI Rust std 的初始支持已经合并到 Rust Nightly 中。文章中,Ayush 回顾了目前可以做什么以及他的计划。

UEFI(统一的可扩展固件接口)是一个软件程序的规范,它连接计算机的固件到其操作系统。尽管 UEFI 提供了许多 OS 原语,如分配器、stdio、网络等,并且可以在 UEFI 中运行相当复杂的应用程序,如内存检查、磁盘检查等,但在这个领域的工作主要是使用C语言完成的。

Ayush 提到,虽然使用基础的C编写 UEFI 应用程序是可能的,但你需要使用类似 EDKII 的库来超越 Hello World。

另一方面,GNU-EFI 是一组用于使用系统的本地 GCC 编译 UEFI 应用程序的库和头文件。因此,拥有 Rust std 支持将使使用标准 Rust 原语编写复杂的 UEFI 应用程序和实用程序成为可能。由于 rustc 允许交叉编译,用 Rust 编写 UEFI 应用程序就像创建一个 cargo 项目并将其编译为 *-unknown-uefi目标一样简单。

目前实现的 Rust Std 功能包括:

  • alloc:这意味着所有堆类型应该工作。

  • os_str:OsString在底层使用 UTF-16 和 UCS-2,允许更直接地转换为Rust UTF-8 字符串。

  • os::uefi 下提供了一些 UEFI 特定的功能。

Ayush 还展示了如何使用标准库创建一个小的“Hello World”应用程序,并分享了他未来的计划和工作。

原文链接 https://programmershideaway.xyz/post29/

Rust 项目构建配置指南

Nicholas 重写了《Rust Performance Book》的构建配置章节。这个章节现在提供了一个更全面的指南,展示了如何在不更改源代码的情况下改变 Rust 程序的性能。包括运行速度、内存使用、二进制大小和编译时间等各个方面。

Nicholas 提到,通过简单的更改,可以大幅提高 Rust 程序的性能,并鼓励大家尝试这些方法。

原帖链接 https://mas.to/@nnethercote/111168277901302034

perfance book 构建配置章节 https://nnethercote.github.io/perf-book/build-configuration.html

ring 发布 0.17.0 版本

ring 是一个加密库,专注于实现、测试和优化一组通过易用 API 暴露的核心加密操作,使用 Rust、C 和汇编语言混合编写,并提供了一个 Rust API(C和汇编语言代码大部分来自 BoringSSL)。

近日,其发布了 0.17.0 版本,是一个新的 milestone。

由于 ring 库被 rustls(一个 Rust 的 TLS 实现)使用,这个更新被认为非常重要。因为 ring 之前只支持 x86 和 ARM 架构,rustls 也只能支持这些架构(尽管它是一个非常高质量的 TLS 实现),也就是所,ring 阻止了 Rust 生态系统中的其他 crate 默认使用它。而目前 ring 新增了 PowerPC,S390X,RISC-V 等架构的支持,因此应用也会更加广泛。

仓库地址 https://github.com/briansmith/ring

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

  • 微信公众号:Rust 语言中文社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149026.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Cortex-A9 架构

一、Cortex-A 处理器运行模式 Cortex-A9处理器有 9中处理模式,如下表所示: 九种运行模式 在上表中,除了User(USR)用户模式以外,其它8种运行模式都是特权模式,在特权模式下,程序可以访问所有的系统资源。这…

在openwrt dnsmasq DHCP中为客户端分配不同的网关和DNS | 旁路由 禁止上网

环境:openwrt dnsmasq PS4/Switch 问题:为路由器下的设备分配不同的网关和DNS,禁止局域网设备上网 解决办法:修改dnsmasq配置文件 背景:Openwrt 的DHCP服务是使用dnsmasq实现的,他可以给内网的客户端设备…

网络安全工程师考证指南,不看就亏了!!

目前网络安全行业,国内都有哪些证书可以考? 一、CISP-PTE (国家注册渗透测试工程师) CISP-PTE即注册信息安全渗透测试工程师,该证书由中国信息安全测评中心颁发,证书是国内唯一认可的渗透测试认证&#x…

el-menu 导航栏学习(1)

最简单的导航栏学习跳转实例效果: (1)index.js路由配置: import Vue from vue import Router from vue-router import NavMenuDemo from /components/NavMenuDemo import test1 from /components/test1 import test2 from /c…

Redis中Hash类的操作

Redis中Hash类型是键值对的形式保存数据,其中键被称为字段(field),值称为字段值(value)。在一个key中,字段不能重复,而值可以重复。无论是字段还是值都是无序的(保存的次…

mysql双主+双从集群连接模式

架构图: 详细内容参考: 结果展示: 178.119.30.14(主) 178.119.30.15(主) 178.119.30.16(从) 178.119.30.17(从)

添加驱动模块到内核的两种方法

添加驱动模块到内核的两种方法 1. 放在内核源代码树中 步骤总结: 新建文件夹编写Makefile、编写Kconfig修改上层Kconfig执行make menuconfig执行make zImage 或 make modules 1.1 源码放入文件夹 例如:添加一个按键字符设备模块 在内核目录下的 dri…

【推荐系统】多任务学习模型

介绍一些多任务学习模型了解是如何处理多任务分支的。 ESSM, Entire Space Multi-Task Model 阿里提出的ESSM全称Entire Space Multi-Task Model,全样本空间的多任务模型,有效地解决了CVR建模(转化率预估)中存在的两个非常重要…

MATLAB中plot3函数用法

目录 语法 说明 向量和矩阵数据 表数据 其他选项 示例 绘制三维螺旋图 绘制多个线条 使用矩阵绘制多个线条 指定等间距刻度单位和轴标签 将点绘制为不带线的标记 自定义颜色和标记 指定线型 在绘图后修改线条 绘制表中的数据 在 x 和 y 轴上绘制多个表变量 指…

10.2 调试事件获取DLL装载

理解了如何通过调试事件输出当前进程中寄存器信息,那么实现加载DLL模块也会变得很容易实现,加载DLL模块主要使用LOAD_DLL_DEBUG_EVENT这个通知事件,该事件可检测进程加载的模块信息,一旦有新模块被加载或装入那么则会触发一个通知…

Qt扫盲-QSqlTableModel理论总结

QSqlTableModel理论总结 一、概述二、使用1. 与 view 视图绑定2. 做中间层,不显示 三、常用函数 一、概述 QSqlTableModel是用于从单个表读写数据库记录的高级接口。它构建在较低级的QSqlQuery之上,可用于向QTableView 等视图类提供数据。这个主要是对单…

苹果V3签名是什么?优势是什么?什么场合需要应用到?该怎么部署?

v3签名,或称为Apple Developer Program v3签名,是苹果公司在2021年6月推出的一种签名格式,用于对应用程序进行签名和验证。 它是取代了之前的v2签名格式,用于增强应用程序的安全性和完整性。 v3签名能够做到以下几点:…

【Linux基础】Linux发展史

👉系列专栏:【Linux基础】 🙈个人主页:sunny-ll 一、前言 本篇主要介绍Linux的发展历史,这里并不需要我们掌握,但是作为一个合格的Linux学习者与操作者,这些东西是需要了解的,而且…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(五)

思维导图 Bom操作 一、Window对象 1.1 BOM(浏览器对象模型) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vi…

k8s集群-6(daemonset job cronjob控制器)

Daemonset 一个节点部署一个节点 当有节点DaemonSet 确保全部 (或者某些) 节点上运行一个 Pod 的副本。加入集群时&#xff0c;也会为他们新增一个 Pod 。当有节点从集群移除时&#xff0c;这些Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 DaemonSet 的典型用…

Boost程序库完全开发指南:1.1-C++基础知识点梳理

主要整理了N多年前&#xff08;2010年&#xff09;学习C的时候开始总结的知识点&#xff0c;好长时间不写C代码了&#xff0c;现在LLM量化和推理需要重新学习C编程&#xff0c;看来出来混迟早要还的。 1.shared_ptr 解析&#xff1a;shared_ptr是一种计数指针&#xff0c;当引…

数字电路逻辑与设计 之循环码和 移存码

有发现错误的能力&#xff0c;不能纠正 只能检查单次的错误&#xff0c;不能完全抗干扰 可以按照上面的方法来循环构造 移存码可以通过前推后推来实现

pycharm配置python3.8版本专门用于undecteded_chromedriver测试

pycharm配置python3.8版本专门用于undecteded_chromedriver测试 作者&#xff1a;虚坏叔叔 博客&#xff1a;https://pay.xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 一、Pycharm及python环境的配置 1.安装python-3.8.7rc1-amd64.e…

MySQL进阶_3.性能分析工具的使用

文章目录 第一节、数据库服务器的优化步骤第二节、查看系统性能参数第三节、 慢查询日志第四节、 查看 SQL 执行成本第五节、 分析查询语句&#xff1a;EXPLAIN5.1 基本语法5.2 EXPLAIN各列作用 第一节、数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;可…

十三、Django之添加用户(原始方法实现)

修改urls.py path("user/add/", views.user_add),添加user_add.html {% extends layout.html %} {% block content %}<div class"container"><div class"panel panel-default"><div class"panel-heading"><h3 c…