to post messages and comments.

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

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

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

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

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

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

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

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

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

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

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

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

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

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. В чём тут проблема, не понятно. Может быть, всё же можно реализовать.

lmdb C ?

Кто-нить в 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?

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

Был такой компилятор 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. По плану выложить на форум только для зарегистрированных пользователей. Раз и навсегда адвокаты языков программирования, для которых на всех платформах есть транслятор, уедят.

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

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

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

C JS

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

C JS

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

C

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

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

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

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

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

Нужна помощь знающих людей по си. Есть php расширение
github.com
оно преобразует массив в dom-документ. Но иногда вылетает "recursion detected", см строку 196. И я не знаю почему это могло бы происходить.
Тут может ещё скил в php расширениях нужен.

dev C

объявил структурку, в которой в самом-присамом худшем случае с учетом всех выравниваний должно быть 36 байт.
добавил к ней __attribute__((__packed__)) чтоб получилось 15 байт.
делаю на неё sizeof. получаю 39 байт.
сижу думаю... долго думаю... всё ещё думаю...

Вот есть в rust enum, я делаю repr(C) и надеюсь в сях (на самом деле в хацкелях) получить отображение этой структурки. Т.к. документация зашкаливает или я не умею её искать то беру gdb и смотрю что там вижу:

(gdb) print a
$3 = {{RUST$ENUM$DISR = BCC, __0 = 0, __1 = 4294967295}, {
RUST$ENUM$DISR = BCC, __0 = 18446744073709551615}}
(gdb) ptype a
type = union RustEnum {
struct A;
struct BCC;
}
(gdb) ptype struct A
type = struct A {
enum class RustEnum RUST$ENUM$DISR;
i32 __0;
u32 __1;
}
(gdb) ptype struct BCC
type = struct BCC {
enum class RustEnum RUST$ENUM$DISR;
u64 __0;
}
(gdb) ptype enum RustEnum
type = enum class RustEnum {A, BCC}

вопрос, что за чудо этот enum class и каким образом мне написать сишный typedef, чтобы правильно отображал данную структуру.

Если я правильно понимаю, то enum class это более умный enum и я могу радостно использовать __tag вместо этого, а что с размером? По каким-то докам минимальный достаточный для отображения типов, так ли это? и могу ли я положиться на порядок или нет?