Цифровые раскопки: заводим Python 1.0.1

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Всем привет! Сегодня мы будем пытаться собрать 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.
Ну а у меня на этом все.
Счастливого Нового года и Рождества!
Источник: https://habr.com/ru/post/517202/


Интересные статьи

Интересные статьи

Сегодня, 05.10.2020 ожидается выход стабильной версии Python 3.9.0. Новая версия будет получать обновления с исправлениями примерно каждые 2 месяца в течение примерно 18 месяцев. Чере...
Всем привет. Я решил наконец-то разобраться, как работает интерпретатор Python. Для этого стал изучать одну статью-книгу и задумал заодно перевести её на русский язык. Дело в том, что перевод...
Получить трафик для интернет-магазина сегодня не проблема. Есть много каналов его привлечения: органическая выдача, контекстная реклама, контент-маркетинг, RTB-сети и т. д. Вопрос в том, как вы распор...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...
Мы публикуем видео с прошедшего мероприятия. Приятного просмотра.