百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

新一代系统编程语言Rust 1.3发布_rust程序设计语言

haoteby 2025-02-18 11:38 72 浏览

Rust一直都在不断在前进与快速的发展中:我们迎来了Rust 1.3稳定版。(完整的版本发布详情参见本文下半部分)

1.3稳定版中重大改进

这是带有 Rustonomicon的第一个先行发布版本,加入了Rust编程指南电子书《The Dark Arts of Advanced and Unsafe Rust Programming》,虽然它还只是草案形式,但是这本书已经覆盖了Rust的很多方面。

在Rust 1.3的库中,很多API被稳定下来,包括新的Duration API和Hash/Hasher。未来的1.5版本中将对std::time模块进行功能改进并稳定。

Rust 1.3对性能进行了改进,主要集中在标准库这一块:

Rust已经初步支持 Windows XP,我们将继续在Windows系统上进行投入,但并不打算将Windows XP 作为"第一梯队"的平台,现在可以在XP上构建Rust代码,但是要避免使用一些尚未支持XP的标准库。关于MSVC工具链的集成工作正在进行中,现在在1.4测试版中已经可以完全支持在64位的Windows系统中运行。

Cargo已经支持 早期的RFC中所指定的规则。我们的想法是,依赖约束不要影响纯编译的能力,这反过来又使得它更容易调整在生态系统中的一些不必要的麻烦处理方式。

以下为Rust 1.3的完整特性:

1.3.0 版本(2015-09-17)

约900个修改,大量的bug修复

新特性

  • 新的 对象生命周期,&'a Box将由原来的释意&'a Box变成&'a Box
  • 新增电子书 Rustonomicon作为指导编写unsafe rust 模块的官方文档;
  • DurationAPI已经被稳定下来,并被其它标准库和第三方模块使用。

非兼容性的修改

  • 新的 对象生命周期:对于对象生命周期省略的解释已经回归,但是最合适的解释方案还没有结论;
  • #[prelude_import]属性的内部实现细节先前已经被稳定下来,新版中对其的改动将打破已有的代码;
  • size_of_value和align_of_val对于大小可调节的类型的处理更智能,依赖之前实现的代码将可能无法运行;
  • dropck规则将确保析构函数不能访问已经销毁的值,它已经被更新并符合RFC标准,修复了一些稳定性方面的bug,这些将导致以前能够编译的代码无法构建。

语言

  • 新的对象生命周期:对于对象生命周期省略的解释已经回归,但是最合适的解释方案还没有结论;
  • 分号现在可以出现类型与宏定义中;
  • size_of_value和align_of_val对于大小可调节的类型的处理更智能,依赖之前实现的代码将可能无法运行;
  • 'static变量现在能够是 递归的;
  • ref绑定能够正确地在 Deref和DerefMut之间做出选择;
  • dropck规则将确保析构函数不能访问已经销毁的值,它已经被更新并符合 RFC标准,修复了一些稳定性方面的bug,这些将导致以前能够编译的代码无法构建。

  • DurationAPI已经稳定,std::time模块其目前仅包含Duration;
  • Box和Box<[T]>都实现了Clone;
  • 拥有所有权的C字符串 CString实现了Borrow,借来的C字符串CStr,实现了ToOwned,Borrow和ToOwned的实现使得在范型代码中可以对C字符串进行Borrow和Clone操作;
  • CStr实现了 Debug;
  • AtomicPtr实现了Debug;
  • Error接口对象能够被降阶到它所指向的具体类型,可以像使用Any接口一样地去使用它的is、downcast、downcast_ref和downcast_mut方法;
  • 字串搜索现在采用更高效的“two-way”算法取代单纯的进行一次搜索操作的实现方式,这给对包括contain、find、split、starts_with和ends_with等方法带来了极大的速度提升;
  • 切片的PartialEq操作速度更快;
  • 散列接口提供了默认的方法hash_slice,通过重载和优化hash_slice的实现对对标量进行了优化;
  • 散列器接口现在有一些专门为基本类型提供的WRITE_*系列方法,目的是为了提高效率;
  • I/O错误类型增加了一个方法集合用于访问内部的错误代码,std::error::Error::casuse的实现也是通过代理到内部错误代码来实现;
  • process::Child新增加id方法用于返回平台独立的进程标志符;
  • 切片上的connect方法已被弃用,取而代之的是新的join方法(注意,这两个方法都在不稳定SliceConcatExt);
  • Wrapper类型实现了Div运算符号;
  • String实现了DerefMut;
  • SipHash对于长数据能够获得更好的性能;
  • AtomicPtr实现了Send;
  • Stdin和File实现的read_to_end现在使用未初始化的缓存以提高性能;
  • 外界函数的生命周期参数被移除了。

其它

  • 现在Rust在定程序可以生成在Windows XP上运行的程序,尽管XP不在被支持的平台列表之中;
  • 现在移植GNU工具链到MSVC的工作还在继续,但仍不推荐在1.3中使用,即使在1.4 beta版中将对64位系统中提供完整的功能支持;
  • 在基于Fedora的发行版的系统中,安装将正确的配置动态链接器;
  • 编译器增加了许多新的扩展错误描述,可以通过--explain选项访问;
  • 用于约束析构函数不能访问已销毁值的dropck已经被重写,修改了一些稳健性的漏洞,这是非向后兼容的;
  • rustc现在在可能情况下使用LLVM写归档文件,最终目标是消除对于ar工具的依赖;
  • Rust开始提供对于i686平台上FreeBSD的初步支持(它长期支持x86-64平台上的FreeBSD);
  • unused_mut、unconditional_recursion、improper_ctypes和negate_unsigned lints更严格;
  • 如果着陆垫被禁止(使用-Z无着陆垫),异常将杀死泄漏的进程。

