Consilium programmandi generalis-propositum linguae Rust 1.81, fundatum a Mozilla inceptum, nunc sub auspiciis instituendi Rust Foundation independens non lucrum, dimissum est. Lingua ad salutem memoriae intendit et medium praebet ut ad summum officium parallelismum perveniatur, vitato purgamentorum collectoris et runtime usui (runtime ad initializationem fundamentalem et sustentationem bibliothecae vexillum redacta est).
Rubiginis methodos memoria tractandi praeter elit ab erroribus, cum argumentis abusionibus defendunt et contra difficultates oriuntur, ob memoriam humili gradu tractantem, ut accessu memoriae area postquam liberata est, dereferencing nullis indicibus, quiddam eliminatum, etc. Bibliothecas distribuere, aedifices praebere et clientelas administrare, consilium sarcina oneraria onerariarum enucleat. Crates.io repositorium ad bibliothecas hospites sustentatur.
Memoria salutis in Rubigo tempore compilationis providetur, per respectum inhibitionem, semita obiecti possessionis custodiens, semita obiecti vitarum (scoporum), et rectitudo memoriae accessum perpendens in codice executioni. Rubigo etiam tutelam praebet contra integris scaenicis, amet initializationem valorum variabilium ante usum requirit, errores meliores in bibliotheca norma tractat, notionem immutabilium indiciorum et variabilium per defaltam applicat, validas typings stabilis praebet ad errores logicos extenuendos.
Innovationes principales:
- Error:: error:: Error, qui erroris descriptiones ostensas definit, confirmata est. Mutatio permittit te uno errore notitie uti in variis bibliothecis, cujuscumque ambitus, in bibliothecis non ligatis ad bibliothecam vexillum adhibitis, attributum "#![no_std]".
- Stabiles et instabiles functiones voluptua in bibliotheca vexillum conversae sunt ut novis algorithmis utendi quae altiorem observantiam et compilationem inferiorem temporibus demonstrant. In exsequendo algorithms novarum voluptua, deprehendere potest typos ord perperam definitos et errorum (panic) in talibus casibus pro notitiis passim collatis.
- Interrete instrumentum novum reprehendo gradum "exspectare" ("#[expectare(lint)]"), quod permittit ut verificetur te peractum esse et admonitionem ostendere si perscriptio non perficitur (ob errorem in exsequendo aut inactivare reprehendo). Exempli gratia, cum codicem migrans ad usum Clippy undocumented_unsafe_obstructionum reprimendo, specificare potes "#[exspectare(clippy::undocumented_unsafe_blocks)]" ut omnia in tuto transitus documenta sint. Clippy etiam arma clippy :: allow_attributes et clippy ::permittit_attributes_without_ratio compescit, faciens facile substituere "#[permitte]" attributa cum "#[expecta(lint)]".
- Facultas documenti est causa reponendarum graduum reprimendorum (linteo) providetur, dum novas tincidunt informationes de causis ad certos perscriptio, output sicut nuntius compilator addit. Exempli gratia: #![nega(clippy::float_arithmetic, reason="non hardware float support")]
- Nova portio API in categoriis stabilis mota est, additis methodis et notarum exsecutionibus confirmatae sunt:
- core :: error
- admonitus :: assert_unchecked
- fs :: exstat
- AtomicBool ::fetch_not
- Duratio:: abs_diff
- IoSlice :: antecessum
- IoSlice :: advance_slices
- IoSliceMut :: antecessum
- IoSliceMut :: advance_slices
- PanicHookInfo
- PanicInfo :: message
- PanicMessage
attributum "const", quod determinat facultatem utendi in quovis contextu loco constantium, in functionibus adhibetur;
- char :: from_u32_unchecked (munus)
- char :: from_u32_unchecked (ratio)
- CStr :: count_bytes
- CStr :: from_ptr
Genus std::panic::PanicInfo nominatum est std::panic::PanicHookInfo (officialis antiqui nominis retinetur, sed ex altera versione usus eius in admonitione proveniet). Hoc in casu, core::panic::PanicInfo manebit ut est, sed in specie separata explicabitur. Typi Separandi sinebunt te varios modos efficiendi in iis, qui ad executionem specificam in contextu snd et no_std sunt.
- Perfectus transitus ad C-solvuntur ABI ('externi "C-solutae"), qui differt ab ABI sine suffixo "-unwind" ('externe "C") servatis moribus salvis si processum rudentem ) utitur cum programma inruerit vel exceptio C ++ stili iacitur, terminum ABI transit (exempli gratia, cum exceptio in codice programmandi in uno sermone emissa tangendo acervum cum codice in alia programmandi lingua coniungitur). Cum emissio Rust 1.81, externi "C"' ABI datum est in inobservato enucleando fragore.
- Tertium subsidii gradum ad suggestum i686 redox, ignotum-redox, xtensa-esp32-nulla elf, xtensa-esp32s2-nulla elf, xtensa-esp32s3-nulla elf, xtensa-esp32-espidf, xtensa-esp32s2 -espidf, xtensa- esp32s3-espidf. Tertius gradus fundamentalis subsidii implicat, sed sine probatione automated, officialium aedificationum evulgandarum, vel iniecta an codici aedificari possit.
- In secundo gradu subsidii ad suggesta scopo loongarch64-ignoto-linux-musl et arm64ec-pc-fenestris msvc impleta est. Secundum gradum subsidii involvit syngrapham synagogam.
- Ad Linux-систем на платформе LoongArch предоставлен полный инструментарий и профилировщик.
- Устранена уязвимость (CVE-2024-43402) в std::process::Command, проявляющаяся только на платформе Windows и устраняющая обходной путь эксплуатации ранее исправленной уязвимости BatBadBut, связанной с обработкой спецсимволов при использовании вызовов Command::arg и Command::args, рассчитанных на прямую передачу процессу аргументов, без их обработки командным интерпретатором. На деле при запуске bat- и cmd-сценариев запускался процесс cmd.exe, имеющий собственную логику разделения аргументов. Обход защиты основан на том, что Windows удаляет лидирующие пробелы и точки в путях, т.е. файл с расширением «.bat. .» обрабатывается как «.bat».
Кроме того, можно отметить уход Уэдсона Алмейда Фильо (Wedson Almeida Filho) с поста сопровождающего проект Rust for Linux, занимающийся внедрением в ядро Linux средств для разработки на языке Rust. После ухода Уэдсона у проекта остались ещё два сопровождающих — Мигель Охеда (Miguel Ojeda), автор и основной разработчик проекта Rust-for-Linux, и Алекс Гейнор (Alex Gaynor), бывший директор организации Python Software Foundation, переключившийся на продвижение Rust. Ушедший сопровождающий, который подключился к проекту 4 года назад, является сотрудником компании Microsoft и автором экспериментального драйвера с реализацией ФС EXT2, написанного на языке Rust. Последнее время работа Алмейда была сосредоточена на создании средств для разработки файловых систем на языке Rust. В этом году Алмейда внёс в репозиторий Rust-for-Linux 17 коммитов (для сравнения Мигель Охеда добавил 53 коммита).
В качестве причины ухода упоминается нехватка сил и энтузиазма, которые когда-то были для реагирования на некоторые бредни нетехнического характера (nontechnical nonsense). По мнению Алмейда, разработчики вынуждены тратить много сил на споры по несущественным вопросам, сводящим на нет более важную глобальную цель. Алмейда продолжает верить, что будущее ядер за использованием языков, обеспечивающих безопасную работу с памятью, и если сообщество разработчиков Linux не поймёт это, то Linux будет вытеснен каким-то другим ядром, как в своё время произошло с Unix.
Сторонники проекта Rust-for-Linux столкнулись с необходимостью преодолевать сопротивление со стороны маститых старых разработчиков ядра, которые не видят необходимости в изучении нового языка. В своём письме об отставке Алмейда в качестве примера приводит ссылку на дискуссию, которая состоялась во время выступления Алмейда и Кента Оверстрита (Kent Overstreet) на конференции «Linux Storage, Filesystem, Memory-Management, and BPF Summit» и была посвящена использованию Rust для разработки файловых систем. Деятельность по внедрению Rust раскритиковал Тед Цо (Ted Ts’o), автор файловых систем ext2/ext3/ext4, который сравнил инициативу Rust-for-Linux c попыткой заставить всех принять религию Rust.
Propter intentionem Almeidae creandi fasciculum circa systematis fasciculi interfaces scriptum in C ad usum in codice Rust, Ted Tso ostendebat talem fasciam inevitabiliter ad problemata ducere, cum quaevis mutatio ad C interfaces et refactorem requireret mutationes ligaturae pro Rubigo et non vult suscipere responsabilitatem superfluam responsabilitatem ad solvendas difficultates in Rustici codice ac de statu Rubigo ligandi vigilantiam. C codice constanter evolvitur et, si eius mutatio functionem Rusti compage frangit, perturbationem omnium systematum fasciculorum cum hoc compage coniungentium ducet.
Тед также считает, что в обозримом будущем обвязка для Rust останется второстепенной и возникновение проблем в биндингах будет головной болью только для разработчиков Rust-for-Linux, а не для сообщества разработчиков файловых систем в ядре. Указано, что не все разработчики собираются изучать Rust и поэтому после внесения влияющих на другой код изменений, они смогут обновить только зависящий код на Си, но не смогут исправить Rust-обвязки, так как не знают Rust. К дискуссии также присоединился Джеймс Боттомли (James Bottomley), сопровождающий подсистему SCSI, который сказал, что чем больше семантики кодируется в обвязках, тем они становятся более ломкими с точки зрения обеспечения синхронизации.
Interea, Google, quae anno proximo firmware pvmfm adhibitum rescripsit, virtualis machinis, запускаемых в платформе Android, поделилась опытом постепенного включения кода на языке Rust в существующие прошивки, изначально написанные на C или C++. Показано, как можно существенно повысить защищённость прошивок, создавая идентичные по функциональности компоненты-замены, написанные на языке Rust. Основное внимание при внедрении Rust предлагается уделять использованию Rust для нового кода и кода, выполняющего функции, критические с точки зрения безопасности (например, код по обработке внешних данных, получаемых из не заслуживающих доверия источников). Для интеграции кода на Rust и C предлагается использовать прослойки (shim), транслирующие вызовы между API на Rust и C (C API экспортируется для использования в коде на Rust и наоборот), которые позволяют поэтапно переписывать элементы API на Rust.
Source: opennet.ru
