?

Log in

No account? Create an account
Дважды мудак [entries|archive|friends|userinfo]
Декларативное рулит

Site Meter

[ website | Мой сайт ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Чтобы вы не подумали, есть и хорошие новости [апр. 24, 2019|21:32 pm]
Andy Melnikov
[Tags|]

1. 2019 студия поддерживает билд под XP из коробки, используя 2017 компилятор и старый платформ сдк. При этом эти штуки ставятся из инсталлятора 2019-й, а не как раньше (чтобы 2010-е тулзы работали в 2015-й студии приходилось держать ещё и 2010 студию).

2. Они перестали менять дизайн студии в каждом релизе, и отказались от БОЛЬШИХ БУКВ в меню.

3. Структура пустого проекта выглядит более вменяемо чем в 2010 (например файлики .suo и ещё over 9000 всякого говна больше не лежат в корне)

4. Нет StdAfx.h, что положительно скажется на переносимости проекта

5. Есть гит из коробки без коммандлайна. Не то чтобы я был прямо так рад, но гит-на-винде это всегда боль, если не libgit2 и не hg2git и не Github for Windows (но тогда тоже боль просто в другом месте). А так как перфорс, но не перфорс.

6. Дефолтовый путь к проектам в ~/sources/repos. Раньше клал в "мои документы", это был ад (причём не из-за названия папки)

7. NuGet в проектах native C++ работает, и работает в духе npm (создает подпапку packages/MSMPISDK.10.0.666) и через механизм references все пути появляются в момент сборки в проекте (не засирая vcxproj)

8. Количество устанавливаемого со студией говна заметно поубавилось (все эти dotnet type definitions for MSSQL и прочие 100500 версий дотнета).
СсылкаОставить комментарий

Это какой-то пиздец товарищи [апр. 24, 2019|20:12 pm]
Andy Melnikov
[Tags|, ]

1. MPIСH внезапно дропанул поддержку винды почти сразу после того, как я (N лет назад) сбилдил длл.

2. MPI стандарт убрал С++-биндинги так как они были дебильные https://blogs.cisco.com/performance/the-mpi-c-bindings-what-happened-and-why

3. MS сделал форк ещё более старой (по слухам) версии MPICH2 чем у меня, и поддерживает его. Но бинарники не работают на XP (по факту) и не собираются из исходников компиляторами, поддерживающими XP (по слухам)

4. Опять же по слухам, все базарные реализации MPI дропанули поддержку винды (OpenMPI, MPICH etc). Остались только MS MPI и Intel MPI (который по слухам платный).

5. Гит-репа MS-MPI содержит 10 коммитов

Upd:

6. В студии больше нет MPI-дебаггера (который таки работал, даже с мпичОм)
СсылкаОставить комментарий

46 длл [апр. 24, 2019|15:56 pm]
Andy Melnikov
[Tags|, , ]

TLDR: на Windows XP x64 vcredistx64.exe кладёт 46 dll в папку system32 без SxS

В какой-то версии MSVC (в промежутке между 2012 и 2015) MS захотел дропнуть поддержку XP. В результате они зарелизились, но потом вопли народа убедили вернуть поддержку XP.

Тем временем они рефакторили CRT ака libc.

https://devblogs.microsoft.com/cppblog/the-great-c-runtime-crt-refactoring/

В том числе выносили часть функций libc в системные либы. Но выносили они в "новые" системные либы которых на xp нет.

Ну и в результате оказалось, что в 2015 версии поддержка XP сделана хитро:

есть всего одна версия libc, а не две ("нормальная" и "для xp") как можно было бы подумать.

Эта версия libc зависит от ряда длл, которые в старших версиях есть в системе готовые, а в младших часть доставляется. Так вот на XP доставляется аж 46 либ.

Дабы не пугать разрабов таким количеством либ, они в папочку redist поместили только "несистемные" либы. Так что она выглядит также как и раньше, но не работает на xp. Но чтобы она заработала на pre-8 (или pre-10 я уже забыл), к ней вдовесок надо доставить 1 системную либу ucrtbase.dll. А чтобы на xp x64 - ещё 45 штук. Это делает vcredist.

Проверяется просто:

1. Лепим с тулсетом "для xp" (что подразумевает в числе прочего старый platform sdk) и динамической CRT

2. Кладем на xp-машину рядом ехе и дллки из redist, убеждаемся что не работает. Смотрим в чём дело через dependency viewer. Говорит нету ucrtbase (почему-то без расширения) и api-*

3. Ставим vcredist на хp. Убеждаемся что работает, и с помощью того же вьювера видим что файлики появились в system32

4. Делаем copy c:\windows\system32\ms-api-*.dll ucrtbase.dll в безопасное место.

5. Сносим vcredist, убеждаемся что поломалось и что в system32 нет ни одной ms-api-*.dll, так как vcredist их снёс

6. Копируем 46 длл в папку к нашей и убеждаемся, что заработало, но теперь без говна в system32.
СсылкаОставить комментарий

Последняя версия MSVC с поддержкой XP [апр. 23, 2019|19:36 pm]
Andy Melnikov
[Tags|]

Вопрос на миллион: это 2015 или всё же 2017?
Ссылка6 комментариев|Оставить комментарий

Нода шагает по стране [апр. 23, 2019|16:47 pm]
Andy Melnikov
[Tags|, , , ]

https://github.com/plenluno/libnode - это хуй знает что на С++, похожее на ноду. Вот уж не знаю, смеяться или плакать.
auto srv = http::Server::create(
    JsClosure::create([] (JsArray::Ptr args) {
        auto res = args->getPtr(1);
        res->setHeader(http::HEADER_CONTENT_TYPE, str("text/plain"));
        res->end(str("Hello World\n"));
        return UNDEFINED;
    }));
srv->listen(1337, str("127.0.0.1"));
node::run();
Ссылка18 комментариев|Оставить комментарий

navigation
[ viewing | most recent entries ]
[ go | earlier ]