Rust 1.40 бағдарламалау тілі шығарылымы

жарияланды жүйелік бағдарламалау тілінің шығарылымы Тот 1.40, Mozilla жобасымен құрылған. Бұл тіл жад қауіпсіздігіне назар аударады, жадты автоматты басқаруды қамтамасыз етеді және қоқыс жинағышты және жұмыс уақыты.

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

басты инновациялар:

  • «Төлсипатының көмегімен құрылымдарды (құрылым) және тізімдерді (нұсқа блогы бар нөмір) белгілеу мүмкіндігі қосылды.#[толық_жоқ]", ол ол мүмкіндік береді Болашақта жарияланған құрылымдар мен тізімдерге жаңа өрістер мен нұсқаларды қосуға мүмкіндік береді. Мысалы, ашық түрде жарияланған өрістері бар құрылымдары бар модульдерді әзірлеушілер болашақта жаңа өрістер қосылуы мүмкін құрылымдарды белгілеу үшін "#[толық емес]" пайдалана алады. Осы уақытқа дейін, мұндай жағдайларда әзірлеуші ​​​​жеке жариялау өрістері мен өрістердің бекітілген тізімімен байланыстыру арасында таңдауға мәжбүр болды. Жаңа атрибут бұл шектеуді жояды және бұрын құрастырылған сыртқы кодты бұзу қаупінсіз жаңа өрістерді болашақта қосуға мүмкіндік береді. Жәшік бумаларында "сәйкестік" бөліміндегі нұсқаларды салыстыру кезінде болашақ ықтимал өрістерді жабу үшін анық "_ => {...}" маскасы қажет; әйтпесе, жаңа өрістерді қосқанда қате жіберіледі.
  • Қосылды Түр контекстінде mac!() процедуралық макросты шақыру мүмкіндігі. Мысалы, енді "Foo type = expand_to_type!(bar);" деп жаза аласыз. егер "түрге_кеңейту" процедуралық макрос болса.
  • «External {… }» блоктарында қосылды процедуралық және атрибуттық макростарды, соның ішінде "bang!()" макростарын пайдалану мүмкіндігі, мысалы:

    макро_ережелер! make_item { ($name:ident) => { fn $name(); } }

    сыртқы {
    жасау_элемент!(альфа);
    жасау_элемент!(бета);
    }

    сыртқы «С» {
    #[менің_жеке_белгілі_макросым]
    fn foo();
    }

  • Макростарда жүзеге асырылды "макро_ережелерді!" элементтері. "макро_ережелер!" функцияға ұқсас макростарда («mac!()») және атрибутқа негізделген макростарда («#[mac]») мүмкін.
  • $m:meta сәйкестік элементінде қосылды ерікті таңбалауыштарды санау мәндерін қолдау ('[TOKEN_STREAM]', '{TOKEN_STREAM}' және '(TOKEN_STREAM)'), мысалы:

    макро_ережелер! қабылдау_мета { ($м:мета) => {}}
    қабылдау_мета!( менің::жолым );
    қабылдау_мета!( менің::жол = "жарық" );
    қабылдау_мета!( менің::жолым ( abc ) );
    қабылдау_мета!( менің::жолым [ abc ] );
    қабылдау_мета!( менің :: жол { abc } );

  • Rust 2015 режимінде NLL (Лексикалық емес өмір) әдісін пайдаланып қарызды тексеруші анықтаған мәселелер үшін қате туралы есеп енді қосылған. Бұрын ескертулер Rust 2018 режимінде іске қосылған кезде қателермен ауыстырылды.
    Өзгеріс Rust 2015 режиміне дейін ұзартылғаннан кейін, әзірлеушілер ақыры жасай алды құтылу ескі қарыз тексерушісінен.

    Естеріңізге сала кетейік, қарызға алынған айнымалылардың қызмет ету мерзімін есепке алудың жаңа механизміне негізделген тексеру жүйесі ескі тексеру коды назардан тыс қалған кейбір мәселелерді анықтауға мүмкіндік берді. Мұндай тексерулер үшін қате шығысы бұрын іске қосылған кодпен үйлесімділікке әсер етуі мүмкін болғандықтан, бастапқыда қателердің орнына ескертулер шығарылды.

  • Тұрақты мәндердің орнына кез келген контексте пайдалану мүмкіндігін анықтайтын "const" жалауы is_power_of_two функциясына қолданылады (таңбасыз бүтін сандар үшін).
  • API жаңа бөлігі тұрақты санатқа жылжытылды, оның ішінде тұрақтандырылған todo!() макросы және slice::repeat, mem::take, BTreeMap::get_key_value және HashMap::get_key_value әдістері.
    Опция ::as_deref, Опция::as_deref_mut, Опция::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes,f64_bytes, {4_3:frombe, {f32,f64}::from_le_bytes және {f32,f64}::from_ne_bytes.
  • Жүк пакетінің менеджерінде
    жүзеге асырылды Компилятордың ескертулері дискіде кэштеледі. «Жүк метадеректері» пәрменінде енді «—сүзгі-платформа" тәуелділік ажыратымдылығы графигінде көрсетілген мақсатты платформаға байланыстырылған бумаларды ғана көрсету үшін. Рұқсат етілген TLS нұсқаларын анықтау үшін http.ssl-version конфигурация параметрі қосылды.
    Бөлімді жариялау мүмкіндігі қосылды »әзірлеушіге тәуелділіктер"" нұсқасы" пернесін көрсетпей.
  • Rustc компиляторы енді thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 және mips64el-unknown-linux-muslabi64 мақсатты платформаларына 3-деңгейдегі қолдауды қамтамасыз етеді. 3-деңгей негізгі қолдауды қамтамасыз етеді, бірақ автоматтандырылған тестілеусіз немесе ресми құрастырусыз.

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

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