
Evil
05.02.2018
13:30:18

Pavel
05.02.2018
13:31:00
Так это ты обсасываешь, я то фикс сделал за час просто )
Ну да, опыт неравномерный. Про сетевое и рейс кондишены всякие мне универских знаний хватает.
А сборка проекта это тулинг и сильно зависит от имплементации

Google

Pavel
05.02.2018
13:35:21
Кстати, я сделал воркэраунд который позволяет обойти все эти замутки с leastSize и плюс ко всему избежать дополнительного копирования в буфер

Evil
05.02.2018
13:36:43

Pavel
05.02.2018
13:36:51
while (src.waitForData()) {
chunk = src.peek().length;
debug logTrace("Read src chunk %d", chunk);
dst.write(src.peek());
src.skip(chunk);
}
пишем сразу из буфера, и пропускаем прочитанное )

Evil
05.02.2018
13:37:13
Что пик даёт?
Это указатель на буфер фиксированного размера?
Т.е. возвращает

Pavel
05.02.2018
13:38:56
Да, это внутренний буфер TCPConnection
слайс на ту часть которая всегда заполнена

Evil
05.02.2018
13:39:25
А его размер какой?

Pavel
05.02.2018
13:39:50
Это слайс динамический, его размер .length и он всегда заполнен данными

Evil
05.02.2018
13:39:59
Почему тогда, лист сайз не возвращает его размер?

Google

Pavel
05.02.2018
13:40:14
Потому что это бага
Блин ты вообще смотрел мой ПР ? :D
Я же эту херню там и пофиксил

Evil
05.02.2018
13:40:56
Не смотрел)
Уже больше месяца свободного времени/сил нет ((
Но ща попробую взяться за камп

Pavel
05.02.2018
16:44:15
Мдэ конечно когда идет речь о гибкости и расширяемости, то структуры начисто сливают классам :(

Evgeny
05.02.2018
17:03:13
миксины и статический полифморфизм тоже весьма неплохие вещи

Pavel
05.02.2018
17:04:08
И как ты переопределишь методы и поля в структуре TCPConection? =)
Ничего уже никуда не подмиксинишь

Evgeny
05.02.2018
17:04:51
или через std.typecons.Proxy, но обычно alias this

Pavel
05.02.2018
17:06:29
Я тут пробовал на днях извращаться, делал юнион, одна структура из вайба, а другая структура накладывалась моя с другими методами. Но как-то оно не заработало.

Evgeny
05.02.2018
17:06:56
зачем нужен юнион?
в данном случае
нужена структура которвя косит под TCPConnection
так называемая утинная типизация
проще всего в обертку и alias this
struct MyTCPConnection {
TCPConnection conn;
alias conn this;
// переопределяем что угодно
}

Google

Pavel
05.02.2018
17:09:25

Evgeny
05.02.2018
17:09:43

Pavel
05.02.2018
17:10:03
Это просто кто-то не должен был делать private поля ??

Evgeny
05.02.2018
17:10:45

Pavel
05.02.2018
17:10:53
Ну в итоге я отказался от всей этой затеи, уж слишком хакично выглядело. Юнион с перезаписью приватного поля ?

Evgeny
05.02.2018
17:11:20
проще форкнуть убрав приватность

Igor
05.02.2018
17:27:01
а для классов переопределение полей через alias this тоже работает?
хотя там и так можно, туплю

Evil
06.02.2018
00:31:18
Комментарий дня:
// Call the Webservice again with a null Dataset to clear the buffer
Линейный клиент на сервере вручную управляет памятью. Премию тому, кто это написал.

Pavel
06.02.2018
07:26:26
?

Oleg
07.02.2018
09:13:30
кто-то говорил что мало контейнеров https://github.com/dlang-community/containers

Igor
07.02.2018
09:43:55
говорили что ент контейнеров для betterc. эти годятся?

zk
07.02.2018
09:57:18
Вот думаю,алексанлреску стоит читать или уже безнадёжно протухла?
есть еще какой-то фреймворк MVC, обертка над vibe, название не помню
Чем дело с переводом книги Али кончилось?
1)читать надо обязательно
2)diamond вроде
3) перевод пока очень слоупочный*
@adhoc - должен был взять основную работу по переводу на себя, что собственно и сделал
он перешел на хаскелл, но на перевод не забил
в ближайшее время перевод книги ускорится

Google

