Современный C++ на старом железе: магия совместимости
Привет, Хабравчане! Недавно я увлекся программированием для старых ноутбуков и обнаружил, что можно использовать современные функции C++ 23 на ретро-оборудовании. Погрузившись в изучение, я наткнулся на возможность компилировать код с помощью AOT-компилятора CoreRT, создавая объектные файлы, совместимые с 16-разрядной Windows 3.11.
С помощью Visual Studio Community 2026 и линкера от Visual C++ 6.0 я смог создать исполняемый файл, который работает на Windows 95. Я разработал простой код, который выводит сообщение, использую минимальную реализацию стандартной библиотеки. Это позволяет писать на C++ 23, отлаживать и тестировать программные продукты, даже на старом железе.
Моя цель — перенести свои проекты на C++ 23, сохраняя поддержку старых систем. Это не только увлекательно, но и открывает новые горизонты в ретро-программировании. Я планирую в дальнейшем улучшить реализацию стандартной библиотеки и добавить поддержку Linux. Программирование на старом оборудовании — это не только хобби, но и возможность создать что-то новое для любителей ретро-технологий.
Вопрос-ответ
Какие инструменты вы используете для компиляции кода C++ 23 под старые операционные системы?
Для этого я использую связку из нескольких инструментов: AOT-компилятор CoreRT для создания объектных файлов, современную среду Visual Studio Community 2026 для написания и отладки кода, а также линкер (компоновщик) из старого пакета Visual C++ 6.0 для сборки финального исполняемого файла.
На каких именно ретро-платформах вам удалось запустить современный код?
С помощью описанного метода мне удалось скомпилировать объектные файлы, совместимые с 16-разрядной Windows 3.11, и собрать из них исполняемый файл, который успешно запускается и работает на Windows 95.
В чем заключается главная сложность этого подхода и каковы ваши дальнейшие планы?
Основная сложность — это зависимость от стандартной библиотеки. Приходится использовать собственную минимальную реализацию, так как стандартные библиотеки от современных компиляторов несовместимы со старыми ОС. В будущем я планирую расширить эту реализацию и добавить поддержку компиляции для старых версий Linux.
