
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 как на часть языка

Evgeny
09.01.2018
12:44:23

Pavel
09.01.2018
12:45:46

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

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

Maxim
09.01.2018
12:47:01

Evgeny
09.01.2018
12:47:02

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

Evgeny
09.01.2018
12:49:35

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

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

Evgeny
09.01.2018
12:59:14

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

qwerty
09.01.2018
13:00:59

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

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

qwerty
09.01.2018
13:01:54

Evgeny
09.01.2018
13:02:05

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
И чтобы получить объект этого интерфейса, ты не пишешь 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

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
я юзал его
хорош для кучи одинаковых объектов, которые часто и быстро создаются и уничтожаются.