Rust
詳細情報
タイトル | Rust |
---|---|
URL | https://www.rust-lang.org/ |
バージョン | ver 1.83.0 |
更新日 | 2024/11/29 |
追加日 | 2016/01/29 |
種別 | フリーソフト |
説明 | Mozillaによって開発されているシステムプログラミング言語。 |
レビュー
Rustは効率性や安全性、生産性を重視して開発が進められているプログラミング言語。
パフォーマンスを維持しつつメモリ安全性を確保し、CやC++言語を置き換える事ができるシステムプログラミング言語を目指して開発が進められている。
2006年にMozillaの従業員であるGraydon Hoare氏の個人のプロジェクトとして開発が始まり、2009年以降はMozillaが支援する公式プロジェクトとなった。2015年に1.0がリリースされ基本的な仕様が固まっている。
スクリーンショット
スクリーンショットはありません。
更新グラフ
バージョン履歴
Rust 1.83.0
Language
- Stabilize
&mut
,*mut
,&Cell
, and*const Cell
in const. - Allow creating references to statics in
const
initializers. - Implement raw lifetimes and labels (
'r#ident
). - Define behavior when atomic and non-atomic reads race.
- Non-exhaustive structs may now be empty.
- Disallow implicit coercions from places of type
!
const extern
functions can now be defined for other calling conventions.- Stabilize
expr_2021
macro fragment specifier in all editions. - The
non_local_definitions
lint now fires on less code and warns b
Rust 1.82.0
Language
- Don't make statement nonterminals match pattern nonterminals
- Patterns matching empty types can now be omitted in common cases
- Enforce supertrait outlives obligations when using trait impls
addr_of(_mut)!
macros and the newly stabilized&raw (const|mut)
are now safe to use with all static items- size_of_val_raw: for length 0 this is safe to call
- Reorder trait bound modifiers after
for<...>
binder in trait bounds - Stabilize opaque type precise capturing (RFC 3617)
- Stabilize
&raw const
and&raw mut
operators (RFC 2582) - Stabilize unsafe extern blocks (RF
Rust 1.81.0
Language
- Abort on uncaught panics in
extern "C"
functions. - Fix ambiguous cases of multiple
&
in elided self lifetimes. -
Stabilize
#[expect]
for lints (RFC 2383), like#[allow]
with a warning if the lint is not fulfilled. - Change method resolution to constrain hidden types instead of rejecting method candidates.
- Bump
elided_lifetimes_in_associated_constant
to deny. offset_from
: always allow pointers to point to the same address.- Allow constraining opaque types during subtyping in the trait system.
- Allow constraining opaque types during various unsizing casts.
Rust 1.80.1
- Fix miscompilation in the jump threading MIR optimization when comparing floats
- Revert changes to the
dead_code
lint from 1.80.0
Rust 1.80.0
Language
- Document maximum allocation size
- Allow zero-byte offsets and ZST read/writes on arbitrary pointers
- Support C23's variadics without a named parameter
- Stabilize
exclusive_range_pattern
feature - Guarantee layout and ABI of
Result
in some scenarios
Compiler
- Update cc crate to v1.0.97 allowing additional spectre mitigations on MSVC targets
- Allow field reordering on types marked
repr(packed(1))
- Add a lint against never type fallback affecting unsafe code
- Disallow cast with trailing braced macro in let-else
- Expand
for_loops_over_fallibles
Rust 1.79.0
Language
- Stabilize inline
const {}
expressions. - Prevent opaque types being instantiated twice with different regions within the same function.
- Stabilize WebAssembly target features that are in phase 4 and 5.
- Add the
redundant_lifetimes
lint to detect lifetimes which are semantically redundant. - Stabilize the
unnameable_types
lint for public types that can't be named. - Enable debuginfo in macros, and stabilize
-C collapse-macro-debuginfo
and#[collapse_debuginfo]
. - Propagate temporary lifetime extension into
if
andmatch
expressions. - Restrict promotion of
const fn
calls.
Rust 1.78.0
Language
- Stabilize
#[cfg(target_abi = ...)]
- Stabilize the
#[diagnostic]
namespace and#[diagnostic::on_unimplemented]
attribute - Make async-fn-in-trait implementable with concrete signatures
- Make matching on NaN a hard error, and remove the rest of
illegal_floating_point_literal_pattern
- static mut: allow mutable reference to arbitrary types, not just slices and arrays
- Extend
invalid_reference_casting
to include references casting to bigger memory layout - Add
non_contiguous_range_endpoints
lint for singleton gaps after exclusive ranges -
Add
wasm_c_abi
lint for use of older wasm-bind
Rust 1.77.2
- CVE-2024-24576: fix escaping of Windows batch file arguments in
std::process::Command
Rust 1.77.1
- Revert stripping debuginfo by default for Windows This fixes a regression in 1.77 by reverting to the previous default. Platforms other than Windows are not affected.
- Internal: Fix heading anchor rendering in doc pages
Rust 1.77.0
Language
- Reveal opaque types within the defining body for exhaustiveness checking.
- Stabilize C-string literals.
- Stabilize THIR unsafeck.
- Add lint
static_mut_refs
to warn on references to mutable statics. - Support async recursive calls (as long as they have indirection).
- Undeprecate lint
unstable_features
and make use of it in the compiler. - Make inductive cycles in coherence ambiguous always.
- Get rid of type-driven traversal in const-eval interning, only as a future compatiblity lint for now.
- Deny braced macro invocations in let-else.
Compiler
- In
Rust 1.76.0
Language
- Document Rust ABI compatibility between various types
- Also: guarantee that char and u32 are ABI-compatible
- Warn against ambiguous wide pointer comparisons
Compiler
- Lint pinned
#[must_use]
pointers (in particular,Box<T>
whereT
is#[must_use]
) inunused_must_use
. - Soundness fix: fix computing the offset of an unsized field in a packed struct
- Soundness fix: fix dynamic size/align computation logic for packed types with dyn Trait tail
- Add
$message_type
field to distinguish json diagnostic outputs - Enable Rust to use the EHCont security fea