
Denis
18.04.2018
03:28:14
хз как вы сейчас умудряетесь получать такой текст
вроде уже везде оно выдаётся нормально
gdb поддерживает этоже

qwerty
18.04.2018
03:46:33
https://github.com/ANtlord/gdb-ddemangle плагин запилил для gdb

Google

Denis
18.04.2018
03:48:22
погодите, он вроде из коробки умеет? или я с ddd путаю

qwerty
18.04.2018
03:53:22
GDB не умеет
по крайней мере не один раз видел сообщения про нечитаемое именование в backtrace

Denis
18.04.2018
03:54:58
вроде бы это пофиксили, год примерно как
может ошибаюсь, как-то уже привык читать такое глазами

qwerty
18.04.2018
03:57:03
GDB пофиксили? В какой версии, не помните?

Denis
18.04.2018
03:59:26
ошибаюсь наверно

Stepanos
18.04.2018
04:18:47
Роскомнадзор уже заблокировал 4.6 млн ІР адресов, осталось еще 4 миллиарда (с) СотникТВ
шарят же шутить))

Stanislav
18.04.2018
04:20:10
щас 16 млн

Stepanos
18.04.2018
04:25:24
значит меньше 4 млрд)) не оперитивная инфа

Stanislav
18.04.2018
04:25:57
вчера почти до 20 млн дотянули, но потом пару сетей амазона вынесли :)

Denis
18.04.2018
04:27:56
сейчас опять кое-где не работает с телефона

Google

Dmitry
18.04.2018
04:38:00
https://www.rbc.ru/technology_and_media/18/04/2018/5ad686b09a79471d3d5fa03a

Dark
18.04.2018
06:51:46

Dmitry
18.04.2018
10:48:43

Pavel
18.04.2018
10:49:35

Dmitry
18.04.2018
10:50:07
скорее всего, но не смотрел

Pavel
18.04.2018
10:51:44
Я снова хочу betterc )
Даже начал писать eventloop

Igor
18.04.2018
10:54:24
еще один? )))
я уже третий пилю. каждый следующий лучше предыдущего
правда не на betterc

Stepanos
18.04.2018
10:55:22
:)) ето для многопоточности?

Dmitry
18.04.2018
10:55:40
в три раза быстрее будет!

Igor
18.04.2018
10:56:19
eventloop - для асинхронности в пределах одного треда, плюс возможность обмена между тредами
писать eventloop увлекательно

Pavel
18.04.2018
10:59:45
nogc eventloop не сделали еще

Igor
18.04.2018
11:00:22
я старюсь emsi контейнеры где возможно юзать

Pavel
18.04.2018
11:04:38
https://github.com/etcimon/libasync/blob/ffbc5ee5e001c984f20dc4eed02b8288774eec7d/source/libasync/posix.d#L298 у меня вот от этого бомбануло
На каждую итерацию цикла аллокация

Google

Max
18.04.2018
11:06:39

Igor
18.04.2018
11:06:43
это на один вход в loop судя по всему

Pavel
18.04.2018
11:07:42

Dmitry
18.04.2018
11:08:11
Даже не на один, а только на первый вызов.

Pavel
18.04.2018
11:08:13
Что мешает просто написать buf[128] buffer :)

Dmitry
18.04.2018
11:08:20
Статическая переменная там.
Если на стеке держать, это много стека отъест и при каждом входе инициализировать
А так это единожды аллоцируется и все

Pavel
18.04.2018
11:09:50
Всмысле при каждом входе инициализировать?
Я имею в виду в package struct EventLoopImpl где-нибудь этот буфер объявить

Dmitry
18.04.2018
11:11:26
Я думал, предлагалось так написать в теле ф-ии.

Pavel
18.04.2018
11:11:57
Ну как вариант, но вообще можно в большинстве случаев там обойтись компайл-тайм буферами

Igor
18.04.2018
11:32:37
имхо сделать eventloop без аллокаций всяких необходимых структур (на самом деле классов) невозможно. главное любые крупные и частые аллокации делать не из GC

Pavel
18.04.2018
11:34:10
> (на самом деле классов)
почему именно классов?

Igor
18.04.2018
11:44:05
у меня не получилось со структурами, может у тебя получится. проблема такая - например ты хочешь иметь обработчики событий на сокетах, файлах, таймеры и т.д. По сути это разные типы. Но очень грубо говоря - всё что ты можешь отправить в ядро для того что-бы потом найти обработчик события это указатель. А в самом худшем случае всё что ты получаешь из ядра это fileno и тип события (готовность чтения, записи и т.д.) из этой информации нужно получить указатель. Из-за того что у структур нет наследования я не смог собрать их во что-то вменяемое
если пишешь eventloop нужно пораньше начать его портировать на планируемые платформы потому что они дают очень разные возможности, а хочется иметь единый интерфейс

