Rust 1.48의 새로운 기능

Rust 프로그래밍 언어의 독특한 접근 방식은 C, C ++, Go 및 아마도 사용하는 다른 언어보다 더 적은 손상으로 더 나은 코드를 만듭니다. 또한 매월 정기적으로 업데이트됩니다.

최신 Rust 버전을 다운로드 할 수있는 곳

이미를 통해 이전 버전의 Rust가 설치되어 있다면 rustup다음 명령을 통해 최신 버전에 액세스 할 수 있습니다.

$ rustup 업데이트 안정

관련 비디오 : Rust로 더 안전한 소프트웨어 개발

시스템 수준의 빠른 소프트웨어를 생성하도록 설계된 새로운 Rust를 빠르게 익히십시오. 이 2 분짜리 애니메이션 설명은 Rust가 메모리 및 관리의 성가신 프로그래밍 문제를 어떻게 우회하는지 보여줍니다.

Rust 1.48.0의 새로운 기능

2020 년 11 월 19 일에 공개 된 Rust 1.48.0은 Rustdoc 라이브러리 문서 도구에서 더 쉽게 링크 할 수있는 기능을 제공합니다. URL이 생성됩니다. 버전 1.48.0에서도 :

  • 개발자는 #{doc(alias = “”) ]Rustdoc UI를 통해 검색 할 때 검색 별칭을 추가 할 항목을 지정할 수 있습니다 .
  • 이제 unsafe키워드는 모듈에서 구문 상 허용됩니다. 여전히 의미 상 거부되지만 이제는 절차 적 매크로로 구문 분석 할 수 있습니다.
  • 컴파일러에서 -C link-self-contained=컴파일러 플래그가 안정화됩니다. 이는 rustc자체 C 런타임과 라이브러리를 링크할지 아니면 외부 링커를 사용하여 찾을 지 여부를 알려줍니다 . 이것은 단지에 대한 지원 windows-gnu, linux-musl그리고 wasi플랫폼.
  • 라이브러리에서 API는 이제 안정적입니다. 개발자는이를 사용하여 벡터를 주어진 길이의 배열로 변환 할 수 있습니다. 또한 다섯 가지 다른 API는이 릴리스에 있었다 안정화 : , , , ,와 .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • 또한 라이브러리에서 모든 길이의 배열은 이제 .TryFrom

Rust 1.47.0의 새로운 기능

2020 년 10 월 8 일에 발표 된 Rust 1.47.0에는 새로운 언어 기능이 없지만 표준 라이브러리가 향상되었습니다. 릴리스에는 삶의 질과 도구 모음 개선, 라이브러리 안정화 기능이 포함되어 있습니다. 업그레이드에 대한 릴리스 정보가 게시되었습니다.

Rust 1.47.0의 특정 기능은 다음과 같습니다.

  • 더 큰 어레이의 특성에 영향을주는 "const generics"기능. 기능은 여전히 ​​안정화되어야합니다. Rust는 정수 값에 대한 포괄적 인 방법이 없었기 때문에 배열에 문제가 발생했습니다. 이 기능은이 문제를 해결하고 어레이를보다 유용하게 만들기위한 것입니다.
  • LLVM 11 컴파일러 인프라로 업그레이드하여 기본값으로 설정합니다.
  • 역 추적이 짧아 문제를 쉽게 찾을 수 있습니다.
  • rustc이제 -C control-flow-guardWindows에서 Control Flow Guard 보안 기능을 켜는 옵션 인을 지원합니다 . 다른 플랫폼은이 플래그를 무시합니다.
  • Rustdoc은 이제 Ayu 테마를 지원합니다.
  • 표준 라이브러리의 9 개의 API가 안정화되었습니다 : Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU, 및 f64 :: TAU. 

1.46.0의 새로운 기능

2020 년 8 월 27 일에 발표 된 Rust 1.46에는 다음 기능이 포함되어 있습니다.

  • 몇 가지 핵심 언어 기능은 이제 사용할 수 있습니다 const fn포함, if, if letmatch, 그리고 몇몇 다른 사람.
  • #[track_caller]때 오류 메시지를 향상시키기 위해 설계된 특성, unwrap관련 함수와 공황, 지금은 안정적입니다.
  • 라이브러리 변경에서은 std::mem::forget이제 const fn. 또한 라이브러리에서 두 개의 새로운 API, Option::zipvec::Drain::as_slice.
  • 컴파일러의 경우 citylib대상은 Apple iOS 및 tvOS 플랫폼에서 사용할 수 있습니다.
  • 튜플에 재귀 적으로 인덱싱하는 데 더 이상 괄호가 필요하지 않습니다.

Rust 1.45.0의 새로운 기능

2020 년 7 월 16 일에 발표 된 Rust 1.45에는 다음과 같은 추가 및 개선 사항이 포함됩니다.

  • 정수와 부동 소수점 사이를 캐스트 할 때 오랫동안 지속되어 온 불건전 함을 수정하기위한 수정 사항이 제공됩니다.
  • 표현식, 패턴 및 명령문에서 함수와 유사한 절차 적 매크로에 대해 안정화가 제공됩니다. 매크로 사용의 확장은 Rust 용 Rocket 웹 프레임 워크 사용을 지원합니다.
  • 여러 라이브러리 API는 같은 안정되고 Arc::as_ptr, BTreeMap::remove_entry하고 Span::resolved_at. 전체 API 목록은 Rust 블로그에서 찾을 수 있습니다.

Rust 1.43.1의 새로운 기능

