qnikst

блин си сегодня отстрелило мне ноги. В общем как может быть такое, что при убирании inline у static void функции все неожиданно ломается (мусор в структуре данных, в итоге segfault), gdb не отловить, т.к. мусор там появляется непонятно когда, во всяком случае пишут туда не мусор.
Если есть inline — то все хорошо.

segfault

opennet.ru
Дело оказалось в том, что GCC принимает решение об использовании inline-развёртывания функций в зависимости от результатов косвенной оценки размера результирующего кода (даже если функция определена с ключевым словом "inline"). Компилятор не учитывает фактический размер результирующего кода, а пытается прогнозировать его. Для ассемблерных вставок прогнозирование делается на основе числа переводов строк ("\n") и разделителей (";") в исходном тексте.
Помнится, давеча смеялись над JS, оптимизатор которого делал нечто подобное, и минификация ускоряла/замедляла выполнение кода.

sparta
С

все мы немного Чехов.

Деньги нужны адски.
Мне нужно 20 тысяч годового дохода, так как я уже не могу спать с женщиной, если она не в шёлковой сорочке. К тому же, когда у меня есть деньги, я чувствую себя как на облаках, немножко пьяно, и не могу не тратить их на всякий вздор.
Третьего дня я был именинник; ожидал подарков и не получил ни шиша.

А. П. Чехов, письма

alar

it turned out that by carefully handcrafting the fast path, we can achieve highly-competitive IPC latencies [Blackham and Heiser, 2012]. Specifically this means manually re-ordering statements, making use of (verified) invariants that the compiler is unable to determine by static analysisЛюди руками переписывали сишный код в другой сишный код, на основании знаний того, какие машинные команды получатся в итоге и с какой скоростью будут выполняться.

По-моему, проще обучить Изабель понимать асм ARMv6

OCTAGRAM

То чувство, когда нет вменяемой системы модулей и жёстко привязанной к ним системы пространств имён.

#include <Object.h>
#define Object XtObject
#include <X11/Intrinsic.h>
#include <X11/IntrinsicP.h>
#undef Object

Ещё, помню, заголовки Qt вываливают в пространство имён помойку из WinAPI, а вместе с ней — #define GetComputerName GetComputerNameW, и в самом Qt ломается класс с таким методом, вот просто взять и собрать Qt не получается, там тоже хаки против таких конфликтов, работающие с переменным успехом.

Даже, если для целевой системы нет обычного транслятора Ады, а заголовки — только на Це, только ради того, чтоб не страдать такой ерундой, имеет смысл конвертировать цешные заголовочные файлы в адские интерфейсные пакеты, писать на Аде и транслировать средствами AdaMagic.

Разработка ПО похоже на переплывание реки из бурлящей кислоты, и мы строим корабли с толстыми стенами, и мы делаем толстые иллюминаторы, а кислота сильна, кислота разъедает, а мы строим корабли всё толще. Выбрать Аду — значит, отгородиться хотя бы с точки зрения пространств имён от творящихся снаружи ужасов.

SannySanoff

На highloadcup 195 секунд, 13 место перед финальным разбором.
Я налажал где только мог, последующая оптимизация только замедляла все. Вопросов больше чем ответов. Более поздние версии тормознее чем более ранние. memcmp(4 bytes) дольше чем ((int)c) = 0x0A0D0A0D. Опция -O3 медленнее на 10% чем no optimizations.

НО! Непонятно, как у людей еще быстрей, архитектура вроде одинаковая. Читаем решения.

Программировали с @tilarids на гейбуках, там же меряли (!!) (для чего? все равно корелляции с офиц линукс-тестилкой по перфомансу не было). Учет версий вели с трудом. Тест корректности ответов я написал в предпоследний день, наполовину. До того только "пилил", "точить пилу" было некогда 8).

Жажда адреналина и дух соревновательности это всё. Ради него. Следует задуматься. Его-то я получил сполна, а первое место — нет 8)

Renha

Интересный текст richardhaskell.com
коротко, хардварная имплементация раз в 10 быстрее чем реализация на ЯП, Си как обычно тормозит, FORTH-процессоры это ня, надо зопейлить таковой на своей плисине, можно попробовать уходить в крайности RISC/CISC и посмотреть что — лучше, а что — хуже.

salym5

Программа HitLeap Viewer с использованием VPS сервера.
Стоит ли заниматься продвижением собственного сайта? Большинство людей, которые шагают в ногу со временем, неразрывно связаны с глобальной сетью. Перед каждым из них, независимо от сферы деятельности, встает вопрос, а не создать ли свой собственный сайт или веб-страницу. Читать дальше на traflink.blogspot.ru

qnikst

кто хочет поработать на благо военки в славном городе гатчине (от питера добраться просто) за какие-то 80-90к (если все уметь) или на сколько-то меньше, если быть готовым учиться. Делать так чтобы корабли меньше тонули, а на складах было меньше ЧП, ну или хотя бы чтобы об этом узнали все кому следует знать. Там всякие C + возможно что-то более высокоуровневое можно.
Говорят секретности или нет или та, что проблем с загран паспортом и выездами не будет.

OCTAGRAM

Continuation Passing C Руководство
Вот эту бы штуку — да в разрыв между AdaMagic и EmScripten воткнуть, раз уж с Asyncify не заладилось.
ASYNCIFY has a bad worst-case of large code size: If it needs to modify many methods, it can grow code size very significantly (even 10x more was seen).Вот интересно, а в CPC тоже в 10 раз увеличение из-за нескольких точек входа или как-то попроще всё обошлось? Если там смогли, что не так с EmScripten?

