@dlangru

Страница 365 из 719
Dmitry
06.01.2018
08:49:41
да, привет

Evgeny
06.01.2018
08:49:59
я уже имею хороший опыт написания nogc кода вперемежку с GC - это жопа

полностью отказаться от GC - тоже жопа

половина фобоса отваливается

Google
Evgeny
06.01.2018
08:51:17
Те же самые умные указатели у нас есть же
А где у нас есть умные указатели?

RefCounted? которые умеют только структуры и не умеют классы и массивы?

Dmitry
06.01.2018
08:52:35
для начала они, дальше надо дописывать

сложно что-ли смартптр запилить?

конструктор, деструктор, шаблоны - все в наличии

Evgeny
06.01.2018
08:53:55
Не D
А какже вот это? - Невозможность писать долгоживущие нагруженные сервисы - это свойство D? - да

Igor
06.01.2018
08:54:15
ну если честно то классы и интерфейсы это тоже для перформанса та еще радость. с учетом расходов на проход по vtbl

поэтому я стараюсь и так всё делать через структуры

Dmitry
06.01.2018
08:54:45
а сравнивал перфоманс?

Evgeny
06.01.2018
08:55:31
конструктор, деструктор, шаблоны - все в наличии
К сожалению например для массивов, да, сложно. И багнутые деструкторы сильно мешают. Помню я там на форуме дланга кирпичи откладывал на эту тему :)

Evgeny
06.01.2018
08:56:04
Dmitry
06.01.2018
08:56:22
std.container.array - RC массив, давно присутствует

Google
Igor
06.01.2018
08:57:49
а сравнивал перфоманс?
на форуме была ветка большая об этом

со сравнениями

Evgeny
06.01.2018
08:59:29
std.container.array - RC массив, давно присутствует
Там даже не пахнет RC, ты о чем?

Dmitry
06.01.2018
09:00:13
А чем же еще там пахнет?

Evgeny
06.01.2018
09:00:43
чем угодно но там нет никакого RC

Dmitry
06.01.2018
09:02:07
http://dpldocs.info/experimental-docs/source/std.container.array.d.html#L414

Его можно туда-сюда копировать, он отслеживает число ссылок.

Evgeny
06.01.2018
09:04:57
хорошо согласен таки пахнет, но недостаточно. Например слайсы не являются полноценными массивами

Dmitry
06.01.2018
09:06:44
они и не должны, их можно считать borrowed view

Evgeny
06.01.2018
09:07:12
Ну вообще-то я имел ввиду максимально полноценную замену встроенным массивам

можно ли два слайса склеить в массив?

Я написал свой такой RC массив и для строк в частности

Но там все равно есть свои проблемы связанные с багами и с const/immutable

Dmitry
06.01.2018
09:10:07
а где с этим лучше? либо GC, либо такая вот боль и унижение

D тоже не идеален, совсем.

Потому использовать можно, но осторожно и с умом.

Evgeny
06.01.2018
09:11:24
Это вот не компилируется: https://glot.io/snippets/ex3qzout64

Даже банальный nogc JSON приходится пилить с уродскими небезопасными кастами

например Nim

Google
Dmitry
06.01.2018
09:12:58
В ниме GC

Evgeny
06.01.2018
09:13:12
ЕМНИП он сделан как раз на базе RC

ведь RC, внезапно, тоже GC ?

Dmitry
06.01.2018
09:13:49
Как и в PHP, Python и других

там везде RC+GC

Evgeny
06.01.2018
09:14:42
В ниме не RC + GC, там GC == RC

Также как и в ObjectC

Dmitry
06.01.2018
09:15:03
Это просто деталь реализации - во всех этих языках внутри RC + GC

Evgeny
06.01.2018
09:15:44
Ты так пишешь, как будто там GC - отдельно, а RC одельно :)

Dmitry
06.01.2018
09:16:00
Да, отдельный сборщик для циклов у них везде

Evgeny
06.01.2018
09:16:31
Детектор циклов, а в ObjectC его вроде нет, там сам где надо weak ставишь

Dmitry
06.01.2018
09:16:52
ага

Evgeny
06.01.2018
09:18:02
Так вот, если доделать тот DIP александрески для поддержки RC для классов, то работа с таким RC будет мало отличаться от работы с обычным GC

течь только перестанет и тормозить

Dmitry
06.01.2018
09:18:32
слайсы-то как будут?

Evgeny
06.01.2018
09:19:07
Для слайсов дипов нет.

Но я же сделал RC-массив - полноценная замена встроенным\

слайсы имеют тот же тип, что и сам массив

тормоза RC - это сказки, которые Уолтер всем рассказывает

Dmitry
06.01.2018
09:20:46
Ну и получится Ним. :)

Google
Evgeny
06.01.2018
09:21:22
Не получится Ним. Ним - это питонообразный язык

без шаблонов

Dmitry
06.01.2018
09:21:31
Я про рантайм

Шаблоны и метапрограмминг там же есть

синтаксис просто другой будет

Evgeny
06.01.2018
09:22:02
Метапрограмминг есть, шаблонов нет, скорее дженерики

там макросы есть, да

и что плохого если рантайм D ,будет аналогичен рантайму Nim?

тут что стоит задача обязательно отличаться от других? :)

Dmitry
06.01.2018
09:23:14
есть опасность потерять тесную совместимость с Си, и свойство fast-as-C

Admin
ERROR: S client not available

Dmitry
06.01.2018
09:23:41
когда у тебя везде RC, начинается FFI

Evgeny
06.01.2018
09:23:44
Не хочешь не используй RC, будет тебе fast-as-C

Совместимость с Си есть и у Nim

Можно подумать что GC - это fast-as-C ?

Dmitry
06.01.2018
09:25:23
не, только промежутки :)

в Пони забавно сделали - пока твой метод работает, никакого GC. А как актор закончил на текущее сообщение реагировать, тут-то сбощик и подчищает быстренько.

Evgeny
06.01.2018
09:29:37
Циклы сами по себе тоже редкий гость. Только слабые ссылки

Google
Evgeny
06.01.2018
09:30:51
Нет в жизни идеала. Но мое мнение, что лучше хорошо известные задокументированные проблемы с известными способами их обхода, чем расплывчатое "GC не идеален и может течь когда ему вздумается"

Dmitry
06.01.2018
09:35:40
По-хорошему, при поддержке компилятора сделать precise GC, который бы не тек, вполне можно (разве что с union'ами будет нужно что-то поделать). Он будет все еще медленный, но течь не будет. Просто никто для Ди его не сделал, и такими темпами в обозримом будущем не сделает.

Rainer в VisualD уже использует almost-precise GC, и можно пойти еще дальше

Evgeny
06.01.2018
09:36:33
Ага, скорость меня не так сильно волнует.

Dmitry
06.01.2018
09:37:06
А как же высоконагруженность и все такое?

Evgeny
06.01.2018
09:37:30
Масштабируем как надо, реюзаем уже саллоцированное и так далее

ведь пока я не аллоцирую/деаллоцирую GC не работает

Dmitry
06.01.2018
09:37:58
Имхо, для подобных сервисов языки со Stop the World вообще плохо подходят. Поэтому тот же эликсир больше подходит.

Evgeny
06.01.2018
09:38:34
Да-да, как раз хотел сказать, что надо еще и отдельный GC на каждый поток

Сдается мне правда, что это слишком большие изменения

поломается совместимость

Dmitry
06.01.2018
09:39:32
thread-local GC потребует переделки языка, да

Evgeny
06.01.2018
09:40:36
Имхо, для подобных сервисов языки со Stop the World вообще плохо подходят. Поэтому тот же эликсир больше подходит.
Да, я тоже так решил, что тут эрланг с его легкими процессами именно то что мне нужно

но для сервера игры эрланг уже сомнительный выбор ибо тормозной

Пони может быть то что надо, но сыротааа

Dmitry
06.01.2018
09:41:19
да

Ним, если б не сырость, мог подойти

Evgeny
06.01.2018
09:42:13
В ниме пока нет аналога файберов/корутин/горутин

есть Crystal

но там есть какие-то серьезные врожденные проблемы, да и GC такой же как в D

я кстати вайбд использую не столько для веба, сколько как шедулер для файберов и IO

альтернатив-то готовых нет

Dmitry
06.01.2018
09:44:26
Я недавно Kotlin Native запускал, он под виндой прямо удивительно легко раз и завелся. Но он пока в зародышевом состоянии.

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