The OpenNET Project / Index page

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



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

Исходное сообщение
"Вышел компилятор языка D 2.076"
Отправлено opennews, 02-Сен-17 20:09 
Команда разработчиков языка D представила (http://forum.dlang.org/thread/oobpf2$14c1$1@digitalmars.com) новую версию компилятора 2.076 (http://dlang.org/D). Язык D использует статическую типизацию, обладает синтаксисом, схожим с C/C++, и обеспечивает производительность компилируемых языков, при этом заимствуя некоторые полезные возможности динамических языков в области эффективности разработки и обеспечения безопасности. Например, предоставляется поддержка ассоциативных массивов, косвенное определение типов, автоматическое управление памятью, средства параллельного программирования, опциональный сборщик мусора, система шаблонов, компоненты для метапрограммирования, возможность использовать библиотеки на языке C, а также некоторые библиотеки на C++ и Objective-C.  Компилятор DDMD поддерживает системы GNU/Linux, Windows, OS X, FreeBSD, и архитектуры x86, x86_64, x64.

Главным нововведением является режим "-betterC (https://dlang.org/blog/2017/08/23/d-as-a-better-c/)", который позволяет разрабатывать на D полностью совместимые с Си библиотеки, при этом ликвидируя огромное количество проблем чистого Си. Краткий список особенностей (https://dlang.org/changelog/2.076.0.html) данного режима:

-  Отсутствие препроцессора
-  Более высокая скорость компиляции
-  Полноценная модульностью. Поддержка различных видов импорта (статический импорт, частичный импорт, ренейминг при импорте и тд)
-  В момент компиляции возможна: генерация кода, интроспекция, проверка различных условий.


-  Ветвление на этапе компиляции через "static if" и "static foreach"
-  возможны работа блоков вида version(linux) { ... }
-  возможность написания циклов вида: "foreach(i; 1 .. 11) { ...}"


-  Шаблоны
-  Аналог borrow checking из Rust через "scope pointers (scope T*)", "scope slices (scope T[])" и "scope references (scope ref T)"
-  Поддержка модификаторов доступа "const" и "immutable"
-  TLS по умолчанию
-  Поддержка контрактного программирования
-  Удобные массивы с поддержкой слайсинга
-  Ускорение работы с массивами за счет SIMD
-  Удобные unit-тесты
-  Встроенная система профилирования
-  User-defined атрибуты
-  Встроенный и очень удобный генератор документации
-  Привычный каждому программисту Си синтаксис
-  Поддержка Unicode
-  Лучшие чем у C средства безопасного доступа памяти (memory safety)
-  Замыкания
-  RAII


Код на Си:


   /* Eratosthenes Sieve prime number calculation. */

   #define true    1
   #define false   0
   #define size    8190
   #define sizepl  8191

   char flags[sizepl];

   int main() {
    int i, prime, k, count, iter;

    printf ("10 iterations\n");
    for (iter = 1; iter ‹= 10; iter++) {
        count = 0;
        for (i = 0; i {= size; i++)
            flags[i] = true;
        for (i = 0; i {= size; i++) {
            if (flags[i]) {
                prime = i + i + 3;
                k = i + prime;
                while (k ‹= size) {
                    flags[k] = false;
                    k += prime;
                }
                count += 1;
            }
        }
    }
    printf ("\n%d primes", count);
    return 0;
   }

Код в режиме betterC:


   import core.stdc.stdio;

   extern (C):

   __gshared bool[8191] flags;

   int main() {
       int count;

       printf("10 iterations\n");
       foreach (iter; 1 .. 11) {
           count = 0;
           flags[] = true;
           foreach (i; 0 .. flags.length) {
               if (flags[i]) {
                   const prime = i + i + 3;
                   auto k = i + prime;
                   while (k ‹ flags.length) {
                       flags[k] = false;
                       k += prime;
                   }
                   count += 1;
               }
           }
       }
       printf("%d primes\n", count);
       return 0;
   }


Для включения данного режима в dub.sdl необходимо добавить строку:


   dflags "-betterC"


Для dub.json строка будет:


   "dflags" : ["betterC"],


Предыдущая версия получила так же возможность работы компилятора как библиотеки, что сделало возможным развитие средств качественного автодополнения. Частично данные возможности уже используются плагином (https://marketplace.visualstudio.com/items?itemName=webfreak...) для Visual Studio.


Кроме этого следует отметить выпуск компилятора LDC 1.4.0-beta1 (https://github.com/ldc-developers/ldc/releases/tag/v1.4.0-beta1) в котором появилась полная поддержка разработки под Android и режим кросскомпиляции. Для тех кто только начинает изучать программирование доступна (http://dlang.ru/book) альфа версия русской книги по программированию на D на русском языке.


URL: http://forum.dlang.org/thread/oobpf2$14c1$1@digitalmars.com
Новость: http://www.opennet.me/opennews/art.shtml?num=47120

 

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



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

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