Нашёл пока ключевую проблему в CPC — это отсутствие поддержки longjmp, а при компиляции в режиме C AdaMagic использует longjmp. В чём тут проблема, не понятно. Может быть, всё же можно реализовать.

qnikst
? C lmdb

Кто-нить в lmdb шарит?

#if SIZE_MAX > MAXDATASIZE
if (data->mv_size > ((mc->mc_db->md_flags & MDB_DUPSORT) ? ENV_MAXKEY(env) : MAXDATASIZE))
return MDB_BAD_VALSIZE;
#else


вот кусок кода, у меня стоит MDB_DEVEL, поэтому MAX_KEYSIZE=0, поэтому если запрос запускается с MDB_DUPSORT, то получается, что я всегда попадаю в data->mv_size > 0 => MDB_BAD_VALSIZE?

это так и задумано или бага?

OCTAGRAM

Был такой компилятор AdaMagic, умел транслировать Ada в C и C++. Там ещё и в Java компиляция была, но это и сейчас есть в GNAT. Потом SofCheck был куплен AdaCore, и этот компилятор пропал из поля зрения. Однако, его продают под другим брендом тут. Его там завернули в какой-то AppCOE на базе Eclipse, но всё это можно развернуть, выкинуть лишнее и докопаться до самых важных файликов, adacgen.exe и adabgen.exe. На них навешена типа защита. Типа — потому что там, во-первых, есть отладочная информация, во-вторых, неиспользуемые функции не выбрасываются. Очень пригодилась мне такая неиспользуемая функция, как write_license_file, например.

Файл license_key.txt генерить научился, зашифрованные DES файлы типа libadartl.a.enc, разшифровал, для PDF пароль нашёл, поставлю qpdf и тоже разшифрую, впрочем, PDF в открытом виде можно и так скачать с сайта. Сейчас пишу инструкции, чтобы мои действия можно было повторить со следующими версиями. Вообще, не похоже, чтобы новый владелец-индиец разбежался развивать этот компилятор, он, скорее, вокруг достраивает всякие OS абстракторы на C, так что смысла большого обновляться не вижу, но тем не менее. Если думать на тему использования вместе со всякими emscripten, то от libadartl.a толку не очень много, но на всякий случай оно есть. С самим компилятором надо ещё разбираться. Он по умолчанию работает в режиме Ada->C->GCC, но в GCC есть GNAT, который гораздо лучше, и если кто-то заинтересовался AdaMagic, как я, то сценарий изпользования у него будет позабористее, и надо читать доки.

Таким образом, теперь есть компилятор Ada->C/C++, с помощью которого можно целиться во всякие дурацкие, но иногда нужные платформы, хостится он либо на Windows, либо на Linux, а через эмуляторы можно потенциально запускать из ещё большего набора OS. По плану выложить на форум только для зарегистрированных пользователей. Раз и навсегда адвокаты языков программирования, для которых на всех платформах есть транслятор, уедят.

alex0b

Всё же он больше обычный ребенок в свои 13 лет, чем красноглазый слизень шлепающий тентаклями по клавиатуре спектрума, каким был я. Посему осторожничаю, не вываливаю ему в бошку все эти прикольные штуки и страшные слова, чтобы интерес не убить. Все же детям тяжко с абстракциями, им надо визуально воспринимать. Думаю, может из консоли в гуй вылезти? Ну там шарики-квадратики в 2d порисовать, повращать, подвигать. И в таком бэкграунде двигать в сторону структур и алгоритмов. Есть чо такое в этих ваших виндовсах, чтобы быстро и в минимум строк: либа/фреймворк,  рисующая графические примитивы, скрывающая до поры до времени все кишки? GDI?

Renha

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

Я что спросить хотел, как с такого рода ошибками в более других чем C языках дело обстоит? Сразу отмечу что статический анализатор ничто не сказал потому что ошибка алгоритмическая. Что там хаскель? Что теоретически можно придумать чтобы в torth сделать лучше?

lurker
JS C

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

lurker
JS C

ну и в конце дня: автор (вроде) embind говорил (в 2014) что в const std::string& можно передать ArrayBuffer. оно, конечно, можно, но только при этом если в ArrayBuffer текст, то всё норм, а если нет — не работает.

lurker
C

получаешь, значит, какой-то мусор вроде implicit declaration of function 'lseek' is invalid in C99, вбиваешь его в гугель, попадаешь в гитхаб багу совершенно левого проекта, и там какой-то перец исправляет это внесением пары строк в gzguts.h разумеется, в апстриме об этом фиксе никто не слышал. и вот что бы я делал без гугеля.

qnikst

Есть программа (RTS), которая может создавать треды в разные странные моменты обычным pthread_create . Есть специальный superduper_thread_create, который создает нужные мне треды, но взять и перевести на него RTS неполучится (лень). Так же есть так же специальный метод, который позволяет конвертировать обычный posix тред в superduper тред.

Вопрос, есть ли какие-либо средства для автоматизации вызова функции конвертации треда в специальный после вызова pthread_create

OCTAGRAM

«Под Куполом» спонсировался Microsoft, и поэтому там у всех виндопланшеты с Windows 8. А в S02E08 хакер ломает комп, и что же на компе? Неужели тоже винды? Да, винды. Седьмые.

Но в восьмёрке–то все сишные и плюсовые компоненты переписали на Аде, такой Windows хакеры бы не сломали, уж конечно