The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз компилятора D версии 2.068.0"
Отправлено opennews, 10-Авг-15 15:21 
Вышла (http://forum.dlang.org/thread/mq9ohk$1c1r$1@digitalmars.com) версия 2.068 кроссплатформенного компилятора языка программирования D (http://ru.wikipedia.org/wiki/D_%28%D1%8F%...: Digital Mars D (DMD (http://dlang.org/)). D — это компилируемый в машинный код язык из семейства си‐подобных, включающий в себя опциональный сборщик мусора, мощную систему метапрограммирования, удобные шаблоны, исполнение D-кода во время компиляции, систему модулей вместо «include». D позволяет без труда использовать библиотеки на языке C, а также имеет возможность использовать некоторые C++-библиотеки и ObjC-библиотеки. Компилятор DDMD поддерживает системы GNU/Linux, Windows, OS X, FreeBSD, и архитектуры x86, x86_64, x64.

Основные изменения и новшества версии 2.068:

-  Изменения в компиляторе:


-  Новый ключ командной строки "-profile=gc" позволяет профилировать выделение памяти.
-  Блоки юниттестов (unittest) больше не парсятся, пока не задан ключ командной строки "-unittest".
-  Сгенерированые компилятором деструкторы и постблиттеры (postblitter) теперь доступны по именам «__xdtor» и «__xpostblit».

-  Изменения в языке:


-  Добавлена директива pragma(inline), для указания компилятору на то, что некоторые функции следует инлайнить всегда «pragma(inline, true)» или использовать для них обычные правила «pragma(inline, false)».

-  Для функций, тип возвращаемого значения у которых указан как auto, компилятор теперь будет автоматически выводить атрибуты pure, @safe, nothrow, @nogc (раньше это делалось только для шаблонов).

-  Парcер теперь позволяет использовать индексированные туплы (структура, существующая только во время компиляции и позволяющая хранить типы) как декларации типов: «T[0].S myvar;». Подробнее см. в http://dlang.org/changelog.html#index-type-followed-ident (описании).

-  Аргументы шаблонов теперь могут быть выведены на основе аргументов функции:

<font color="#461b7e">
  void previously(T=int) (T t=0) {} // раньше необходимо было так
  void now(T) (T t=0) {} // а теперь можно и так
</font>


-  Некоторые ошибочные приведения типов, которые раньше определялись на стадии генерации кода, теперь определяются на стадии семантического анализа. Это улучшило сообщения об ошибках и работу CTFE-движка, ответственного за исполнение D-кода во время компиляции.

-  Изменения в стандартной библиотеке:


-  Множество функций теперь работают с InputRange и OutputRange (абстракциями для получения входных данных и выдачи выходных данных) вместо массивов.

-  Модуль std.typetuple был переименован в std.meta. Для обеспечения совместимости std.typetuple сохранён в виде псевдонима std.meta.

-  Сущность TypeTuple была переименована в AliasSeq. Для обеспечения совместимости сохранён псевдоним.

-  Добавлен CTFE-шаблон hexString, который должен заменить встроенные в язык hex-строки:

<font color="#461b7e">
  x"304A314B» // было
  hexString!»304A314B» // стало
</font>

-  Добавлена CTFE-функция hasUDA для проверки наличия у символов UDA (определяемых пользователем атрибутов времени компиляции).

-  Вызовы GC API теперь могут быть отдельно профилированы.

-  Переписана работа с синхронизированными (synchronized) объектами в druntime. Починена ошибка с гонкой во время инициализации мьютекса.

-  Сгенерированный вручную интерфейсный файл object.di больше не нужен, компилятор использует оригинальный object.d.

-  Новая реализация AA (ассоциативных массивов), с новой схемой разрешения конфликтов при совпадении хэшей. Чуть быстрее и лучше дружит с кэшем процессоров.

-  Улучшена работа встроенного инструмента code coverage.

-  Функция executeShell теперь игнорирует переменную среды SHELL и всегда использует sh.

-  Функция byLine (чтение текстового файла построчно) была переписана и значительно ускорена (до трёх раз).

-  В пакет std.algorithm добавлены предикаты ordered и strictlyOrdered для проверки, отсортирована ли последовательность значений.

-  Шаблон RefCounted использует новый атрибут return, чтобы указать компилятору, что внутренний объект шаблона не может быть использован вне лексического блока (espace checking).


Также следует отметить, что в будущем релизе 2.069 используемый сейчас фронтэнд, написанный на подмножестве языка C++, будет заменён фронтэндом, написаным на языке D. Фронтэнд на языке D делается при помощи полуавтоматической трансляции C++ кода, поэтому до версии 2.069 никаких изменений (кроме очевидных исправлений ошибок) во фронтэнде не будет. Кодовая база библиотек druntime и Phobos, тем не менее, не заморожена.


URL: http://forum.dlang.org/thread/mq9ohk$1c1r$1@digitalmars.com
Новость: https://www.opennet.ru/opennews/art.shtml?num=42756

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру