Rust 1.94 нұсқасы. FreeBSD ядросында Rust-пен тәжірибе жасау. Turso дерекқоры және Rust-тағы VCAD

Mozilla жобасы негізін қалаған, бірақ қазір тәуелсіз Rust Foundation бейкоммерциялық ұйымының қолдауымен әзірленген Rust 1.94 бағдарламалау тілі шығарылды. Тіл жад қауіпсіздігіне назар аударады және қоқыс жинағышты және орындалу уақытын қолданбай орындай отырып, тапсырмаларды орындаудың жоғары параллельділігіне қол жеткізу үшін құралдарды ұсынады (орындау уақыты стандартты кітапхананың негізгі инициализациясы мен қызмет көрсетуіне дейін қысқарады).

Rust компаниясының жадты басқару әдістері көрсеткішті манипуляциялаудағы қателерді жоюға және жадты босатқаннан кейін оған қол жеткізу, нөлдік көрсеткіштерді алып тастау, буфердің артық жүктелуі және т.б. сияқты төменгі деңгейлі жадты басқарудан туындайтын мәселелерден қорғауға арналған. Жоба кітапханаларды тарату, құрастыруды жеңілдету және тәуелділіктерді басқару үшін Cargo пакет менеджерін әзірлеуде. crates.io репозиторийі кітапханаларды орналастыру үшін сақталады.

Жадтың қауіпсіздігі Rust бағдарламасында компиляция уақытында анықтамалық тексеру, объект иеленуін қадағалау, объектінің қызмет ету мерзімін (аумақтарын) қадағалау және кодты орындау кезінде жадқа қол жеткізудің дұрыстығын бағалау арқылы қамтамасыз етіледі. Rust сонымен қатар бүтін сандардың толып кетуінен қорғауды қамтамасыз етеді, пайдалану алдында айнымалы мәндерді міндетті түрде инициализациялауды талап етеді, стандартты кітапханада қателерді жақсы өңдейді, әдепкі бойынша өзгермейтін сілтемелер мен айнымалылар тұжырымдамасын қолданады, логикалық қателерді азайту үшін күшті статикалық теруді ұсынады.

Негізгі инновациялар:

  • Енді тілім түрінің array_windows әдісі бар. Бұл әдіс бекітілген өлшемді терезелерде бір элементті алға жылжытатын тілімдерді кесіп өтуге арналған итератор жасайды. Бұрын қолжетімді болған windows әдісінен айырмашылығы, array_windows тұрақты терезе өлшемінде жұмыс істейді және әрбір итерация үшін анықталмаған өлшемдегі (&[T]) тілімнің орнына бекітілген өлшемді массивке (&[T; N]) сілтеме қайтарады. Массив өлшемі бастапқыда компиляторға белгілі болғандықтан, өнімділікті әрбір итерация кезеңінде шекараларды тексеруден аулақ болу арқылы жақсартуға болады. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
  • Cargo пакет менеджерінің конфигурация файлдары (.cargo/config.toml) басқа файлдардың мазмұнын орнына енгізуге мүмкіндік беретін "include" директивасын іске асырады. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • TOML 1.1 белгілеу тілінің жаңа нұсқасын қолдау манифест пен конфигурация файлдарына қосылды. Бұл жаңа нұсқада көп жолды ендірілген кестелерді, он алтылық байт көріністерін енгізуге арналған "\xHH" қашу тізбегін және "\u001B" үшін "\e" қашу тізбегін қолдау, сондай-ақ соңғы элементтің соңында үтір қалдыру және уақыт мәндерінде секундтарды өткізіп жіберу мүмкіндігі қосылды. serde = { version = "1.0", features = ["derive"] } енді serde = { version = "1.0", features = ["derive"], } дегенмен ауыстырылуы мүмкін.
  • API жаңа бөлігі тұрақты санатқа ауыстырылды, оның ішінде белгілердің әдістері мен іске асырылуы тұрақтандырылды:
    • <[T]>::array_windows
    • <[T]>::element_offset
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • TryFrom-ды іске қосу пайдалану үшін
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • x86 avx512fp16 нұсқауларына арналған ішкі нұсқаулар
    • AArch64 NEON fp16 нұсқауларына арналған ішкі нұсқаулар
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::АЛТЫН_ҚАТЫНАС
    • f64::consts::АЛТЫН_ҚАТЫНАС
  • «const» белгісі функцияларда қолданылады:
    • f32::mul_add
    • f64::mul_add
  • riscv64im-unknown-none-elf платформасы 3-деңгейге ауыстырылды. 3-деңгейге негізгі қолдау кіреді, бірақ автоматтандырылған тестілеуді, ресми құрастыру нұсқаларын немесе құрастыруды тексеруді қамтымайды.

