
Maxim
29.01.2018
07:19:04
странно

Igor
29.01.2018
07:19:15
Так должно быть
А с оберткой logger в safe придется еще оформить передачу имени функции, строки и т.д

Evgeny
29.01.2018
07:28:04

Google

Maxim
29.01.2018
07:29:31
хм, и правда в дебаг билдах из pure можно вызывать impure)

Igor
29.01.2018
07:29:58
Иначе в логе мы всегда будем видеть только имя и номер строки враппера. Или не?

Evgeny
29.01.2018
07:32:49
static import std.experimental.logger;
void log(
int line = __LINE__,
string file = __FILE__,
string funcName = __FUNCTION__,
string prettyFuncName = __PRETTY_FUNCTION__,
string moduleName = __MODULE__,
ARGS...
)(const LogLevel ll, lazy bool condition, lazy ARGS args) @trusted {
std.experimental.logger.log!(line, file, funcName, prettyFuncName, moduleName)(ll, condition, args);
}
и так каждую функцию

Igor
29.01.2018
08:02:50
Ага, спасиб

Dmitry
29.01.2018
08:45:53
можно не оборачивая прям по месту писать:
() @trusted { someUnsafeCall(1,2,3); } ();

Igor
29.01.2018
09:14:27

Evgeny
29.01.2018
10:18:34
можно автогенерацию строковым миксином замутить, чтобы одно и тоже не писать несколько раз

Pavel
29.01.2018
10:23:08
Видел эти обертки в vibe-core выглядит ужасно ) Еще тогда подумал, вот это уродство приходится прописывать в языке
Да уж либо миксин либо просто продублировать методы логгера у себя локально и каждый пометить как trusted

Evgeny
29.01.2018
11:30:02
макросы нужны нормальные

Google

Igor
29.01.2018
12:09:46
довольно неудачно что номер строки и прчее попадают не в аргументы ф-ции а в параметры темплейта
из-за этого инстанцируется куча одинаковых ф-ций

Evgeny
29.01.2018
12:10:49
ну может оно там инлайнится

Oleg
29.01.2018
13:20:11
как-то раз сталкивался и результат был не очень приятный — не правильно передавались строки и имя файла
хотя сейчас не могу воспроизвести

Dmitry
29.01.2018
13:40:52
Сладенькие, а как в betterC передавать структуры в аргументы? Я тут по приколу решил маленький модуль для emacs накропать, а структура никак в аргументы не проползает.

Dmitry
29.01.2018
13:41:50
а чего говорит?

Dmitry
29.01.2018
13:41:55
То есть в сишном заголовке там
extern int emacs_module_init (struct emacs_runtime *ert);
А в дишном модуле int emacs_module_init (emacs_runtime* ert);
а чего говорит?
em.d(108): Error: basic type expected, not struct
em.d(108): Error: found struct when expecting )
em.d(108): Error: semicolon expected following function declaration
Это если в дишном модуле написать
int emacs_module_init (struct emacs_runtime* ert);

Dmitry
29.01.2018
13:43:18
по сишной привычке вместо X пишешь struct X?
просто не надо struct там

Dmitry
29.01.2018
13:43:44

Dmitry
29.01.2018
13:45:58
при общении с внешним кодом надо первым делом убедиться, что структуры одинаково расположили свои части, alignment содержимого. первым делом sizeof(X) сделать в Си и X.sizeof в D и сравнить.

Dmitry
29.01.2018
14:06:36
А не, собралось. Я понял, что заголовок через жопу написал.

Dmitry
29.01.2018
17:32:06

Stepanos
29.01.2018
17:34:41
> Fastest I/O and http2 ...
нормуль

Google

Igor
29.01.2018
17:53:52
Ну прежде чем делать http/2 на betterC нужен какой-то фундамент, хоть контейнеры стандартизованные...
Кстати по поводу не-сейф log функций я лоханулся. Сообщения об ошибках сказали что функция не сейф в то время как проблема была с аргументои

Mike
29.01.2018
17:57:02

Pavel
29.01.2018
18:16:03
Да хотя бы байтовый буфер который увеличивается сам
Ведь такого же нету вроде )

Igor
29.01.2018
18:19:51
о каких "контейнерах" речь..?
Ну залоловки http держать в ассоциативном массиве хотя-бы, тело складывать в буфер коьорый можно удобно, безопасно и без копирований обрабатывать

