LINUX.ORG.RU

Вышли новые версии оригинальных компиляторов языков D2 и D1

 ,


0

2

На днях вышли новые версии оригинальных компиляторов языков программирования D2 и D1 от коллектива авторов.

Как обычно, внесены как изменения и дополнения в стандартную библиотеку D2, так и многочисленные исправления (это касается обоих компиляторов). Некоторые важные изменения:

  • Продолжено улучшение поддержки 64-битных систем Linux, теперь эта поддержка декларируется официально, исправлен ряд ошибок и регрессий, связанных с компиляцией под 64-битную архитектуру.
  • В стандартную библиотеку добавлен модуль std.datetime, заменивший собою модули std.date и std.gregorian.
  • Добавлена поддержка HTML5.
  • Добавлен новый генератор случайных чисел — Xorshift random generator.
  • Исправлены 68 ошибок и регрессий в D2, в том числе и очень старых.

deb-пакет уже доступен для загрузки на официальной страницы, rpm-пакет, видимо, будет готов в ближайшее время.

>>> Подробности

★★★★★

Проверено: post-factum ()
Последнее исправление: shimon (всего исправлений: 6)

Ответ на: комментарий от anonymous

> Даже и без исключений можно случайно выскользнуть return'ом в результате какого-нибудь условия выше по коду. Достаточно невнимательности.

кто вам доктор? По невнимательности можно зафэйлить в самых managed-языках.

коллективное кодописание, разросшийся код,

Как раз в таких условиях и работаю. Там, где бизнес-логика (высокий уровень), там и коллективное кодописание, и разрастание функций. Там всюду применяются smart pointer-ы. Низкоуровненвые же функции и классы пишутся с рассчетом на быстродействие лучшими кодерами (нередко с ассемблером) и там уж не до «невнимательности».

сжатые сроки

При сжатых сроках глупо браться за реализацию на С++.

segfault ★★★★★
()
Ответ на: комментарий от segfault

>кто вам доктор? По невнимательности можно зафэйлить в самых managed-языках.

Доктор нам C++. Если правильно его готовить, он застрахует от невнимательностей вида new/delete и подобных.

Низкоуровненвые же функции и классы пишутся с рассчетом на быстродействие

RAII быстродействие не понижает, лишь повышает надежность.

anonymous
()
Ответ на: комментарий от aho

вот кстати еще более быстрый вариант:

#include <assert.h>
#include <xmmintrin.h>

static const int limit = 256 * 1024 * 1024;
static const int reps = 100;

static const int m128_size = sizeof( __m128 );
static const int m128_limit = limit / m128_size;
__m128 array[ m128_limit ];

void sse_fill( __m128 * array, int sz )
{
  assert( array != 0 );
  assert( sz >= 0 );

  typedef __declspec(align(16)) char pattern_array[ m128_size ];

  static const pattern_array pattern = {
    -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1
  };

  _asm {
    mov ecx, sz
    jz _out
    movq xmm0, mmword ptr [ pattern ]
    mov edi, array
_loop:
    movntdq [edi], xmm0
    add edi, 16
    sub ecx, 1
    jnz _loop
    emms
_out:
  }
}

int main( int, char ** )
{
    for( int r = 0; r < reps; ++r )
      sse_fill( array, m128_limit );

    return 0;
}
bash-3.1$ time ./aho.exe

real    0m13.619s
user    0m0.015s
sys     0m0.015s
bash-3.1$ time ./sse.exe

real    0m8.330s
user    0m0.047s
sys     0m0.015s
anonymous
()
Ответ на: комментарий от aho

а я бы поубивал всех бустеров - но ничего, терплю же их пока, каждому свое


чем тебе буст не нравиться?

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от anonymous

>>>У меня на 4.5 эффект от -O4 есть

Судя по всему - один из многих пачей на эту тему.

gnu.org/gcc-4.5.0/gcc/opts.c
......
/* -O3 optimizations. */
opt3 = (optimize >= 3);
flag_predictive_commoning = opt3;
flag_inline_functions = opt3;
flag_unswitch_loops = opt3;
flag_gcse_after_reload = opt3;
flag_tree_vectorize = opt3;
flag_ipa_cp_clone = opt3;
if (flag_ipa_cp_clone)
flag_ipa_cp = 1;
......

V0ID ★★★
()
Ответ на: комментарий от dave

[слоу] Что-то я исходников там не могу найти, можно носом ткнуть? В комментах он выложил для плюсов, а остальные? Если красивые графики есть, а исходников нет, то это странно и нехорошо. [/слоу]

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.