Pavel
07.02.2018
11:47:11
Я попробовал написать динамический буфер для betterC но даже такая задача весьма сложна, если брать в расчет параллелизм и асинхронность.
В конечном счете это вопрос о том в какую сторону растет экосистема. Как было замечено в многостраничных срачах на форуме, у D нету какой-то выраженной ниши и сообщество растет спонтанно и в разные стороны. В этой ситуации возможно betterC был бы удобен для тех кто пишет или портирует программы/библиотеки на си


Igor
07.02.2018
11:53:05
ну Уолтер прямо говорит зачем нужен betterC - для того что-бы можно было брать сишный код и переписывать его в дишный синтаксис. потом когда код перенесен - можно начинать юзать и рантайм. Я тоже betterC не использую, поскольку пока нет задачи вписывающейся в эту схему.
т.е. выглядит как инструмент для конкретной задачи насколько японимаю

Pavel
07.02.2018
11:55:35
Практические задачи, особенно в вебе например, довольно типичны - взять и написать расширение к nginx/php/postgres

Maxim
07.02.2018
11:56:18
плагин для deadbeef — моя задача на ближайшее время, например)

Pavel
07.02.2018
11:56:31
Ну и наверняка еще ко многим тулзам тоже можно писать расширения на си. Но как я понимаю если не требовать у итогового расширения размер в 100кб максимум, то туда можно нормально подтянуть рантайм и пусть он там крутится себе.

Maxim
07.02.2018
11:57:41
в случае с deadbeef хорошо бы было заюзать полноценную надстройку над dbus, но тогда плагин получится размером больше, чем сама программа, не спортивно)

Admin
ERROR: S client not available

Maxim
07.02.2018
11:57:57
так что, задача вполне для bettecC
ну и таких задач, на самом деле вагон и маленькая тележка

Evgeny
08.02.2018
10:44:36

Pavel
08.02.2018
10:49:34
Если честно, я не знаю :) но для меня рантайм тесно связан с gc что недопустимо

Maxim
08.02.2018
10:49:46
мне кажется, вопрос задавать нужно немного подругому: а можно ли эт сделать без стандартной библиотеки и GC)
поскольку betterC, как некий дух имманентно присутствует в любой программе, написанной на D)

Pavel
08.02.2018
11:00:32
Как минимум будут встречаться разные костыли и трудности. Вот пытался я собрать расширение с рантаймом. Он мне говорит - не могу найти символ d_symbol или чето там. Что это значит? Это значит что рантайм надо слинковать в расширение статически. А еще это значит что если мы напишем 10 расширений к проекту и все подключим их, то будет у нас проект с 10 дишными рантаймами.

Evgeny
08.02.2018
11:08:56

Pavel
08.02.2018
11:10:00
@nogc
Так он тебе просто выдаст ошибку что какая-то функция внутри may throw, и все.

Google

Evgeny
08.02.2018
11:10:26

Pavel
08.02.2018
11:10:57
Ну например writeln из стандартной бибилотеки may throw
И получается что почти ничего использовать нельзя

Evgeny
08.02.2018
11:11:20
дык в betterC тоже самое

Pavel
08.02.2018
11:11:32
Не, там же нельзя все это юзать :)

Evgeny
08.02.2018
11:11:51
ну и здесь нельзя, в чем разница-то?

Pavel
08.02.2018
11:12:06
Зачем тогда нужен рантайм, чем он помогает?
Если в нем ничего нельзя

Evgeny
08.02.2018
11:12:43

Pavel
08.02.2018
11:13:19
Я уже перечислил чем он мешает. Лишние библиотеки в линковку, лишние мегабайты в расширениях, лишний мусор.

Evgeny
08.02.2018
11:13:43

Pavel
08.02.2018
11:13:49
А расскажи как
Своим аллокатором создавать объект?

Evgeny
08.02.2018
11:14:22

Pavel
08.02.2018
11:14:51
А если на catch не ловить, то не получится?

Evgeny
08.02.2018
11:14:54

Pavel
08.02.2018
11:15:36
А хотя.. Главное поймать хотя бы на верхнем уровне, и тогда можно почистить, верно?

Evgeny
08.02.2018
11:15:44
а так nogc и nothrow - получается тот же betterC

Pavel
08.02.2018
11:17:37
То есть твоя идея в том что
1) можно построить свою иерархию поверх Throwable с кастомными аллокаторами
2) если исключение нигде не ловится то программа падает и тогда уже нет смысла заморачиваться с чисткой мусора

Evgeny
08.02.2018
11:18:36