
Oleg
09.09.2018
14:39:20
она может архитектурно полагаться на gc
типа строки просто конкатенировать
где-то внутри
следовательно тебе снаружи нужно будет ей либо способ как-нибудь передать (аллокатор), либо что-то ещё

Google

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

Dark
09.09.2018
14:41:06
Обратно, естественно, не получится

Oleg
09.09.2018
14:41:34

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

Dark
09.09.2018
14:43:38

Denis
09.09.2018
14:43:51
они могут быть хуже или лучше, вот в чём фокус
не факт что освобождать память сразу это выгодно
иногда надо или рычаги снаружи для этого оставить или gc юзать (что проще)

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

Dark
09.09.2018
14:45:21

Google

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

Dark
09.09.2018
14:47:06

Ievgenii
09.09.2018
14:52:13

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
железо было точно известно
а когда ты пишешь под ПиСи ты даже не знаешь сколько памяти будет и какая у неё скорость

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
зависит от ОС
и процессора
и неба и аллаха

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 файлы, которые указываются в конфиг файле

Google

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

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

Ievgenii
09.09.2018
20:26:23
Луп, веб сервер

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

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

Igor
11.09.2018
18:33:04

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

Oleg
11.09.2018
20:02:59

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 на днях поигрался — весьма приятный язык, оказывается)