@dlangru

Страница 527 из 719
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

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
правда не на betterc
Да, самый ближайший это libasync но даже он использует аллокации активно

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
Кстати а на betterC это распространяется?
Это на все распространяется. Если хочешь потыкать палочкой в неинициализированный указатель как в плюсах — есть конструкция «void* ptr = void;»

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

Pavel
18.04.2018
11:07:42
это на один вход в loop судя по всему
А может ты прав, но все равно не очень как-то

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
ну в общем попробуй

может я не туда копал

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
писать eventloop увлекательно
Может это, горутины имплементируешь лучше? :)

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? На гитхабе то и так можно сделать тег

Страница 527 из 719