Rubigo 1.52 Programming Language Release

Emissio systematis programmandi linguae Rust 1.52, a Mozilla projecto fundata, nunc sub auspiciis organizationis Rust Fundationis independentis non lucri, divulgatum est. Lingua ad salutem memoriae intendit, administrationem automaticam memoriam praebet et instrumenta praebet ut parallelismum perficiat sine purgamento collectoris vel runtime adhibito (runtime ad initializationem et sustentationem bibliothecae vexillum fundamentalis redactus est).

Rubigo latae memoriae administratio errores excludit cum abusionibus indicibusque et quaestionibus ab humili gradu memoriae manipulationis ortis protegit, ut accessu memoriae regionis, postquam liberata est, nullum indicium dereferences, quiddam eliminatum, etc. Bibliothecas distribuere, conventum curare ac clientelas regere, consilium sarcina oneraria administrare. Crates.io repositorium ad bibliothecas hospites sustentatur.

Innovationes principales:

  • Π£Π±Ρ€Π°Π½Π° привязка ΠΊ порядку выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Β«cargo checkΒ» ΠΈ Β«cargo clippyΒ». РаньшС Π²Ρ‹Π·ΠΎΠ² Β«cargo clippyΒ» послС Β«cargo checkΒ» Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ запуску ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ clippy (linter) ΠΈΠ·-Π·Π° отсутствия раздСлСния кэшСй для Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° ΠΈ порядок Π²Ρ‹Π·ΠΎΠ²Π° Β«cargo clippyΒ» ΠΈ Β«cargo checkΒ» пСрСстал ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • Nova portio API categoriae stabilium translata est, additis modis sequentibus confirmatae:
    • Arguments::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char :: from_digit
    • char::from_u32_unchecked
    • char :: from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Attributum "const", quod facultatem utendi in quovis contextu loco constantium determinat, in modis adhibetur:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° lint-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° unsafe_op_in_unsafe_fn для опрСдСлСния обрамлСния unsafe-Π±Π»ΠΎΠΊΠ°ΠΌΠΈ unsafe-ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² unsafe-функциях.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ mutable-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° массивы Π² Ρ„ΠΎΡ€ΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΈΠΏ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ элСмСнта массива. let mut x: [usize; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
  • Π’ clippy (linter) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 9 Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ.
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ cargo для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° поля Β«manifest_pathΒ» Π² JSON. Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ crates.io Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° указания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ лицСнзиях Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SPDX 3.11.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ тСстов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ запуск Β«cargo test β€” foo barΒ» запустит всС тСсты, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ маскам Β«fooΒ» ΠΈ Β«barΒ».
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ инструмСнтарий LLVM ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ вСрсии LLVM 12.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ΠΈ powerpc-unknown-openbsd. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.

Source: opennet.ru