Rust 1.54 Programming Language Tso tawm

Kev tso tawm ntawm cov kab lus programming Rust 1.54, tsim los ntawm Mozilla qhov project, tab sis tam sim no tsim los ntawm kev txhawb nqa ntawm lub koom haum ywj pheej tsis muaj txiaj ntsig Rust Foundation, tau tshaj tawm. Cov lus hais txog kev nyab xeeb ntawm kev nco, muab kev tswj hwm kev nco tsis siv neeg, thiab muab txoj hauv kev kom ua tiav cov haujlwm ua haujlwm siab tsis tas siv cov khoom siv khib nyiab lossis lub sijhawm ua haujlwm (runtime raug txo qis rau kev pib pib thiab kev saib xyuas ntawm lub tsev qiv ntawv txheem).

Rust txoj kev tswj hwm tsis siv neeg lub cim xeeb txuag tus tsim tawm los ntawm kev ua yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem uas tshwm sim vim kev tswj hwm kev nco qis, xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm, dereferencing null pointers, tsis overruns, thiab lwm yam. Txhawm rau faib cov tsev qiv ntawv, muab kev tsim kho thiab tswj hwm kev vam khom, qhov project tsim tus thawj tswj hwm pob khoom. Lub crates.io repository yog txaus siab rau hosting cov tsev qiv ntawv.

Main innovations:

  • Ntxiv lub peev xwm los siv cov haujlwm zoo li macros hauv cov cwj pwm (cov txheej txheem macros thiab macros tsim siv "macro_rules!" macro). Cov macro no txawv ntawm cov haujlwm los ntawm lub cim "!" tom qab lub npe (macro!(...)) thiab hloov lub macro cov ntawv nyeem es tsis txhob tsim ib qho haujlwm hu. Hu rau macro hauv cov cwj pwm tuaj yeem muaj txiaj ntsig rau suav nrog cov ntsiab lus los ntawm lwm cov ntaub ntawv hauv kev sau cov lus. Piv txwv li, txhawm rau ntxig cov ntsiab lus ntawm README cov ntaub ntawv thiab cov txiaj ntsig ntawm tsab ntawv ua tiav, koj tuaj yeem hais qhia: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR") "), "/generated.rs" )] mod generated;
  • Lub built-in compiler functions (Intrinsics) rau lub wasm32 platform tau ruaj khov, tso cai rau siv SIMD cov lus qhia hauv WebAssembly. Feem ntau cov haujlwm, xws li v128_bitselect, muaj nyob rau hauv "kev nyab xeeb" hom, tab sis qee qhov haujlwm uas ua haujlwm nrog cov pointers (piv txwv li, v128_load) tseem "tsis zoo".
  • Lub neej ntawd siv cov kev sib txuas ntxiv tau rov qab los, tso cai rau koj rov tsim kho qhov hloov pauv ntawm cov cai, uas tuaj yeem txo lub sijhawm nws siv los tsim ib qhov project thaum rov ua dua tom qab hloov me ntsis. Incremental compilation tau ua tsis taus nyob rau hauv tso tawm 1.52.1 vim yog cov kab mob zais uas tshwm sim tom qab ntxiv ib qho ntxiv rau kev thauj cov ntaub ntawv los ntawm disk cache.
  • Ib feem tshiab ntawm APIs tau raug pauv mus rau qeb ruaj khov, suav nrog cov hauv qab no ruaj khov:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • kob:: 32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Cov kev xaiv tau muab ntxiv rau cov ntoo ntoo: "-prune " kom tshem tawm ib pob ntawm cov duab nyob hauv, "-qhov tob" los tso saib tsuas yog cov ntsiab lus ntawm qib muab zes nyob rau hauv tsob ntoo dependency, "-edges no-proc- macro" txhawm rau nkaum qhov kev vam meej ntawm cov txheej txheem macros .

Tau qhov twg los: opennet.ru

Ntxiv ib saib