Выпуск Rust 1.83. Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ инструмСнтария Xen ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ процСссора Π½Π° Rust

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· языка программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния Rust 1.83, основанного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Mozilla, Π½ΠΎ Π½Ρ‹Π½Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ нСзависимой нСкоммСрчСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Rust Foundation. Π―Π·Ρ‹ΠΊ сфокусирован Π½Π° бСзопасной Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ прСдоставляСт срСдства для достиТСния высокого ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° выполнСния Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΏΡ€ΠΈ этом ΠΎΠ±Ρ…ΠΎΠ΄ΡΡΡŒ Π±Π΅Π· использования сборщика мусора ΠΈ runtime (runtime сводится ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Rust ΠΈΠ·Π±Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ ошибок ΠΏΡ€ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ указатСлями ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ области памяти послС Π΅Ρ‘ освобоТдСния, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ Ρ‚.ΠΏ. Для распространСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, обСспСчСния сборки ΠΈ управлСния зависимостями ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ развиваСтся ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Cargo. Для размСщСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ поддСрТиваСтся Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ crates.io.

БСзопасная Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ обСспСчиваСтся Π² Rust Π²ΠΎ врСмя компиляции Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ссылок, отслСТиваниС владСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΡƒΡ‡Ρ‘Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (области видимости) ΠΈ ΠΎΡ†Π΅Π½ΠΊΡƒ коррСктности доступа ΠΊ памяти Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π°. Rust Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт срСдства для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ использованиСм, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ошибки Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, примСняСт ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ нСизмСняСмости (immutable) ссылок ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠΈΠ»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ логичСских ошибок.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ возмоТности для ΠΊΠΎΠ΄Π° Π² контСкстС «const», вычисляСмого Π½Π° этапС компиляции ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ для использования вмСсто констант. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ «const» ссылок Π½Π° значСния, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ «static», ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ссылка выставляСтся Π½Π° Π½Π΅ измСняСмыС статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Π±Π΅Π· ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° «mut»). ΠŸΡ€ΠΈ этом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ использованиС Π² качСствС констант raw-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° измСняСмый элСмСнт. НапримСр: static S1: i32 = 25; static mut S2: i32 = 64; const C1: &i32 = &S1; // Ok const C2: i32 = unsafe { S2 }; // ошибка const C3: &i32 = unsafe { &S2 }; // ошибка const C4: *mut i32 = &raw mut S2; // Ok
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС Π² контСкстС констант измСняСмых ссылок ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ (c ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ «mut»), Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ измСняСмыС ссылки ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° для вычислСния константы, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ константы. НапримСр: const fn inc(x: &mut i32) { *x += 1; } const C1: i32 = { let mut c = 41; inc(&mut c); c }; const C2: &mut i32 = &mut 4; // ошибка, использованиС Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ &Cell ΠΈ *const Cell Π² контСкстС констант.
  • ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ «const» ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ Π² функциях:
    • Cell::into_inner
    • Duration::as_secs_f32
    • Duration::as_secs_f64
    • Duration::div_duration_f32
    • Duration::div_duration_f64
    • MaybeUninit::as_mut_ptr
    • NonNull::as_mut
    • NonNull::copy_from
    • NonNull::copy_from_nonoverlapping
    • NonNull::copy_to
    • NonNull::copy_to_nonoverlapping
    • NonNull::slice_from_raw_parts
    • NonNull::write
    • NonNull::write_bytes
    • NonNull::write_unaligned
    • OnceCell::into_inner
    • Option::as_mut
    • Option::expect
    • Option::replace
    • Option::take
    • Option::unwrap
    • Option::unwrap_unchecked
    • Option::<&_>::copied
    • Option::<&mut _>::copied
    • Option::<Option<_>>::flatten
    • Option::<Result<_, _>>::transpose
    • RefCell::into_inner
    • Result::as_mut
    • Result::<&_, _>::copied
    • Result::<&mut _, _>::copied
    • Result::<Option<_>, _>::transpose
    • UnsafeCell::get_mut
    • UnsafeCell::into_inner
    • array::from_mut
    • char::encode_utf8
    • {float}::classify
    • {float}::is_finite
    • {float}::is_infinite
    • {float}::is_nan
    • {float}::is_normal
    • {float}::is_sign_negative
    • {float}::is_sign_positive
    • {float}::is_subnormal
    • {float}::from_bits
    • {float}::from_be_bytes
    • {float}::from_le_bytes
    • {float}::from_ne_bytes
    • {float}::to_bits
    • {float}::to_be_bytes
    • {float}::to_le_bytes
    • {float}::to_ne_bytes
    • mem::replace
    • ptr::replace
    • ptr::slice_from_raw_parts_mut
    • ptr::write
    • ptr::write_unaligned
    • <*const _>::copy_to
    • <*const _>::copy_to_nonoverlapping
    • <*mut _>::copy_from
    • <*mut _>::copy_from_nonoverlapping
    • <*mut _>::copy_to
    • <*mut _>::copy_to_nonoverlapping
    • <*mut _>::write
    • <*mut _>::write_bytes
    • <*mut _>::write_unaligned
    • slice::from_mut
    • slice::from_raw_parts_mut
    • <[_]>::first_mut
    • <[_]>::last_mut
    • <[_]>::first_chunk_mut
    • <[_]>::last_chunk_mut
    • <[_]>::split_at_mut
    • <[_]>::split_at_mut_checked
    • <[_]>::split_at_mut_unchecked
    • <[_]>::split_first_mut
    • <[_]>::split_last_mut
    • <[_]>::split_first_chunk_mut
    • <[_]>::split_last_chunk_mut
    • str::as_bytes_mut
    • str::as_mut_ptr
    • str::from_utf8_unchecked_mut
  • Π’ разряд ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° новая порция API, Π² Ρ‚ΠΎΠΌ числС стабилизированы ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ:
    • BufRead::skip_until
    • ControlFlow::break_value
    • ControlFlow::continue_value
    • ControlFlow::map_break
    • ControlFlow::map_continue
    • DebugList::finish_non_exhaustive
    • DebugMap::finish_non_exhaustive
    • DebugSet::finish_non_exhaustive
    • DebugTuple::finish_non_exhaustive
    • ErrorKind::ArgumentListTooLong
    • ErrorKind::Deadlock
    • ErrorKind::DirectoryNotEmpty
    • ErrorKind::ExecutableFileBusy
    • ErrorKind::FileTooLarge
    • ErrorKind::HostUnreachable
    • ErrorKind::IsADirectory
    • ErrorKind::NetworkDown
    • ErrorKind::NetworkUnreachable
    • ErrorKind::NotADirectory
    • ErrorKind::NotSeekable
    • ErrorKind::ReadOnlyFilesystem
    • ErrorKind::ResourceBusy
    • ErrorKind::StaleNetworkFileHandle
    • ErrorKind::StorageFull
    • ErrorKind::TooManyLinks
    • Option::get_or_insert_default
    • Waker::data
    • Waker::new
    • Waker::vtable
    • char::MIN
    • hash_map::Entry::insert_entry
    • hash_map::VacantEntry::insert_entry
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ aarch64_unknown_nto_qnx700, arm64e-apple-tvos, armv7-rtems-eabihf, loongarch64-unknown-linux-ohos, riscv32-wrs-vxworks and riscv64-wrs-vxworks, riscv32{e|em|emc}-unknown-none-elf, x86_64-unknown-hurd-gnu ΠΈ x86_64-unknown-trusty. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.
  • ВрСбования ΠΊ минимальной внСшнСй вСрсии LLVM подняты Π΄ΠΎ Π²Π΅Ρ‚ΠΊΠΈ 18. ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° компилятора Visual Studio 2013.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° языкС Rust:

  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ XCP-ng, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Xen, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ созданию Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ инструмСнтария для Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Xen, написанного Π½Π° языкС Rust ΠΈ ΠΈΠ΄ΡƒΡ‰Π΅Π³ΠΎ Π½Π° смСну libxl. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ XCP-ng для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ управлСния хост-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ гостСвыми систСмами. Π’ настоящСС врСмя Ρ€Π°Π±ΠΎΡ‚Π° сосрСдоточСна Π½Π° создании crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° языкС Rust, способных Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° xen-libs. НапримСр, вСдётся Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ созданиСм Rust-Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ xenctrl ΠΈ xeneventchan с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ интСрфСйса для Π³ΠΈΠΏΠ΅Ρ€Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Xen ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий.
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ IronCalc Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠΎΠΊ для создания Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссоров, написанный Π½Π° языкС Rust, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ инструмСнтарий для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСктронными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Π”Π²ΠΈΠΆΠΎΠΊ рассчитан Π½Π° встраиваниС Π² прилоТСния Π½Π° языках программирования Rust, Python ΠΈ JavaScript (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ появится ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° R, Julia ΠΈ Go). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ встраиваниС ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса для создания ΠΈ рСдактирования элСктронных Ρ‚Π°Π±Π»ΠΈΡ† (ΡΡ‚ΠΈΠ»ΡŒ ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ настраиваСтся ΠΏΠΎ ТСланию Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²), Ρ‚Π°ΠΊ ΠΈ срСдств Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСктронными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для манипуляции элСктронными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅, консоли ΠΈ Π² web-прилоТСниях. ЗаявлСно стрСмлСниС ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎΠ»Π½ΠΎΠΉ совмСстимости с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Microsoft Excel. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ лицСнзиями MIT ΠΈ Apache 2.0. Доступна online-дСмонстрация, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

    На Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ этапС развития IronCalc ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠΊΠΎΠ»ΠΎ 200 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ стилСм ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ячССк, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈ экспорт Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ xlsx, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° Rust ΠΈ Python. Π’ вСрсии IronCalc 1.0 планируСтся Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ 90% совмСстимости с Excel.

    Выпуск Rust 1.83. Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ инструмСнтария Xen ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ процСссора Π½Π° Rust

  • ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° uutils coreutils 0.0.28, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅Ρ‚Π° GNU Coreutils, пСрСписанный Π½Π° языкС Rust. Π’ состав coreutils Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅ ста ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln ΠΈ ls. ЦСлью ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся созданиС кроссплатформСнной Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Coreutils, способной Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ числС Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Windows, Redox ΠΈ Fuchsia. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ GNU Coreutils рСализация Π½Π° Rust распространяСтся ΠΏΠΎΠ΄ пСрмиссивной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT, вмСсто ΠΊΠΎΠΏΠΈΠ»Π΅Ρ„Ρ‚-Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GPL.

    Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии uutils ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с эталонным тСстовым Π½Π°Π±ΠΎΡ€ΠΎΠΌ GNU Coreutils, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ 476 тСстов (Π½Π° 21 большС, Ρ‡Π΅ΠΌ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ вСрсии), 94 тСстов ΠΏΠΎΠΊΠ° Π½Π΅ удаётся ΠΏΡ€ΠΎΠΉΡ‚ΠΈ. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ cksum, mkdir ΠΈ tr. Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ для ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ basenc, cat, cksum, cp, date, dd, dircolors, echo, hashsum, hostname, join, ls, ln, mkdir, mv, od, paste, printf, runcon, sort, sync, test, uptime, users, tr, tsort, uucore.

    Выпуск Rust 1.83. Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ инструмСнтария Xen ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ процСссора Π½Π° Rust

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru