Hmm, a lot has happened recently. 🥰
Some common libraries have received updates, and now I want them in my codebases:

#zlib v1.3.2
#libjpeg v10
#libpng 1.6.56
#giflib 6.1.2
#lua 5.5.0

#CMake support was improved, which is awesome.
But it also means I need to adapt scripts to ensure all works with my exotic compilers like #msvc, #tcc, #zig or #watcom.

People are testing with #GCC only today.
And they forget about C89 variable declaration rules.

I feel like a retired teacher 👴

Programátor fakt nikdy asi nebudu, ale musím přiznat, že díky kombinaci #Copilot #AI a #MSVC #IDE si dokážu leccos dát dohromady... (PS: o knowhow se nebojím, kód půjde stejně na #GitHub pod volnou licencí)

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.44.35207\include\__msvc_filebuf.hpp(775,1): fatal error C1001: Internal compiler error.
(compiler file 'msc1.cpp', line 1589)
To work around this problem, try simplifying or changing the program near the locations listed above.

not my code 🤷

😒

#cplusplus #msvc

Ne, TVL, programovat se fakt už učit nebudu... A nakonec stejně skončím #Microsoft #MSVC a #AI #Copilot #Github... 🤦‍♂️

Me: Microsoft, can we get quantum computing?

Microsoft: No, we got quantum computing at home.

Quantum computing at home: https://godbolt.org/z/zW8bx74MK

#cpp #cplusplus #msvc #visualstudio

Compiler Explorer - C++ (x86 msvc v19.50 VS18.2)

struct A {}; struct convertible { operator A&() const { static A a; return a; } }; template<typename From, typename To> constexpr bool test1() { return requires(From f) { f.operator To&(); }; } template<typename From, typename To> constexpr bool test2() { static_assert(requires(From f) { f.operator To&(); }); return true; } static_assert(test1<convertible, A>()); static_assert(test2<convertible, A>());

MSVC, once again you ruined my day with another regression 😣

The requires keyword works perfectly... Except in templates it doesn't?? 🤔

#MSVC #cplusplus #cpp #visualstudio

Собираем ffmpeg под Windows

Недавно пришлось собирать ffmpeg под Windows компилятором MSVC. И знаете — я чуть не помер. Официальная документация по сборке проекта под Windows безнадежно устарела. В Интернете есть даже статьи, которые так и заявляют: "Официальная документация по сборке ffmpeg под Windows безнадежно устарела — вот как теперь это делается". И смех в том, что эти статьи уже тоже устарели и не дают работающего решения "press X to compile". Поэтому я просто оставлю здесь инструкцию, которая работает на февраль 2026. И, возможно, устареет, как и все предыдущие. Но вы тогда мне просто об этом напишете, и я попробую актуализировать эту инструкцию. Press X to build

https://habr.com/ru/articles/1004176/

#ffmpeg #build #msvc #msys2 #configure #make

Собираем ffmpeg под Windows

Недавно пришлось собирать ffmpeg под Windows компилятором MSVC. И знаете — я чуть не помер. Официальная документация по сборке проекта под Windows безнадежно устарела. В Интернете есть даже статьи,...

Хабр

Last week I was a little annoyed about missing Microsoft C++ Build Tools #MSVC on a system without admin rights. I needed a compiler for building the #python C++ extension I developed a while ago. Annoyed not because I could not ask someone to install it for me, but annoyed because of the lack of compiler choices in this particular case. I have to use the MSVC instead of let's say #g++ which I could easily install via the #MinGW-w64 #conda package myself.

I found out that I can tell #setuptools (the backend build system) via #pip config settings to use a different compiler during build:

Aaaaaaaand I was right! MSVC does have a bug with parens initialization of aggregate (and static cast!). It won't consider conversion operators for some reason 🫣

#cpp #cplusplus #msvc

https://godbolt.org/z/WWW99qM5Y

Compiler Explorer - C++

struct aggregate { int a; }; struct type3 { aggregate agg; }; struct deducer2 { operator aggregate() { return aggregate{}; } }; auto main() -> int { auto a = type3(deducer2{}); }

От PDP-11 до Windows: как кросс-компилировать ретро-код на macOS без машины времени

Гайд по кросс-компиляции для ретро-платформ на macOS с Apple Silicon. Описаны настройка и использование: Open Watcom v2 — для DOS (16/32-бит), OS/2, Windows 3.x/9x/NT, с примерами сборки .com, .exe и функцией для переключения таргетов в shell. Amsterdam Compiler Kit (ACK) — компиляция ANSI C под PDP-11, с запуском крестиков-ноликов на Unix Version 7 в эмуляторе open-simh (включая создание лент, mkfs, restor, mknod). msvc-wine — полноценный MSVC-тулчейн для Windows (x86/x64/arm64) через LLVM Clang и LLD, без MinGW-зависимостей. Дополнительно: тестирование через Wine, DOSBox-X, OrbStack; фиксы для Apple Silicon. Подробные шаги по сборке, установке и примерам. Интересно? Велком внутрь.

https://habr.com/ru/articles/982928/

#кросскомпиляция #ретрокомпьютинг #PDP11 #Unix_V7 #Apple_Silicon #DOS #ACK #MSVC #Open_Watcom #macos

От PDP-11 до Windows: как кросс-компилировать ретро-код на macOS без машины времени

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

Хабр