@dlangru

Страница 377 из 719
Maxim
09.01.2018
12:41:21
и с @safe @trusted @system тоже, кстати, система стройная, но проблема в том, что часто в @trusted заворачивают не мост между @safe и @system, а любой неоттестированный код

Evgeny
09.01.2018
12:41:26
но это мелочи. написать свой runTask, в котором уже вызвать вайбовский в обертке try..catch

Pavel
09.01.2018
12:42:09
Ну если в таске не перехватить исключение, то оно просто писало в лог, что такой-то таск внезапно сдох и продолжало работать и дальше. Меня такой вариант устраивал.
Ну кстати, это тоже не есть хорошо. Хочется чтобы стек вызовов нормально логировался у исключения, а то получается какая-то урезанная версия.

И все время писать свое - это надоедает. Неужели об это Людвиг не подумал сам.

Google
Pavel
09.01.2018
12:43:22
Вот кстати логинг он сделал круто - debug сообщения выводятся малозаметным серым цветом, critical - белым на красном фоне, а fatals прямо мертвячно черным на красном.

Maxim
09.01.2018
12:43:36
кстати, есть у меня подозрение, что nothrow затесался там потому, что vibe сейчас активно избавляется от GC там, где может

Evgeny
09.01.2018
12:44:08
а мне не хватало уровней логгирования, я свой логгер написал, вайбовские логи перенаправил в него.

Maxim
09.01.2018
12:44:23
и упирается в то, что на этапе становления, и язык, и стандартная библиотека опирались на GC как на часть языка

Pavel
09.01.2018
12:45:46
и упирается в то, что на этапе становления, и язык, и стандартная библиотека опирались на GC как на часть языка
Оно может и к лучшему было, надо просто было постараться и допилить. Вот в гошечке же нету с этим проблем. Все пользуются и в ус не дуют.

Evgeny
09.01.2018
12:45:51
Короче, ты пиши свою проксю, на вопросы по вайбу я могу ответить. Почти на любые, кроме по очень уж глубокому устройству.

Pavel
09.01.2018
12:46:24
Я даже не знаю теперь, использовать мне дальше ее или как-то писать низкоуровнево через libevent на betterC

Maxim
09.01.2018
12:47:01
Оно может и к лучшему было, надо просто было постараться и допилить. Вот в гошечке же нету с этим проблем. Все пользуются и в ус не дуют.
Ну щито поделать, не так много фуллтайм разработчиков над D трудится, чтобы он обскакал гошечку

Maxim
09.01.2018
12:47:35
да и вообще, «системный» язык со сборкой мусора — это слегка странновато

Evgeny
09.01.2018
12:48:13
Pavel
09.01.2018
12:48:33
Google
Evgeny
09.01.2018
12:48:45
Александреска просчитался

Maxim
09.01.2018
12:48:55
но оно каг-бэ с опциональной сборкой мусора.
с опциональной — это C++, где можно взять библиотеку и использовать GC, а можно и не брать)

а когда, чтобы отнаследоваться, сделать замыкание или выбросить исключение, нужно обязательно задействовать сборку мусора, это уже не опционально

Evgeny
09.01.2018
12:49:35
а когда, чтобы отнаследоваться, сделать замыкание или выбросить исключение, нужно обязательно задействовать сборку мусора, это уже не опционально
не делай замыкания с аллокацией, исключения кстати грозят сделать nogc, если экспепшн не утекает за пределы catch

Maxim
09.01.2018
12:51:26
да вообще весь язык движется в сторону отказа от сбокри мусора по максимуму

но изначально GC был неотъемлемой частью языка, теперь вот расхлебываем и превозмогаем)

опять же, щито поделать, нужно исходить из того, что есть сейчас)

raii в BetterC уже отличная штука, можно красиво писать некоторые системные штуки

Evgeny
09.01.2018
12:53:41
А заем GC для наследования?

Maxim
09.01.2018
12:54:04
затем, что наследоваться могут только классы, а классы выделяются в куче с помощью GC

Pavel
09.01.2018
12:54:31
А есть же ручной аллокатор классов

Evgeny
09.01.2018
12:54:34
затем, что наследоваться могут только классы, а классы выделяются в куче с помощью GC
С чего бы это? Я могу память под класс обычным malloc выделить

Maxim
09.01.2018
12:54:46
это уже превозмогание)

говорю же, расхлебываем и превозмогаем)

Evgeny
09.01.2018
12:55:46
потому что александреска выпилил оверлоад new и delete в вечном депрекейшене висит.

вообще, смешно как-то получается, с одной стороны изо всех сил делаем все как в сяшке, и тут же GC пихаем.

RC видите ли небезопасно, а приводить по умолчанию знаковое целов в беззнаковое даже без предупреждения - это норм

qwerty
09.01.2018
12:58:09
без GC быстро и просто прикладные задачи будет сложнее решать

ваш кэп

Google
Ievgenii
09.01.2018
12:58:30
Ievgenii
09.01.2018
13:00:58
Больше разговоров, чем тех проблем. Не создавайте объекты через new, сделайте фабрику и вперёд. Конечно, это не избавит вас от СМ, но минимизирует его.

qwerty
09.01.2018
13:00:59
только не в D
может расскажите почему?

