
Pavel
29.01.2018
18:55:15
без gc
:)

Maxim
29.01.2018
18:55:25
на BetterC хоть модули ядра пили неотличимые от сишных, только заголовочные файлы в ди переведи)

Oleg
29.01.2018
18:55:51
без gc
Для меня GC эффективен) мне быстро пишется с ним

Google

Oleg
29.01.2018
18:56:42
Быстро написал -- задача решена, дальше уже нужно или нет оптимизировать это другой разговор
А betterC по мне как раз для более нестандартных и низкоуровневых вещей

Evgeny
29.01.2018
18:59:28

Maxim
29.01.2018
18:59:45
да нормально вроде работает)
если в цикле foo~=bar не делать)

Evgeny
29.01.2018
19:00:05

Oleg
29.01.2018
19:00:19
Хотя хз, в любом случае быстрее питона))

Evgeny
29.01.2018
19:00:55

Oleg
29.01.2018
19:01:10

Evgeny
29.01.2018
19:01:13

Pavel
29.01.2018
19:01:27
Нужен string без gc как строительный кирпичик

Oleg
29.01.2018
19:01:38

Google

Maxim
29.01.2018
19:01:49
на мой взгляд, большинство разговоров про медленность GC в D — это что-то из разряда религиозных или мировоззренчиских споров

Evgeny
29.01.2018
19:01:55
тесты ГЦ?

Oleg
29.01.2018
19:02:08

Evgeny
29.01.2018
19:02:14
кто-то вроде делал. Павел вроде

Oleg
29.01.2018
19:02:31

Evgeny
29.01.2018
19:02:33
я про тесты ГЦ

Oleg
29.01.2018
19:02:51
Где-то я проглядел
Ну всмысле не читал

Pavel
29.01.2018
19:03:09
Могу рассказать инсайд из моей мифической недописанной статьи, как я делал бенчмарк GC ?

Oleg
29.01.2018
19:03:34

Pavel
29.01.2018
19:03:47
Its done when its done

Evgeny
29.01.2018
19:03:51

Oleg
29.01.2018
19:04:30
Было бы неплохо понимать когда, на каких задачах gc перестаёт быть тортом

Evgeny
29.01.2018
19:05:24

Pavel
29.01.2018
19:05:37
Опыт эпичный. У меня был написан http сервер на который валилось около 10000 запросов в секунду. По таймеру каждые 0.1 секунды я выводил в консоль текущую метку времени. Когда сервер висел под нагрузкой, я в консоли постоянно жал enter и отбивал пустые строки. И заметил, что периодически мой сервак виснет где-то на 1-2 секунды, и в это время набирается с десяток пустых строк в консоли.
Поскольку соревнование где надо дать ответ за 0.1 миллисекунды чтобы попасть в топ, то естественно для меня неприемлемо когда все виснет на 1000000 миллисекунд.
Ну и памяти там выжиралось нормально, 500мб-1Гб туда-сюда сливалось, я делал принты тоже от GC
> когда все виснет на 1000000 миллисекунд.
Тут неправ, я про 1000 миллисекунд конечно же

qwerty
29.01.2018
21:17:45
правильно понимаю, что betterC либа будет работать в приложении, которое собирается без betterC флага?

Pavel
29.01.2018
21:54:31
Да

Google

?
30.01.2018
09:20:09
Книгу лучше запилите) адександреску кончается, скоро читать нечего будет)

Nikita
30.01.2018
10:25:12
Всем привет, потихоньку учу D. Если что, буду всякие нубские вопросы задавать. С системными языками опыта нет, до этого в продакшене писал только на Ruby ?♂️

Oleg
30.01.2018
10:25:43

Mike
30.01.2018
10:42:21
Книгу лучше запилите) адександреску кончается, скоро читать нечего будет)
ИМХО не книгу надо, а тур дополнить... прям так дополнить, чтобы он вообще на ВСЕ вопросы отвечал... ? надо как-нить засесть на недельку и снова по нему пройтись, покаписывать где какие вопросы, где про что вообще не упоминается, потом найти на это ответы и «дописать» ? но эт пипец задача... круче чем развалить вторую звезду смерти ?

Pavel
30.01.2018
11:09:43
Если дополнить тур всеми вопросами, получится такая книжища

Stepanos
30.01.2018
11:18:14
тур допиливать + у нас же на GitHub есть набор материалов, их дополнять и надо

Mike
30.01.2018
11:24:00

Nikita
30.01.2018
11:29:26

Stepanos
30.01.2018
11:30:28
https://github.com/deviator/duseful

Nikita
30.01.2018
11:31:13

Pavel
30.01.2018
11:50:35
Если воду выжать — нормально всё получится ? trust me
А как же без воды то? Тур без воды это официальная документация https://dlang.org/spec/spec.html
Но хочется именно с философскими рассуждениями, почему вводили тот или иной атрибут, примеры когда он полезен, практики.

Stepanos
30.01.2018
11:50:54
++

