Всем привет! Сегодня мы будем пытаться собрать Python 1.0.1 (1994 год) на современном железе при помощи современного компилятора. Даже если Вы, как Python разработчик, никогда не компилировали проект на Си, то не волнуйтесь, я проведу Вас через весь путь. Я предполагаю, что у Вас:
  • установлен какой-нибудь дистрибутив Линукс
  • make
  • компилятор для make

мои версии
Fedora 33 x64
make 4.3
gcc 10.2.1
На другом дистрибутиве и с более старыми/новыми версиями компилятора и make тоже должно работать.

Для пользователей macOS инструкция для линукс должна сработать.

если установлен windows
Вы можете скомпилировать Python и в Windows.
Для этого Вам нужен make для Windows, он есть в составе MinGW

Для начала идем на официальный сайт и скачиваем архив с исходным кодом.

Загрузка исходников

В 1994 году никакого Гитхаба еще не было в помине, поэтому скачиваем с legacy HTTP сервера :-).
Для этого переходим по ссылке и выбираем 1.0.1.
После загрузки и распаковки открываем терминал в папке с питоном.

Сборка Python

Для сборки сначала необходимо запустить скрипт configure для конфигурации, а затем собрать проект при помочь make.
configure должен отработать нормально, после него надо запустить make.
make выплевывает слишком много информации по умолчанию, поэтому рекомендую использовать флаг s:

make -s

Нам показали ошибки, предупреждения и дали подсказку, что произошел конфликт между названиями функций — getline из файла Objects/fileobject.c уже определена в stdio.h
Чтож, переименовываем! Открываем ваш любимый редактор и заменяем getline на скажем Py_getline. В этом же файле указана функция filegetline, поэтому если Вы заменили getline на Py_getline во всем файле, то эту функцию Вам надо переименовать обратно: она используется вне это файла и поэтому переименовывать ее не стоит.
После переименования функции можно снова попробовать запустить сборку командой

make -s

О, теперь ошибки нет)
Правда осталась куча предупреждений, но и без из фикса можно запустить наш древний питон.
Для этого надо ввести в терминал (открытый в той же папке, т.е в корневой папке с исходниками)

./python

Должен открыться питоновский REPL.
В python 1.0.1 не было огромного количества привычных нам функций, нет даже help и exit.
Если Вы вдруг захотели установить древний питон, то рекомендую воспользоваться командой

make install

Ее надо запустить от суперпользователя (например с помощью команды sudo). Но!
При этом ваш прежний питон будет недоступен, в случае если он вызывался по команде python, а не например python2/3.

Что дальше?

Дальше было бы неплохо исправить предупреждения, потому что некоторых из них могут вести к некорректной работе.Я создал репозиторий на Github, в котором первый коммит это оригинальный Python 1.0.1, а в 2 изменения, которые позволяют скомпилировать Python 1.0.1 актуальным компилятором (ну т.е те изменения, о которых я рассказывал в этой статье).
Если Вы захотите исправить предупреждения или еще что-то улучшить, то милости прошу сделать Pull Request.
Ну а у меня на этом все.
Счастливого Нового года и Рождества!

Let’s block ads! (Why?)

Read More

Recent Posts

Роскомнадзор рекомендовал хостинг-провайдерам ограничить сбор данных с сайтов для иностранных ботов

Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…

4 часа ago

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

5 дней ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

5 дней ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

5 дней ago

Нейросети будут писать тексты объявления за продавцов на Авито

У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…

5 дней ago

Объявлены победители международной премии Workspace Digital Awards-2024

24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…

6 дней ago