Издање програмског језика Руст 1.47

објављено издање 1.47 системског програмског језика Рђа, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и Рунтиме (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Руст-ово аутоматско управљање меморијом елиминише грешке приликом манипулације показивачима и штити од проблема који произилазе из манипулације меморијом ниског нивоа, као што је приступ меморијском региону након што је он ослобођен, нулте референце показивача, прекорачење бафера итд. Развија се менаџер пакета за дистрибуцију библиотека, обезбеђивање склапања и управљање зависностима од стране пројекта. Карго. Для размещения библиотек поддерживается репозиторий сандуке.ио.

Главни иновације:

  • Реализована поддержка типажей для массивов произвольного размера. Ранее, из-за невозможности определить generic-функции для всех целых значений, стандартная библиотека предоставляла встроенную поддержку типажей только для массивов, размер которых не превышал 32 элемента (типажи для каждого размера были определены статически). Благодаря созданию функциональности константных дженериков («const generics») появилась возможность определения generic-функций для любых размеров массива, но они пока не включены в состав стабильных возможностей языка, хотя реализованы в компиляторе и теперь укључени в стандартной библиотеке для типажей массивов любого размера.

    Например, следующая конструкция в Rust 1.47 приведёт к выводу содержимого массива, хотя раньше привела бы к ошибке:

    фн маин() {
    нека кс = [0; 34];

    println!(«{:?}», xs);
    }

  • Обезбеђен излаз краћих трагова (бацктраце), излаз у ванредним ситуацијама. Елементи који нису од интереса у већини ситуација, али ометају излаз и одвлаче пажњу са примарних узрока проблема, искључени су из трага. Да бисте вратили потпуно праћење, можете користити променљиву окружења „РУСТ_БАЦКТРАЦЕ=фулл“. На пример, за код

    фн маин() {
    паника!();
    }

    раньше выводилась трассировка в 23 этапа, а теперь она будет сведена к
    3 этапам, позволяющим сразу уловить суть:

    нит 'маин' успаничена од 'експлицитне панике', срц/маин.рс:2:5
    траг стека:
    0: стд::паницкинг::бегин_паниц
    на /рустц/д…д75а/либрари/стд/срц/паницкинг.рс:497
    1: игралиште::главно
    на ./срц/маин.рс:2
    2: цоре::опс::фунцтион::ФнОнце::цалл_онце
    на /рустц/д…д75а/либрари/цоре/срц/опс/фунцтион.рс:227

  • Компилятор rustc обновлён до сборки с использованием ЛЛВМ КСНУМКС (Rust користи LLVM в качестве бэкенда для генерации кода). При этом сохранена возможность сборки со старыми LLVM, вплоть до версии 8, но по умолчанию (в rust-lang/llvm-project) теперь используется LLVM 11. Релиз LLVM 11 ожидается в ближайшие дни.
  • На платформе Windows в компиляторе rustc обеспечена поддержка включения проверок целостности потока выполнения (Control Flow Guard), активируемых при помощи флага «-C control-flow-guard». На других платформах данный флаг пока игнорируется.
  • Нови део АПИ-ја је пребачен у стабилну категорију, укључујући и стабилизоване
    Ident::new_raw,
    Range::is_empty,
    RangeInclusive::is_empty,
    Result::as_deref,
    Result::as_deref_mut,
    Vec::leak,
    pointer::offset_from,
    f32::TAU и
    f64::TAU.

  • Атрибут „цонст“, који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у методама:
    • ново за све целе бројеве осим нуле;
    • checked_add, checked_sub, checked_mul,checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub и saturating_mul для всех целых;
    • ис_асции_алпхабетиц, ис_асции_упперцасе, ис_асции_ловерцасе, ис_асции_алпханумериц, ис_асции_дигит, ис_асции_хекдигит, ис_асции_пунцтуатион, ис_асции_грапхиц, ис_асции_вхитеспаце и ис_асции за типове за знакове и ис_л8.
  • За ФрееБСД укључени инструментарий из FreeBSD 11.4 (FreeBSD 10 не поддерживает LLVM 11).

Извор: опеннет.ру

Додај коментар