Rust 1.3的贡献者

Rust是一个社区驱动的语言,我们真诚的感谢Rust1.3版中的131位贡献者:

  • Aaron Turon
  • Adam Heins
  • Agoston Szepessy
  • Aidan Hobson Sayers
  • Akos Kiss
  • Alex Crichton
  • Alex Newman
  • Alexis Beingessner
  • Alisdair Owens
  • Andreas Tolfsen
  • ……

原文链接:Announcing Rust 1.3和Version 1.3.0 (2015-09-17)(译者/魏绪文 责编/钱曙光)

译者简介:魏绪文(fuxpro@outlook.com),致力于CPU架构和并发型应用的研究与实践,乐于分享。

CSDN Rust 学习交流群拥有多位Rust资深研究者,如果你想零距离接触大牛和贡献者,请加群主微信 qshuguang2008 或扫描下方二维码申请入群,备注:实名+公司名+Rust。

相关推荐

一日一技:用Python程序将十进制转换为二进制

用Python程序将十进制转换为二进制通过将数字连续除以2并以相反顺序打印其余部分,将十进制数转换为二进制。在下面的程序中,我们将学习使用递归函数将十进制数转换为二进制数,代码如下:...

十进制转化成二进制你会吗?#数学思维

六年级奥赛起跑线:抽屉原理揭秘。同学们好,我是你们的奥耀老师。今天一起来学习奥赛起跑线第三讲二进制计数法。例一:把十进制五十三化成二进制数是多少?首先十进制就是满十进一,二进制就是满二进一。二进制每个...

二进制、十进制、八进制和十六进制,它们之间是如何转换的?

在学习进制时总会遇到多种进制转换的时候,学会它们之间的转换方法也是必须的,这里分享一下几种进制之间转换的方法,也分享两个好用的转换工具,使用它们能够大幅度的提升你的办公和学习效率,感兴趣的小伙伴记得点...

c语言-2进制转10进制_c语言 二进制转十进制

#include<stdio.h>intmain(){charch;inta=0;...

二进制、八进制、十进制和十六进制数制转换

一、数制1、什么是数制数制是计数进位的简称。也就是由低位向高位进位计数的方法。2、常用数制计算机中常用的数制有二进制、八进制、十进制和十六进制。...

二进制、十进制、八进制、十六进制间的相互转换函数

二进制、十进制、八进制、十六进制间的相互转换函数1、输入任意一个十进制的整数,将其分别转换为二进制、八进制、十六进制。2、程序代码如下:#include<iostream>usingna...

二进制、八进制、十进制和十六进制等常用数制及其相互转换

从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。一、二进制、八进制、十进制和十六进制是如何定义的?二进制是B...

二进制如何转换成十进制?_二进制如何转换成十进制例子图解

随着社会的发展,电器维修由继电器时代逐渐被PLC,变频器,触摸屏等工控时代所替代,特别是plc编程,其数据逻辑往往涉及到数制二进制,那么二进制到底是什么呢?它和十进制又有什么区别和联系呢?下面和朋友们...

二进制与十进制的相互转换_二进制和十进制之间转换

很多同学在刚开始接触计算机语言的时候,都会了解计算机的世界里面大多都是二进制来表达现实世界的任何事物的。当然现实世界的事务有很多很多,就拿最简单的数字,我们经常看到的数字大多都是十进制的形式,例如:我...

十进制如何转换为二进制,二进制如何转换为十进制

用十进制除以2,除的断的,商用0表示;除不断的,商用1表示余0时结束假如十进制用X表示,用十进制除以2,即x/2除以2后为整数的(除的断的),商用0表示;除以2除不断的,商用1表示除完后的商0或1...

十进制数如何转换为二进制数_十进制数如何转换为二进制数举例说明

我们经常听到十进制数和二进制数,电脑中也经常使用二进制数来进行计算,但是很多人却不清楚十进制数和二进制数是怎样进行转换的,下面就来看看,十进制数转换为二进制数的方法。正整数转二进制...

二进制转化为十进制,你会做吗?一起来试试吧

今天孩子问把二进制表示的110101改写成十进制数怎么做呀?,“二进制”简单来说就是“满二进一”,只用0和1共两个数字表示,同理我们平常接触到的“十进制”是“满十进一”,只用0-9共十个数字表示。如果...

Mac终于能正常打游戏了!苹果正逐渐淘汰Rosetta转译

Mac玩家苦转译久矣!WWDC2025苹果正式宣判Rosetta死刑,原生游戏时代终于杀到。Metal4光追和AI插帧技术直接掀桌,连Steam都连夜扛着ARM架构投诚了。看到《赛博朋克2077》...

怎么把视频的声音提出来转为音频?音频提取,11款工具实测搞定

想把视频里的声音单独保存为音频文件(MP3/AAC/WAV/FLAC)用于配音、播客、听课或二次剪辑?本文挑出10款常用工具,给出实测可复现的操作步骤、优缺点和场景推荐。1)转换猫mp3转换器(操作门...

6个mp4格式转换器测评:转换速度与质量并存!

MP4视频格式具有兼容性强、视频画质高清、文件体积较小、支持多种编码等特点,适用于网络媒体传播。如果大家想要将非MP4格式的视频转换成MP4的视频格式的话,可以使用MP4格式转换器更换格式。本文分别从...