રસ્ટ 1.37 પ્રોગ્રામિંગ લેંગ્વેજ રિલીઝ

પ્રકાશિત સિસ્ટમ પ્રોગ્રામિંગ ભાષા પ્રકાશન રસ્ટ 1.37, મોઝિલા પ્રોજેક્ટ દ્વારા સ્થાપિત. ભાષા મેમરી સલામતી પર ધ્યાન કેન્દ્રિત કરે છે, સ્વચાલિત મેમરી મેનેજમેન્ટ પ્રદાન કરે છે, અને ગાર્બેજ કલેક્ટર અથવા રનટાઈમનો ઉપયોગ કર્યા વિના ઉચ્ચ કાર્ય સમાનતા પ્રાપ્ત કરવા માટેનું સાધન પૂરું પાડે છે.

રસ્ટનું ઓટોમેટિક મેમરી મેનેજમેન્ટ ડેવલપરને પોઈન્ટર મેનીપ્યુલેશનથી મુક્ત કરે છે અને લો-લેવલ મેમરી મેનીપ્યુલેશનથી ઉદ્ભવતી સમસ્યાઓ સામે રક્ષણ આપે છે, જેમ કે આફ્ટર-ફ્રી મેમરી એક્સેસ, નલ પોઈન્ટર ડીરેફરન્સ, બફર ઓવરરન્સ અને તેના જેવા. લાઇબ્રેરીઓનું વિતરણ કરવા, એસેમ્બલી સુનિશ્ચિત કરવા અને પ્રોજેક્ટ દ્વારા નિર્ભરતાનું સંચાલન કરવા માટે એક પેકેજ મેનેજર વિકસાવવામાં આવી રહ્યો છે. કાર્ગો, તમને એક ક્લિકમાં પ્રોગ્રામ માટે જરૂરી લાઇબ્રેરીઓ મેળવવાની મંજૂરી આપે છે. એક રીપોઝીટરી હોસ્ટ લાઈબ્રેરીઓ માટે આધારભૂત છે crates.io.

મુખ્ય નવીનતાઓ:

  • В компиляторе rustc પૂરી પાડવામાં આવેલ છે поддержка оптимизации на основе результатов профилирования кода (PGO, Profile-Guided Optimization),
    позволяющих генерировать более оптимальный код на основе анализа статистики, накопленной в процессе выполнения программы. Для генерации профиля предусмотрен флаг «-C profile-generate», а для использования профиля при сборке — «-C profile-use» (вначале программа собирается с первым флагом, обкатывается и после создания профиля собирается повторно со вторым флагом);

  • При выполнении команды «cargo run», которую удобно использовать для быстрого тестирования консольных приложений, добавлена возможность автоматического выбора исполняемого файла для запуска, в случае если в пакете присутствует несколько исполняемых файлов. Выполняемый по умолчанию файл определяется через директиву default-run в секции [package] с параметрами пакета, которая позволяет обойтись без явного указания имени файла через флаг «—bin» при каждом запуске «cargo run»;
  • В пакетный менеджер Cargo интегрирована команда «cargo vendor», ранее поставляемая в виде отдельного пакета. Команда позволяет организовать работу с локальной копией зависимостей — после выполнения «cargo vendor» все исходные тексты зависимостей проекта загружаются с crates.io в локальный каталог, который затем можно использовать для работы без обращения к crates.io (после выполнения команды показывается подсказка по изменению конфигурации для использования каталога при сборках). Указанная возможность уже применяется для организации поставки компилятора rustc с упаковкой всех зависимостей в один архив с релизом;
  • Появилась возможность создания ссылок на варианты перечислений (enum), используя псевдонимы типа (например, в теле функции «fn increment_or_zero(x: ByteOption) можно указывать «ByteOption::None => 0»), конструкции вычисления типов (‹MyType‹..››::вариант => N) или обращения Self (в блоках c &self можно указать «Self::Quarter => 25»);
  • Добавлена возможность создания неименованных констант в макросах. Вместо определения имени элемента в «const» теперь можно использовать символ «_» для динамического выбора неповторяющегося идентификатора, позволяющего избежать конфликта имён при повторном вызове макроса;
  • Добавлена возможность использования атрибута «#[repr(align(N))» с перечислениями (enums), используя синтаксис, аналогичный определению структуры AlignN‹T› с выравниванием и последующему использованию AlignN‹MyEnum›;
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы BufReader::buffer, BufWriter::buffer,
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Option::xor,
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits и
    slice::copy_within.

વધુમાં, તે નોંધી શકાય છે પરીક્ષણની શરૂઆત પ્રોજેક્ટ Async-std, предлагающего асинхронный вариант стандартной библиотеки Rust (порт библиотеки std, в котором все интерфейсы предложены в версии с async и готовы для использования с синтаксисом async/await).

સોર્સ: opennet.ru

એક ટિપ્પણી ઉમેરો