Mike
30.01.2018
12:32:25

Pavel
30.01.2018
12:34:27
> истории из жизни и прочие хрени, которые в технической документации только напрягают читателя
Не знаю что ты под этим понимаешь, но часто я как раз бы хотел почитать истории из жизни, когда например человек активно использует у себя in/inout параметры и как они ему помогают.

Nikita
30.01.2018
12:34:47

Pavel
30.01.2018
12:35:45
Или про тот же избитый betterC, вокруг него есть непонимание тоже. Он есть но зачем он нужен не всем ясно. Вчера я прочитал тему на форуме про него, что оказывается его даже сами разработчики не рекомендуют использовать кроме как в случаях постепенного переписывания Си кода на D

Maxim
30.01.2018
12:37:30
кстати, единственное применение in параметрам, которое я придумал, — это замена сишного const в параметрах функций при трансляции заголовочных файлов в D
По поводу BetterC, кстати, Уолтер же до последнего прятал его и не сознавался, что он существует. А теперь для большой части целевой аудитории (аля системные и близкие к железу программисты) BetterC может оказаться более интересным, чем D как таковой.
и это может внести раскол в и без того небольшое сообщество)

Google

Pavel
30.01.2018
12:54:52
А где тут раскол? betterC это все еще D хоть и урезанный
Если на него будут портировать старые Си поделки, то там дальше уже недалеко и рантайм подключить
А кто-нибудь знает где можно посмотреть реализацию string? Откуда оно вообще взялось? Это часть рантайма или фобоса? Что-то не найду.
Нашел
alias string = immutable(char)[];
получается все операции со строкой это на самом деле операции с массивом. А вот где их найти?..

Oleg
30.01.2018
22:55:10

Pavel
30.01.2018
22:55:41
Нее, это там какие-то очень высокоуровневые функции

Oleg
30.01.2018
22:55:43
Там есть некоторые импорты

Pavel
30.01.2018
22:56:06
Например в рантайме objects.d я нашел методы dup, idup

Oleg
30.01.2018
22:56:21

Admin
ERROR: S client not available

Pavel
30.01.2018
22:56:22
А вот .ptr получение указателя на массив что-то не нашел

Oleg
30.01.2018
22:56:45

Pavel
30.01.2018
22:56:58
То есть только компилятор его понимает?

Oleg
30.01.2018
22:57:26
Ну типа того
Встроенное свойство

Pavel
30.01.2018
22:57:58
Впрочем я уже экспериментально выяснил что string более-менее сносно работает в betterC, если не пытаться делать ~ конкатенацию. Но и насчет нее пишут что можно избавиться теоретически https://forum.dlang.org/post/mailman.2758.1517183623.9493.digitalmars-d-bugs@puremagic.com

Oleg
30.01.2018
22:58:50

Pavel
30.01.2018
23:00:01
Да такого кунг-фу мне еще далеко :\

Evgeny
31.01.2018
07:07:16
Да такого кунг-фу мне еще далеко :\
Обычно в подобных случаях возникает ошибка линковки. Для ее разрешения нужно самому дописать нехватающие функции. То есть самому сделать функции конкатенации.
названия выглядят примерно как d_array_alloc или что-то в этом роде

Google

qwerty
31.01.2018
07:56:35
так у betterC вообще нет никакой std?

Oleg
31.01.2018
08:14:01
Всё что ct

qwerty
31.01.2018
08:14:21
понятно

Pavel
31.01.2018
11:10:35
так у betterC вообще нет никакой std?
Хоть на форуме там кто-то пишет что большая часть std совместима с betterC, на деле мне еще не удалось найти ни одного модуля который был бы совместим. Ну разве что какие-нибудь трейты ;)
Даже nogc контейнерный массив не заработал, так как там кидаются исключения.

Evgeny
31.01.2018
11:18:33

Pavel
31.01.2018
11:18:54
Да, там все хитро, может быть часть работает.

Mike
31.01.2018
11:34:35

Pavel
31.01.2018
11:35:29
Как минимум Exception это класс, что тянет за собой рантайм и GC
Бросить исключение можно через throw new Exception

Evgeny
31.01.2018
11:36:00
GC не обязательно

Pavel
31.01.2018
11:36:12
Ну может можно как-то это аллокатить на стеке, но кто будет так изврщзаться в исключениях
Которые и так скользкое место )

Evgeny
31.01.2018
11:36:32
Exception может быть аллоцирован в куче, а в catch его можно удалять
на самом деле есть темка от Брайта, где он предлагает в случае если эксепшн не утекает налево, то аллоцировать его в куче и автоматически удалять в catch

Oleg
31.01.2018
11:38:23

Evgeny
31.01.2018
11:38:28
точнее всегда создавать в куче, а если в catch он утекает, то копировать его в GC

Mike
31.01.2018
11:39:19
Короче печаль.........

Evgeny
31.01.2018
11:39:46
а так годно получается. если в catch эксепшн никуда не передавать, то получается вполне себе nogc