Pavel
18.04.2018
11:45:22
О я вчера как раз копал libasync под это дело
Ну я пишу пока только под линукс и там эта проблема очень элегантно решена
В epool когда регистрируешь свой fd на обработку, можно еще в структуре передать указатель void*
Это называется userdata

Google

Pavel
18.04.2018
11:46:55
Туда идеально пихать указатель на структуру или класс который обрабатывает данный конкретный сокет.

Stanislav
18.04.2018
11:47:35
eventloop на betterc был бы оч интересен )

Igor
18.04.2018
11:47:37
на класс да

Pavel
18.04.2018
11:48:04
Когда на fd случается событие, просто идешь в структуре epoll_event в место что-то типа epoll_event.events.data и кастуешь указатель к (EventInfo*), а дальше уже обрабатываешь как тебе нужно.

Igor
18.04.2018
11:49:22
ну в общем попробуй
может я не туда копал

Pavel
18.04.2018
11:51:13
Там все гораздо геморнее

Igor
18.04.2018
11:51:35
kqueue вполне хороший
кастуешь указатель к (EventInfo*) если EventInfo это структура то у тебя она должна быть одинакова для всех типов обработчиков. Так?

Admin
ERROR: S client not available

Pavel
18.04.2018
11:53:25
Да

Igor
18.04.2018
11:53:25
это ж не класс с наследованием/полиморфизмом

Pavel
18.04.2018
11:54:06
https://github.com/etcimon/libasync/blob/ffbc5ee5e001c984f20dc4eed02b8288774eec7d/source/libasync/posix.d#L3471 вот эта структура, а чуть выше смотри union с разными обработчиками
Когда приходит событие, то мы знаем какого оно типа и можем дернуть соответствующий обработчик
Получается почти тот же статический полиморфизм

Igor
18.04.2018
11:58:34
понятно. юнионы не люблю тк с ними @safe не согласуется

Maxim
18.04.2018
12:06:17
да по сути @safe — это чисто условность

Igor
18.04.2018
12:06:52
не, наступал когда помогало избежать глупостей
так он их всё равно аллоцирует https://github.com/etcimon/libasync/blob/ffbc5ee5e001c984f20dc4eed02b8288774eec7d/source/libasync/posix.d#L2716

Google

Igor
18.04.2018
12:48:20
только делает через кастомный аллокатор

qwerty
18.04.2018
12:48:41
@chebotarevp eventloop можно посмотреть? Код доступен? Может есть с чем помочь?

Pavel
18.04.2018
12:49:09
Не, пока все в глубокой альфе

qwerty
18.04.2018
12:49:15
я кстати думал, что vibe-core предоставляет эффективный eventloop

Pavel
18.04.2018
12:50:13
Ну он довольно эффективный в рамках обычного D рантайма с GC
Но если хочется еще более лютого и чтобы бинарник весил 20кб то он не годится

qwerty
18.04.2018
12:52:39
аа понятно

Denis
18.04.2018
12:53:11

Pavel
18.04.2018
12:53:44
Горутины сложновато

Igor
18.04.2018
12:54:48
насколько понимаю что-бы их правильно сделать нужно хорошо уметь двигать делегаты между тредами

Pavel
18.04.2018
12:55:49
Мало того, надо еще всю стандартную библиотеку переписать под асинхронный io
Иначе будешь вызывать в горутине синхронный writeln и все заблокируется. В общем очень много работы

qwerty
18.04.2018
13:00:05
а у нас есть какая-нибудь либа с умными указателями для BetterC?

Pavel
18.04.2018
13:00:43
Вроде ниче такого нет
Голое поле

qwerty
18.04.2018
13:00:59
=)

Pavel
18.04.2018
13:01:09
На betterc вообще любых репозиториев можно посчитать по пальцам

qwerty
18.04.2018
13:01:10
не жопа, а широкое окно возможностей)

Igor
18.04.2018
13:04:29
широкая жопа возможностей )

Denis
18.04.2018
13:26:23

Pavel
18.04.2018
13:30:06
Да в виде отдельного тега betterc

Denis
18.04.2018
13:31:24
а чо, вбросить надо в issues

Pavel
18.04.2018
13:35:48
В чье issues? На гитхабе то и так можно сделать тег