이 포인트 릴리스는 1.43.0 안정 릴리스에 도입 된 두 가지 회귀를 해결하기 위해 2020 년 5 월 7 일에 도입되었습니다. 또한 Cargo 패키지 관리자가 사용하는 OpenSSL 버전을 업데이트합니다. 기능은 다음과 같습니다.

  • Rust 1.27은 is_x86_feature_detected 매크로 를 통해 표준 라이브러리에서 x86 CPU 기능을 감지하기위한 지원을 도입했습니다 . 내부 리팩토링으로 인해 Rust 1.43.0은 이전에 탐지가 허용 되었음에도 불구하고 아직 stable에서 사용할 수없는 기능의 탐지를 막았습니다. 버전 1.43.1은이 회귀를 수정합니다.
  • 깨진 cargo package –list 명령에 대한 수정이 제공됩니다 . Rust 1.43은 경로 종속성이 있거나 게시되지 않은 버전이있는 작업 공간 내에서 실행될 때 Cargo로 게시 된 패키지에 포함 된 파일 목록에 대한 지원을 중단했습니다.
  • Cargo 종속성 인 OpenSSL이 1.1.1g로 업데이트되었습니다. OpenSSL은 보안 권고를 발표했지만 Rust 팀은 Rust 1.43.0에 대한 수정 사항을 적시에 포함 할 수 없었습니다. 이 팀은 취약점이 Cargo 사용자의 보안을 손상시킬 수 있다는 증거가 없습니다.

Rust 1.43.0의 새로운 기능

2020 년 4 월 23 일에 발표 된 Rust 1.43.0은 주요 기능이 도입되지 않은 상당히 작은 릴리스로 간주되었습니다. 변경 사항은 다음과 같습니다.

  • 개발자가 사용할 수있는 item본문에 보간 항목 단편 trait, implextern블록.
  • 프리미티브, 참조 및 이진 연산에 대한 유형 추론이 개선되었습니다.
  • 통합 테스트를 돕기 위해 Cargo는 실행 파일을 찾기위한 테스트에 대한 몇 가지 새로운 환경 변수를 설정합니다.
  • Rust 라이브러리에서 개발자는 모듈을 가져 오지 않고도 부동 소수점과 정수에 관련된 상수를 직접 사용할 수 있습니다. 또한, primitiveRust 기본 유형을 다시 내보내는 새로운 모듈이 있습니다. 이는 매크로를 작성할 때 유용하며 개발자는 유형이 섀도 잉되지 않도록하려는 경우에 유용합니다.
  • Several APIs in the library were stabilized: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, and iter::once_with.

The new features in Rust 1.41

The new features in Rust 1.38

Rust 1.38, released in September 2019, contains the following new features and improvements:

  • The Cargo package manager will take advantage of pipelined compilation automatically with Rust 1.38. With pipelined compilation, the compiler does not need dependencies fully built when compiling a crate. All that is needed is their metadata, such as the list of types of dependencies. Metadata is produced early in the compilation process. Some tests have shown compilation speed increases of 10 to 20 percent for optimized, clean builds of some crate graphs. 
  • Linting of some incorrect uses of mem::{unitialized, zeroed}. With this release, the rustc compiler will provide a lint for a narrow class of incorrect initializations using mem::uninitialized or mem::zeroed.
  • Extension of the #[deprecated] attribute to macros. This attribute has allowed crate authors to notify users that an item of their crate is to be deprecated and removed in a future release.
  • Developers can use std::any::type_name to get the name of a type.
  • Stabilization of a number of functions including ::cast and ::cast.

The new features in Rust 1.37

Rust 1.37, released in August 2019, has the following new features and improvements:

  • An ability to refer to enum variants through type. Developers also can refer to enum variants with Self::Variant.
  • The cargo vendor command, previously a separate crate, is now built in to the language. The command fetches project dependencies, unpacks them into the vendordirectory, and displays the configuration snippet needed to use the vendored code during builds.
  • The rustc compiler supports profile-guided optimization, an optimizing technique for ahead-of-time compilers, via -C profile-generate and -C profile-use.
  • Developers can create unnamed const items.

The new features in Rust 1.36

Version 1.36 of the Rust systems programming language was released in July 2019. Rust 1.36 includes the following new features and enhancements:

  • The Future trait, used for declaring asynchronous work, is now stable. Asynchronous operations in Rust have been coming together in bits and pieces for several versions now, with async and await being the last important remaining pieces.
  • The alloc crate, used for managing memory, is now stable. This crate collects all of the pieces of Rust’s standard library that depend on a global memory allocation mechanism, such as Vec. This way, crates that don’t use the standard library can still make use of the allocator by importing alloc separately—useful for environments where you want code sizes to be as lean as possible.
  • A new type, MaybeUninit, allows you to define objects that may consist of uninitialized memory, such as a lazily allocated array. Rust’s previous mechanism for doing this was a function, mem::uninitialized, that posed many hazards in casual use. MaybeUninit provides a safer way to do this that uses the constraints of Rust’s type system.
  • Non-lexical lifetimes, a feature for recent editions of Rust, has been backported to earlier editions. Non-lexical lifetimes make Rust’s borrow-checking mechanism less difficult to work with (in essence, letting you write a broader range of programs that are still valid Rust), and better able to catch problems that the borrow checker missed.

Other improvements:

  • A new implementation for the HashMap type that runs faster and uses less memory.
  • Cargo can now run entirely offline if needed.

Rust 1.35의 새로운 기능

2019 년 5 월에 출시 된 버전 1.35는 다음을 제공합니다.