Сонымен қатар, біз жақында жарияланған Rust-қа қатысты жобалар мен іс-шараларды атап өткіміз келеді:

  • Rust компиляторында Sony PlayStation 1 платформасын қолдауды жүзеге асырған және FreeBSD-ді Apple Silicon чиптері бар компьютерлерге порттаған Айртон Муньос FreeBSD үшін Rust-та ядро ​​компоненттері мен құрылғы драйверлерін жазу мүмкіндігін енгізді. FreeBSD ядросында Rust кодын пайдалануға мүмкіндік беретін KPI (ядро бағдарламалау интерфейсі) байланыстарының жиынтығы, сондай-ақ virtio дыбыс драйвері (virtio_snd), M2 MacBook пернетақтасына арналған DockChannel HID драйвері және Apple Silicon чиптеріндегі Mac компьютерінің ішкі жүйелеріне арналған бірнеше төмен деңгейлі драйверлер сынақтан өткізу үшін ұсынылды, олардың барлығы осы байланыстарды пайдаланып жасалған.

    Rust байланыстырулары бойынша жұмыс 2024 жылдың соңынан бері жалғасып келеді. Қазіргі уақытта байланыстырулар C-KPI-дің тек бір бөлігін ғана жүзеге асырады және тұрақсыз болып саналады, бірақ уақыт өте келе олар C тілі үшін ұқсас интерфейстің тұрақтылығына сәйкес келетіндей етіп тұрақтылығын жақсартуды жоспарлап отыр. Мысал ретінде ұсынылған virtio_snd драйвері QEMU-да музыка ойнатуға жарамды. 2026 жылға қарай Rust байланыстырулары қызығушылық танытқан әзірлеушілер оларды код жазу үшін пайдалана бастауы үшін жеткілікті тұрақты болады деп күтілуде.

  • NetBSD әзірлеушісі Бенни Сигерт Rust қолдауының NetBSD ядросында пайда болмайтынының себебін түсіндірді: NetBSD Rust қолжетімді емес архитектураларды қолдайды; pkgsrc ішіндегі бар Rust құралдар тізбегін сақтау айтарлықтай күш-жігерді қажет етеді және оны тек бірнеше әзірлеуші ​​ғана қолдайды; Rust үшін ядроны қолдау Rust компиляторының базалық жүйеге қосылуын талап етеді; Rust-ты NetBSD-де жүктеу ескірген екілік пакетті пайдаланады, бұл бастапқы код ретінде таратылатын өзіндік дистрибутивтер үшін қолайсыз; Rust-тың шығарылым циклдары NetBSD-тің ескірген тармақтары үшін әзірлеу және қолдау циклдарымен үйлеспейді (мысалы, 2020 жылы шығарылған NetBSD 9 қолдауды жалғастыруда, бұл алты жылдық Rust компиляторын жеткізуді және қолдауды қажет етеді).
  • Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
  • GPU жағындағы бағдарламаларда Rust стандартты кітапханасын пайдалануға мүмкіндік беретін жоба.
  • Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
  • RustConn (flatpak) - SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust және SFTP қолдайтын басқа хосттарға сыртқы желілік қосылымдарды басқаруға арналған графикалық интерфейс. Код Rust тілінде GTK4 және Wayland арқылы жазылған.
  • zlib-rs 0.6 жобасының жаңа тармағы шығарылды, ол zlib C API-мен толық үйлесімді және zlib-ті мөлдір ауыстыруға жарамды алғашқы тұрақты нұсқасы ретінде белгіленді. Жоба zlib деректерді сығу кітапханасына қауіпсіз балама жасауға бағытталған. Әзірлеу zlib-ng жобасына назар аудара отырып жүргізілуде, ол zlib-тің жоғары өнімді нұсқасын әзірлейді.
  • VCAD жобасы Rust тілінде жазылған және MCP хаттамасын пайдаланып жасанды интеллект агенттерімен біріктірілген параметрлік компьютерлік жобалау (CAD) жүйесін әзірлеу болып табылады. Ол 3D модельдеуді, модельдеуді, 2D эскиздерін жасауды, компоненттерді құрастыруды, STEP импорттауды және STL/GLB/STEP/DXF экспорттауды қолдайды.
  • Rust тілінде жазылған және Mistral Voxtral Mini 4B Realtime AI моделін және Burn машиналық оқыту жүйесін пайдаланатын сөйлеуді тану жүйесі жарияланды. Жоба тікелей эфирде транскрипциялау үшін сөйлеуді тікелей тануға бағытталған.
  • c2rust 0.22 құралдар жинағы шығарылды. Ол C кодын (C99) қауіпсіз емес Rust көрінісіне аударуға арналған, құрылымы бойынша түпнұсқа C кодына ұқсас. Нәтижесінде пайда болған жұмыс құрылымын идиоматикалық Rust тіліне біртіндеп көшу және қауіпсіз емес блоктарды жою үшін пайдалануға болады.

Ақпарат көзі: opennet.ru

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster