@dlangru

Страница 679 из 719
Oleg
09.09.2018
14:39:20
она может архитектурно полагаться на gc

типа строки просто конкатенировать

где-то внутри

следовательно тебе снаружи нужно будет ей либо способ как-нибудь передать (аллокатор), либо что-то ещё

Google
Oleg
09.09.2018
14:40:48
в любом случае без изменения кода (а может и архитектуры) не получится

Dark
09.09.2018
14:41:06
а кто за этим проследит, если ты хочешь использовать либу в программе без gc?
Под совмещай я имел ввиду использовать nogc с ручным управлением памятью либы

Обратно, естественно, не получится

Oleg
09.09.2018
14:41:34
Под совмещай я имел ввиду использовать nogc с ручным управлением памятью либы
так вот не все либы представляют такую возможность

Denis
09.09.2018
14:41:37
Вы ещё мысленно держите что GC может быть встроен в ОС

спорное решение но может быть

Dark
09.09.2018
14:43:38
так вот не все либы представляют такую возможность
Придут nogc аналоги, если, конечно, они нужны будут

Denis
09.09.2018
14:43:51
они могут быть хуже или лучше, вот в чём фокус

не факт что освобождать память сразу это выгодно

иногда надо или рычаги снаружи для этого оставить или gc юзать (что проще)

Oleg
09.09.2018
14:44:19
вообще gc не зло, а просто инструмент, которым тоже нужно уметь пользоваться, тогда он не будет проблемным местом программы

Google
Denis
09.09.2018
14:45:49
ну да. И как предельный случай есть GC в Java который НЕ освобождает память, а просто её заполняет, после чего приложение убивается.

для всяких контейнеров отлично подходит. Затрат на GC ноль, в обмен на память

Dark
09.09.2018
14:47:06
Denis
09.09.2018
14:52:24
GC не может быть написан хорошо

потому что это стратегия, а она бывает разная

Короч, мы не знаем как писать эффективные программы

всё это - искусство пока ещё

Pavel
09.09.2018
14:54:36
Тем временем GTA5 с 17 гб данных идёт на ps3 c 256мб озу и не крешится.

Oleg
09.09.2018
14:55:08
Maxim
09.09.2018
14:55:16
GTA, кстати, начиная с 3 — адски глючная жесть

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

Ievgenii
09.09.2018
14:55:47
Пошел срач

Denis
09.09.2018
14:56:05
Тем временем GTA5 с 17 гб данных идёт на ps3 c 256мб озу и не крешится.
Ну так она писалась не как универсальный код

железо было точно известно

а когда ты пишешь под ПиСи ты даже не знаешь сколько памяти будет и какая у неё скорость

Pavel
09.09.2018
14:57:04
Думаю, там только параметры движка подкручивали.

SR_team
09.09.2018
14:57:10
вапщет знаешь. Стим тебе дает достаточно точную инфу

Denis
09.09.2018
15:03:37
ну как точную, слишком большой разброс всяких таймингов

на приставках раньше вообще не парились и синхронизирвоали игры просто подсчётом тактов

Google
Igor
09.09.2018
15:12:05
Есть пара make/dispose для размещения/удаления

Имхо это всё что нужно

Могу заблуждаться

Denis
09.09.2018
15:23:44
Есть пара make/dispose для размещения/удаления
иногда выгодно блобы сбивать в кучку и перемещать

зависит от ОС

и процессора

и неба и аллаха

Igor
09.09.2018
16:09:30
иногда выгодно блобы сбивать в кучку и перемещать
Ну есть всякие очень специфические запросы конечно, но это не каждому нужно.

Denis
09.09.2018
16:14:39
дык в том и дело что задачи все разные

Pavel
09.09.2018
19:52:31
Что-то мы давно не обсуждали betterC

Я вот тут столкнулся с дилеммой. Есть у меня проектик на betterC, очень очень быстро работает и итоговый бинарник весит 35кб. А если libc слинковать статически, все ужать и почистить от лишних символов, то получится 65кб. Красотища.

И захотел я добавить в программу опцию - в командной строке указать имя файла параметром, а в программе прочитать из этого файла ip адреса и фильтровать по ним трафик. И тут оказалось что betterC сильно убог. Я начал копать на тему парсеров cli аргументов и даже писать свой велосипед, нашел getopt и getopt_long на С, но там все так по наркомански сделано. Сначала надо указать массив опций, потом результат возвращается в виде индексов заданных опций и т.д.

Pavel
09.09.2018
19:56:55
И тут я подумал, а так ли уж плохо использовать рантайм D. Да бинарник будет весить под мегабайт, а не 65кб ну и что. Зато я могу удобно организовать парсинг параметров командой строки и чтение ip адресов из файла буквально за 40 строк. профит!

Igor
09.09.2018
20:07:00
))))

Denis
09.09.2018
20:09:34
@chebotarevp надо было полезный код компилить в betterC и остальное в обычном виде, а потом слинковать

Pavel
09.09.2018
20:12:50
Сделать типа so ? Хорошая идея

Я думал сделать 2 сборки, одна betterc с урезанным базовым функционалом, другая полноценная со свистелками и перделками вроде задания списка ip из файла.

Получится программа а внутри у нее betterc ядро, которое работает так же быстро и является nogc

Ievgenii
09.09.2018
20:24:51
Сделать типа so ? Хорошая идея
Я последнюю неделю перед отпуском именно с этим и игрался

Идея сделать какую-то уникальную апликуху, задача которой всего-то подключать разные *.so файлы, которые указываются в конфиг файле

Google
Ievgenii
09.09.2018
20:26:11
А все остальное уже в самих библиотеках делать

Pavel
09.09.2018
20:26:13
У нас на работе проект на C#, там солюшены так и сделаны. Компилируется отдельно несколько библиотек, и все они потом подключаются в маленький запускальщик.

Pavel
09.09.2018
20:26:48
И можно пересобрать каждый отдельный солюшен независимо.

И как? Практично?
Ну вроде как да, но я особо не распробовал, на всякий случай я пересобираю все модули всегда.

Но думаю что если большой проект у которого десятки so модулей, то такая архитектура может сильно сэкономить время сборки.

Ievgenii
09.09.2018
20:27:59
У меня основная проблема сейчас то, что сам луп тоже в такой либе

И выходит, что как только я попаду на запуск этого лупа, я теряю управление, т.к. это блокирующая операция. А следовательно, я не могу запустить оставшиеся расширения.

Admin
ERROR: S client not available

Ievgenii
09.09.2018
22:32:36
Если, скажем, луп окажется 5м из 20ти

То первые 4 я запущу, потом запустится сам луп

А вот оставшиеся расширения уже тютю...

Вот и думаю пока над этой проблемой

Pavel
09.09.2018
22:37:13
А зачем стараться все вынести в библиотеки? это не самоцель. пусть луп идет как часть встроенного приложения.

Ievgenii
10.09.2018
03:39:31
Или вообще его не использовать

Скажем мне больше подходит луп на базе ЛибАсинк, а другому ЛибЕвент, ЛибЕв или что-то другое...

И с таким подходом можно либо писать как в БетпрСи режиме, так и в простом. Ну или вообще на С/С++

Или том же Паскале

Google
Oleg
11.09.2018
14:53:01
у кого-нибудь есть понимание зачем засунули код на С в phobos? https://github.com/dlang/phobos/search?l=c

Igor
11.09.2018
14:55:55
думаю что-бы не возиться долго с тонкими вещами типа gzip, compress и прочее такого типа

Pavel
11.09.2018
14:56:20
Там в коммитах комментарии про Curl Option и zlib. Было просто лень переписывать zlib на d чтобы заработал curl и решили сишную включить

Igor
11.09.2018
14:56:38
да, логично

Oleg
11.09.2018
14:56:46
ну как-то это дно

при кросскомпиляции особенно

Pavel
11.09.2018
14:57:26
Ну а что деать, никто не будет переписывать zlib, а curl должен работать

Igor
11.09.2018
14:58:21
хз, по идее оно может брать либы из системы

но видимо это не всюду прокатывает

Valeriy
11.09.2018
16:23:29
у кого-нибудь есть понимание зачем засунули код на С в phobos? https://github.com/dlang/phobos/search?l=c
Там сжатие и хеш. Лень было переписывать. УЖе протестированный работающий код.

qwerty
11.09.2018
18:09:39
Привет всем. Кто знает как сделать исполняемую shared library в linux? Библиотека glibc может быть исполняемая. И как я заметил она ни одна, но она при запуске срабатывает, а не выдает segfault

/lib/libc-2.28.so вот файл меня заставил задаться вопросом

а все нашел

Igor
11.09.2018
18:33:04
Ну а что деать, никто не будет переписывать zlib, а curl должен работать
Вот это кстати первые кандидаты на применение betterc

Pavel
11.09.2018
19:02:25
Да. Но это скучно поэтому никто не будет заниматься переписыванием zlib )

Oleg
11.09.2018
20:02:59
Да. Но это скучно поэтому никто не будет заниматься переписыванием zlib )
меня этот момент достаточно сильно раздосадовал, думал даже попробовать)

Igor
11.09.2018
20:07:29
есть статья Уолтера где он описывает все шаги по конвертации какой-то либы. у него там получалось всё достаточно легко

Pavel
11.09.2018
20:09:02
если бы были юнит тесты то можно попробовать коллективно портировать по кускам. А вдруг там какой то копирайт?

Dmitry
11.09.2018
23:36:05


Тоже самое верно про ди

Pavel
11.09.2018
23:36:36
божечки как же достал этот twitchapid релизиться, его автор наркоман какой-то. За 2 недели сделал 18 релизов. Просто помешаный.

Maxim
12.09.2018
02:09:50
Кстати, с kotlin-native на днях поигрался — весьма приятный язык, оказывается)

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