Mike
29.01.2018
18:21:28

Pavel
29.01.2018
18:21:53
ты про std.container ?

Mike
29.01.2018
18:22:48

Igor
29.01.2018
18:23:07
Динамические массивы работают без gc и рантайма? Я не знал, хорошо емли так

Pavel
29.01.2018
18:24:11

Mike
29.01.2018
18:24:46

Pavel
29.01.2018
18:25:05
std.experimental.container уже не используют GC но еще используют рантайм, они для betterC тоже не подходят
Даже классами и наследованием не воспользуешься.

Mike
29.01.2018
18:26:48

Pavel
29.01.2018
18:28:10
http://docs.algorithm.dlang.io/latest/index.html вот есть какой-то ndslice, но там вместо того чтобы написать что это массив байтов, пишут что это N-мерный слайс, меня это очень смущает.
Я конечно понимаю что математику очень легко в голове положить N равное 1 и получить обычный массив, но для разработки это знание - лишний оверхед.

Evgeny
29.01.2018
18:35:43
что вы прицепились к этому беттерЦ и рантайму?
В плюсах есть рантайм кстати.

Google

Evgeny
29.01.2018
18:36:37
чем вам рантайм-то неугодил?

Oleg
29.01.2018
18:39:17

Evgeny
29.01.2018
18:39:35

Igor
29.01.2018
18:39:42
Да я уже понял что лучше хорошо писать на худшемD, чем плохо на лучшемС

Pavel
29.01.2018
18:39:59
У меня не получилось с рантаймом построить рабочее расширение для php, а в betterC все построилось

Evgeny
29.01.2018
18:42:00

Pavel
29.01.2018
18:42:18
Так мы про дешный и говорим

Evgeny
29.01.2018
18:42:33
дык егоже можно переделать

Admin
ERROR: S client not available

Pavel
29.01.2018
18:42:38
И весит он.. как минимум 400кб а то и пару мегов

Evgeny
29.01.2018
18:43:06
я же писал свой микрорантайм с парой функций для МК

Pavel
29.01.2018
18:43:59

Evgeny
29.01.2018
18:44:41
беда дешки не в рантайме, а в ГЦ

Pavel
29.01.2018
18:45:31
Я типа говорю что это надо здесь и сейчас рабочее и с документацией, а не "теоретически возможно"

Oleg
29.01.2018
18:45:32

Evgeny
29.01.2018
18:46:13

Google

Pavel
29.01.2018
18:46:23
betterC есть и он прекрасно работает как заявлено, можно реально использовать
Вот почему про него все говорят

Evgeny
29.01.2018
18:46:57

Pavel
29.01.2018
18:47:32
Получаются реальные рабочие бинарники по 24кб, рабочие библиотеки с c-библиотеками линкующиеся и все остальное добро

Evgeny
29.01.2018
18:48:56

Oleg
29.01.2018
18:50:12
А речь то о чём вообще? То что один человек использует одно, а другой не согласен с его подходом?
Кто-то на что-то влияет сильно?
Или кто-то кому-то мешает?

Maxim
29.01.2018
18:51:53
мне кажется, пора переводить статью Уолтера про БеттерСи и класть ее в duseful
как разгребусь с текучкой, может быть, попробую

Oleg
29.01.2018
18:52:18
А что в его статье такого?

Maxim
29.01.2018
18:52:38
ну он объясняет там, зачем вообще придумал этот самый BetterC

Oleg
29.01.2018
18:52:49
Мне кажется здесь сейчас спорили те, кто достаточно хорошо осведомлен

Pavel
29.01.2018
18:52:52
Она уже переведена на хабре
Но там вроде есть немного неточностей в переводе

Oleg
29.01.2018
18:53:28
И раньше времени она была
Резонанс профукан

Maxim
29.01.2018
18:53:47
насколько помню, там в плюсах — встроенные юнит-тесты, что, мягко говоря, не совсем правда)

Oleg
29.01.2018
18:53:51
Что Брайт что перевод рановато были

Maxim
29.01.2018
18:54:26
штука-то крутая для своей ниши, но постоянно появляются срачи на тему, зачем оно вообще, и почему там кучу всего дропнули

Pavel
29.01.2018
18:54:37
Сейчас действительно рантайм тесно связан с gc, что делает трудным его эффективное использование.

Oleg
29.01.2018
18:54:54