- PVSM.RU - https://www.pvsm.ru -

Несмотря на то, что язык находится в активной фазе разработки, работа была сфокусирована над улучшением системы типов и библиотек. Главная работа была проведена над имплементацией типов с динамическим размером (DST) и рефакторингом стандартной библиотеки.
В этом релизе также удалили ~ и @ в угоду типам Box и Gc из стандартной библиотеки (компилятор пока знает о этих типах больше чем нужно, но вскоре эти типы станут самыми обычными типами Rust).
В подготовке в введию типов с динамическим размеров (DST), ~str и ~[T] были удалены из языка. Их вернут в виде Box<str> и Box<[T]>, но пока их нет. Их заменили на String и Vec соответственно.
Тип Vec заменяет старый тип ~[T] при этом его производительность улучшилась благодаря оптимизациям LLVM.
Как и ~[T], Vec<T> может менять размер используя изменяемый указатель. Из него легко получить &mut[T] и &[T].
По сути это прямая замена ~str. Это тип owned строк по умолчанию, и поддерживает изменения через mut указатель. Этот тип использует Vec<u8> и в рантайме гарантирует наличие строки с правильной utf8 кодировкой. Получить &str с него можно используя метод as_slice().
Тип String входит в prelude и живет в std::string.
Повсеместные указатели ~ и @ были удалены из языка и теперь находятся в библиотеках. Синтаксис вида ~T заменен на Box<T>, и находится в std::owned, а синтаксис вида @T был заменен на Gc<T> и находится в std::gc.
Вместо ~expr тепер нужно писать box expr, а вместо @expr тепер box(GC) expr.
Пока это всего лишь изменение в синтаксисе, но главной целью есть перенос многих фич из компилятора в библиотеки. В месте с этим мы получим упрощенную поддержку компилятора, более простую генерацию документации и более очевидное использование умных указателей Rc и Arc.
После внедрения DST компилятору не нужно будет специально обрабатывать типы Box<> и Gc<>.
Произошел рефакторинг стандартной библиотеки, теперь она является «зонтиком» для небольших библиотек. Целью рефакторинга было определение зависимостей между компонентами библиотеки и лучшее абстрагирование типов.
Новые библиотеки, входящие в состав стандартной библиотеки:
Rc<T>, Arc<T> и Box<T>. Также вся память для Rust выделяется этой библиотекой. Сейчас для этого используется аллокатор jemalloc. Библиотека зависит от liblibc и libcore. Явно указывать подключение даных модулей не нужно, стандартная библиотека реэкспортирует весь нужный функционал. К примеру, тепер в стандартной библиотеке есть такие модули:
Автор: Antti
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/64150
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/228485/
Нажмите здесь для печати.