Ievgenii
09.01.2018
13:01:18
А в той фабрике сами выделяйте и управляйте памятью

Evgeny
09.01.2018
13:01:42
Проблема не в создании, а том что придется следить за временем жизни.

Evgeny
09.01.2018
13:02:05
может расскажите почему?
Потому что от дешного GC больше проблем, чем пользы

qwerty
09.01.2018
13:02:48
аа, в этом ключе...

Ievgenii
09.01.2018
13:02:54
qwerty
09.01.2018
13:03:21
Чего?
без new их не создать

Ievgenii
09.01.2018
13:03:21
Файбы же структуры

Evgeny
09.01.2018
13:03:40
Файбы же структуры
Нет, это классы

Но создать их таки можно и без new

Ievgenii
09.01.2018
13:04:00
Финализированный?

Evgeny
09.01.2018
13:04:16
Нет

qwerty
09.01.2018
13:04:26
а как?

Ievgenii
09.01.2018
13:04:39
Так унаследуйся тогда

Pavel
09.01.2018
13:04:51
emplace вроде есть такая тема

Ievgenii
09.01.2018
13:04:52
И юзай свои

Google
Evgeny
09.01.2018
13:05:02
Так унаследуйся тогда
Это ты кому сейчас говоришь?

Ievgenii
09.01.2018
13:05:25
Ну файбы

Pavel
09.01.2018
13:05:28
а как?
Создаешь кусок памяти через malloc, а потом через emplace в нем инстанциируешь объект. И получается без new

qwerty
09.01.2018
13:06:03
ну ладно(

Evgeny
09.01.2018
13:06:08
Ну файбы
Что файбы?

Ievgenii
09.01.2018
13:06:37
Что файбы?
Наследоваться от них и использовать свой вариант

Evgeny
09.01.2018
13:08:05
Несколько лет назад один чувак рассказывал на форуме историю. Он писал игру и его не устроила производительность GC. Он взял и переписал рантайм так чтобы работа со встроенными массивами и классами шла через RC. производительность поднялась в несколько раз.

Ievgenii
09.01.2018
13:08:13
А вообще, был бы DI контейнер, таких проблем не было бы.

Evgeny
09.01.2018
13:08:48
Наследоваться от них и использовать свой вариант
Я просто не пойму, кому из участников этого канала ты даешь этот совет?

Admin
ERROR: S client not available

Ievgenii
09.01.2018
13:09:25
Evgeny
09.01.2018
13:09:41
А, ну ок.

Ievgenii
09.01.2018
13:10:55
что такое DI-контейнер?
Контейнер, в котором ты мапишь класс на интерфейс

И чтобы получить объект этого интерфейса, ты не пишешь new ..., а запрашиваешь его из/у контейнера

Evgeny
09.01.2018
13:11:59
DI - это dependency injection?

Pavel
09.01.2018
13:12:29
да

только я не понял при чем тут это)

Ievgenii
09.01.2018
13:12:56
Тогда можно заменить любую реализацию в фреймворке, без изменения кода самого фреймворка

Evgeny
09.01.2018
13:13:00
я вот тоже не понял

Google
Pavel
09.01.2018
13:13:32
Ты имеешь в виду подменить реализацию всяких GC штук?

Evgeny
09.01.2018
13:13:53
Ее и так можно подменить.

Ievgenii
09.01.2018
13:14:05
Как?

Evgeny
09.01.2018
13:14:10
рантайм переписать

Ievgenii
09.01.2018
13:14:14
Я о реализации

А не о СМ

Evgeny
09.01.2018
13:14:32
что есть СМ?

Ievgenii
09.01.2018
13:14:51
GC

Evgeny
09.01.2018
13:15:01
а, сборщик мусора

реализация new тоже лежит в рантайме

по сути сам new переписывать не нужно, оно само перенаправляет аллокации в GC

пишем свой GC, тем более сейчас в D можно переключать реализации GC

Ievgenii
09.01.2018
13:17:42
пишем свой GC, тем более сейчас в D можно переключать реализации GC
Ну тогда можно попробовать реализовать ГОщный СМ

Evgeny
09.01.2018
13:18:16
Ну тогда можно попробовать реализовать ГОщный СМ
Не получится. В ГО все скрыто от пользователя

Ievgenii
09.01.2018
13:18:46
Я это к тому, что если можно реализовать свой СМ

Evgeny
09.01.2018
13:19:17
можно, но эффективный и не текучий нереально из-за "системности" языка

касты, юнионы, жонглирование указателями не дают возможности нормально отслеживать ссылки

посему, нормальный GC для такого языка - это метод подсчета ссылок

Pavel
09.01.2018
14:10:35
https://dlang.org/phobos/std_experimental_allocator_building_blocks_free_list.html#.FreeList кто-нибудь юзал это?

https://wiki.dlang.org/Memory_Management#Free_Lists вот тут крутой лайфхак про free list )

По факту это пул объектов. Позволяет быстро переиспользовать уже созданные объекты, а в случае любых крешей и ошибок лишние объекты будут просто подчищены GC

Evgeny
09.01.2018
14:25:15
я юзал его

хорош для кучи одинаковых объектов, которые часто и быстро создаются и уничтожаются.

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