На GitHub появился странный репозиторий, похожий на исходники движка Opera Presto [закрыто правообладателями]



    Современный браузер должен поддерживать обилие стандартов и технологий, которые превращают веб-документы в интерактивные приложения, медиаплееры со стримингом или даже игры. В связи с этим сегодня браузерных движков не так уж и много. Ушло время, когда достаточно было кое-как вывести текст и картинки. Сегодня нужна мощность виртуальной машины для JavaScript, поддержка аппаратного ускорения декодирования видео и постоянная отзывчивость интерфейса.

    Исходные коды некоторых браузеров открыты и распространяются с условиями использования различной степени свободы. Поэтому мы увидели появление множества клонов Chromium, часть из которых, впрочем, быстро стала добавлять собственные улучшения относительно Chrome. А кто-то вообще отказался от собственного движка в пользу разработки Google. Так произошло с Opera в 2013 году. Позднее Opera последовала за форком WebKit и перешла на Blink.

    Opera — браузер, который мало где доминировал, но не отставал от конкурентов технически. Для рендеринга страниц браузер использовал собственный движок Presto. Он обладал уникальностью: почтовый клиент, мощный менеджер загрузок, встроенный BitTorrent-клиент, жесты мышью и блокировка контента. В связи со сменой движка часть любимых многими функций Opera после 12-й версии исчезла. Градус недовольства должен сбить браузер Vivaldi, который тоже базируется на Blink.

    А Presto мёртв. Хотя на днях на GitHub появился странный репозиторий, который напоминает исходники этого движка.

    README.md гласит: «Веб-движок рендеринга Presto: Opera 12.15. Этот репозиторий содержит движок рендеринга Presto, используемый в Opera по 12 версию. Покеда». Аккаунт пользователя prestocore, выложившего файлы, анонимен и не содержит идентифицирующей информации. Большая часть кода в репозитории — 66,5 % — написана на C++, языке, на котором был создан Presto.

    По адресу github.com/prestocore/browser пока что размещены почти полгигабайта файлов.

    Обновление 2017-01-14 3:30 МСК: доступ к репозиторию закрыт согласно процедуре американского закона об авторском праве в цифровую эпоху (DMCA). В комментариях этого поста идут обсуждения зеркал и компилируемости исходников.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 235

      +10
      В пост призываются Shpankov (с комментариями от фон Течнера) и pepelsbey
        0
        Думаете слив от бывших сотрудников?
          0
          Я думаю, что они могли бы хотя бы сказать «оно» или «нет». Хотя вот листаю код, кое-какие доки в coredoc — похоже не фейк.
            0
            Будет круче, если это «слив» от тех, к кому по случайности попали старые компы/оргтехника. Как часто бывает с утечками исходников прототипов игр, которые находят прямо на devkit-ах консолей на интернет-барахолках.
              0
              Всё, репозиторий больше не «пока что». Поэтому, если кто-то из гиктаймеров успел выкачать всё — ждём перезаливки на облачко. Вроде камрады ниже (@brzsmg, staticlab и кто-то ещё) успели скачать — к ним и просьба перезалить.
                +3
                Уже разошлось по миру, см. на реддите и в других местах. Ну а что единожды попало в сеть, останется там навсегда. Теперь, после takedown-а репозитория, от этих исходников точно не отстанут. Иначе — могло бы просто побаловаться с ними и забить на «старье». Но не теперь, когда аутентичность (и актуальность кое для кого) подтверждена.

                Единственное из всей этой истории, что мне по-прежнему интересно — это источник утечки. Слабо верится, что это кто-то из бывших разработчиков взял и решил выложить. Версия со списанной оргтехникой и неочищенными носителями информацией мне кажется более актуальной.
                  +1
                  Слабо верится, что это кто-то из бывших разработчиков взял и решил выложить.

                  А почему, соббсно, нет? Тем более написано, что «Аккаунт пользователя prestocore, выложившего файлы, анонимен и не содержит идентифицирующей информации». То есть понятно, что кому-то зачем-то пришлось шифроваться к тому-же.
                    0
                    Кто-то не захотел иметь проблемы с полицией / спецслужбами какой-нибудь страны.
                    Боюсь, что Опера выложившего затаскает по судам.
                      0
                      Ну вот. Особенно страшно для него же самого будет, если это сам разраб Оперы и окажется.
                    +1
                    >останется там навсегда

                    Не всегда, к сожалению.
                    Я _очень_ хочу найти один проект, выложенный в Сеть автором в 1999 году и удалённый по каким-то причинам отовсюду (включая зеркала на archive.org).

                    Речь идёт о
                    проекте FreeBas9k, реализации BASIC для телефона Nokia 9110. Проект удалили из-за какой-то тёрки с Nokia (автор считал, что она должна ему денег), но сейчас это уже исключительно историческая ценность, на мой взгляд.
                    Сам файлик, если я правильно понял, имеет размер в 56 килобайт или около того, исходников вроде не было в комплекте. Я нашёл чей-то архив программ для него на Archive, но ссылка на сам файл bas9k.zip была потёрта.
                      +2

                      Вот прям про вашу ситуацию. Есть подозрение, что у этого человека (в смысле у немца) и необходимый вам файлик есть.

                    • НЛО прилетело и опубликовало эту надпись здесь
                        +1
                        Именно поэтому я установил ScrapBook X и тупо сохраняю себе все интересные страницы (а то и сайты), качаю все интересные репозитории и вообще храню у себя всю информацию, благо жёсткие диски достаточно дешёвые, чтобы ничего не удалять.
                          +2
                          • НЛО прилетело и опубликовало эту надпись здесь
                  +5
                  Не думаю что от этих двоих есть хоть какой-то толк. Как минимум первый точно говорящая голова, он никогда не говорил правду, только повторял официальную позицию, даже если она противоречила здравому смыслу.
                    +5
                    Второй, вы имеете в виду?
                      +2
                      Нет, я писал именно про первого. Если и второй тоже — значит оба.
                    +4
                    Ни у кого из упомянутых доступа к движку не было, разве что Йон может подтвердить.
                    +1

                    Я волнуюсь, Shpankov "последний раз был на сайте 31 декабря 2016 в 16:26", а последнее сообщение от него вообще месяц назад.

                      0
                      Не волнуйтесь, ВКонтакте он бывает регулярно (https://vk.com/id3942209), и даже пишет иногда.
                    +1

                    Кто-нибудь уже попробовал скомпилировать? :)

                      +2
                      Нужна VisualStudio 2010.

                      Открываем решение
                      \platforms\windows\OperaProjectFile.vcxproj

                      Ругается что не хватает кучи проектов:
                      Заголовок спойлера


                        +3

                        А почему вы открывали vcxproj, а не sln? Там как минимум для libvpx путь корректно прописан, и нужный проект действительно лежит, где ему надо.

                          +1

                          По-видимому, недостающие файлы проектов генерируются из *.vcxproj.template при помощи vcxproj_update.py

                            0
                            Там в сорсах вообще какая-то своя система сборки живёт, flower называется. Пока детально не ковырял, поэтому не могу сказать, как она соотносится со студийными проектами и солюшенами.
                              +1

                              Из доков к flower: Flower is a build tool designed to replace GNU make for building Opera products on UNIX-like systems. Так что к Windows и Mac она, по-видимому, никак не относится.

                                0
                                А, понятно.
                                А с темплейтами, похоже, может работать ещё и скрипт git_checkout_hook.sh.
                                P.S. Кстати, он же и запускает vcxproj_update.py.
                                  0

                                  Очевидно, при коммите он должен удалять файлы этих проектов, а затем их пересоздавать:


                                  if [ $run_update = 1 ] ; then
                                      echo "Generating source files..."
                                      python modules/hardcore/scripts/sourcessetup.py --ignore-missing-sources
                                      echo "Regenerating project file..."
                                      python platforms/windows/vcxproj_update.py
                                  fi
                                    0
                                    Не при коммите. При чекауте. Смотрит, имеются ли отличия в темплейт-файлах между предыдущим коммитом и тем, на который чекаутимся. Если есть — запускается перегенерация проектных файлов из этих шаблонов. Как-то так.
                                      0

                                      Да, прошу прощения, оговорился.

                            +20
                            Скомпилировал под Windows. Пользовался Visual Studio 2010.

                            Необходимо:
                            CMake Tools for VisualStudio
                            Python 2.x (я использовал 2.7)
                            Strawberry Perl
                            Pike
                            vsyasm 1.2

                            А также библиотеки:
                            CURL 7.28
                            OpenSSL 1.0.1c

                            После установки Perl необходимо установить к нему библиотеку XML::Twig, что делается в командной строке:

                            cpan XML::Twig

                            После установки Pike добавить путь к его исполняемому файлу в переменную среды PATH. У меня это — C:\Program Files (x86)\Pike\bin

                            vsyasm (версии 1.2!) устанавливается согласно инструкциям файла readme.

                            Дальше необходимо распаковать CURL и OpenSSL в папку presto\browser\adjunct\autoupdate\autoupdate_checker\platforms\universal_adaptation_layer\network
                            Папки с ними переименовать в «curl» и «openssl» соответственно. Да, кстати, по указанному пути уже будет находится папка openssl, но её нужно заменить, так как некоторые необходимые для компиляции файлы в ней почему-то отсутствуют…

                            После, откройте файл проекта curl\lib\libcurl.vcproj в VisualStudio 2010 и согласитесь с преобразованием. Зайдите в свойства проекта, и в С/С++ > Code Generation > Runtime Library выберите Debug Multithreaded (/MTd) для конфигурации Debug и Multithreaded (/MT) для конфигурации Release. Если этого не сделать, то на стадии линковки появятся ошибки, связанные с конфликтами символов определённых в разных библиотеках. Теперь можно скомпилировать libcurl в конфигурации Release.

                            Потом компилируем OpenSSL, для этого понадобится открыть командную строку Visual Studio (Microsoft Visual Studio 2010 > Visual Studio Tools). Переходим в каталог openssl:

                            cd <путь>\presto\browser\adjunct\autoupdate\autoupdate_checker\platforms\universal_adaptation_layer\network\openssl

                            И компилируем:

                            perl Configure VC-WIN32 no-shared --prefix=../../../../Output/openssl -MT
                            ms\do_ms
                            nmake -f ms\ntdll.mak
                            nmake -f ms\ntdll.mak install


                            Потом копируем библиотеки libcurl.lib из curl\lib\Release, libeay32.lib и ssleay32.lib из presto\browser\adjunct\autoupdate\autoupdate_checker\Output\openssl\lib в autoupdate_checker\Output.

                            Из командной строки запускаем скрипт, отвечающий за генерацию проектов:

                            python <путь>\presto\browser\platforms\windows\vcxproj_update.py

                            Открываем решение presto\browser\platforms\windows\Opera_vc2010.sln, все проекты в решении должны открыться нормально. Заходим в свойства проекта autoupdate_checker, и в разделе Linker > Input > Additional Dependencies добавляем библиотеку wldap32.lib во всех конфигурациях.

                            Теперь осталось только скомпилировать старую-добрую Оперу :)

                            По окончании компиляции, исполняемые файлы окажутся в каталоге presto\browser\Release (или Debug, в зависимости от выбранной конфигурации). Но осталось ещё пара мелких штрихов: необходимо скопировать дефолтный скин в папку skin, для этого нужно заархивировать содержимое presto\browser\adjunct\resources\skin\standard_skin в архив standard_skin.zip и скопировать его в указанную папку. Также Opera может злобно ругаться на отсутствие файла encoding.bin, однако, не найдя его в исходниках, я не придумал ничего лучше как просто скопировать его из уже установленной у меня Оперы 12.17…

                            Также удивило то, что Debug-версия Opera при первом запуске выдаёт несколько Assertion Failed (prev_url==url_size), но это возможно как-то связано с созданием нового профиля. Release-версия работает абсолютно нормально.

                            Таким образом, исходники старой Оперы теперь доступны. Но что с ними делать дальше — вот в чём вопрос…

                              +4
                              Небольшое дополнение: что-бы standard_skin.zip автоматически собрался, нужно скачать 7zip архиватор и скопировать исполняемый файл «7z.exe» в папку, которая есть в PATH. Я создал папку C\bin, скопировал 7z.exe в эту папку, и добавил её в в PATH. Странно, но у меня encoding.bin создался сам при сборке. У меня windows 10 x64 и visual studio 2010.
                                0
                                Спасибо за дополнение! Действительно, с указанным в PATH путём к 7zip, дефолтный скин собирается автоматически. А что касается encoding.bin, то присмотревшись к логу сборки, я обнаружил там сообщение «Failed creating encoding.bin». Нужно разобраться…
                                  0
                                  У меня encoding.bin создался сам.То ли тут 7z помог, то-ли еще что.
                                +2
                                Эта версия OpenSSL уязвима Heartbleed. Сборка с 1.0.1u проходит успешно, но и ее не рекомендуют к использованию
                                  +3
                                  Сборка с OpenSSL-1.1.0c прошла успешно, только нужно установить NASM, добавить папку с ним в path, командную строку Visual Studio открывать с привилегиями админа, вместо libeay32.lib и ssleay32.lib копировать уже libcrypto.lib и libssl.lib и в autoupdate_checker в разделе Linker > Input > Additional Dependencies указать их имена.
                            +7
                            Если правда слив, то, боюсь, толку от этого немного, так как сомнительна возможность использования этих исходников с юридической точки зрения

                            (Здесь нужен AppChecker PVS-Studio :)
                              0
                              Будет как с Wine/ReactOS. Некоторые разработчики поглядывают на слитые исходники Win2K, но переписывают.
                                +6

                                У нас никто не поглядывает.

                                  +4
                                  А что плохого в подглядывании? Прямой копипаст — да, нельзя по законам юридическим и моральным, а посмотреть, как что-то сделано, не зазорно.
                                    +10

                                    В нашем случае это непозволительная роскошь, череватая большой бедой. Мы тщательно избегаем нарушения авторских прав Майкрософт. Мы стараемся не оставить ни малейшей лазейки для возможности для успешного преследования нас в суде.


                                    Мы запрещаем разработчикам даже подглядывать в утекшие коды. Если достоверно известно, что разработчик смотрел в исходники, опубликованные нелегально, такой разработчик никогда не получит права коммитить код в транк проекта, а его патчи в саму ОС вряд ли будут приняты (но он все еще сможет написать наборы тестов).

                                      +2
                                      А для Wine это гарантируется? Ведь наработки из него используются, например, в Arwinss.
                                        +2
                                        А если такого разработчика сразу не заметят? Ну не прямые же фрагменты кода же он будет коммитить, и не большими кусками сразу. И кто будет заниматься проверками «не-майкрософтности» кода, если сам в подобные источники никогда не заглядывал?
                                          0

                                          Все очень просто, разработчик должен уметь объяснить происхождение каждого фрагмента своего кода, почему он написал так, а не иначе.


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


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

                                            0
                                            Но это же лишь подтверждает обратное! Получается, что при осознанном понимании заимствованного кода разработчиком, при адаптации его под требуемый фирменный стиль и последующих изменениях на ревью другими разрабами (что вообще, по сути, частично снимает ответственность с первоначального комиттера), определить заимствование из решений MS в той же области почти невозможно.

                                            Любопытно, что похожая ситуация была в проекте Mono, где велик был соблазн залезть в утекшие исходники .NET Framework (позже, вроде, даже перевыложенные самими MS, что однако не сняло ограничения по официальному лицензированию, а этим Mono тоже были всегда озабочены).
                                              0

                                              Это ничего не подтверждает. Все попытки использовать утекшие коды у нас тщательно пресекаются. Мы с огнем не играем.


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

                                                0
                                                Т.е. с майкрософтскими исходниками все же сравнивают код определенные люди в команде?
                                                  0
                                                  Насколько я понимаю, DMCA позволяет следующий протокол: один человек смотрит утекшие исходники (или, скажем, логи дизассемблера) и подробно документирует это дело, другой — по этим докам реимплементирует (или же проверяет свой код на похожесть). Это законно.
                                                  0
                                                  Придумали бы лучше процедуру невосстановимой переделки. А то наверняка бывают ситуации, когда написанный код такой же как оригинальный, потому что по другому нелогично
                                                    –1
                                                    Поздравляю, вы только что переизобрели полиморфные вирусы!
                                                      0
                                                      Полиморфные вирусы научились работать с исходниками на высокоуровневых языках?
                                          +2
                                          > А что плохого в подглядывании? Прямой копипаст — да, нельзя по законам юридическим и моральным, а посмотреть, как что-то сделано, не зазорно.

                                          Я бы еще добавил: по законам юридическим какой юрисдикции. Ну глупо, скажем, в Иране сказать «по законам [Ирана] нельзя посмотреть утекший код и взять реализацию себе». И список стран, где такое явно неуместно, будет больше, где уместно.

                                          Другое дело, что крупные площадки (вроде Github) ассоциируют себя напрямую с США и ЕС, а иногда и полностью находятся находятся в юрисдикции этих стран, где миром «рулит» DMCA 1998 года.

                                          Выход: нужны другие площадки, иная кооперация и т.п.
                                          И не исключаю что все это существует уже, при чем далеко не обязательно лишь в даркнете.
                                    0
                                    Ни git ни presto в 1995 не существовали, хотя тут вопрос оформления.

                                    Буду рад, если это настоящие исходники и думаю пока не слишком поздно сделать из них что-то интересное.
                                      +1
                                      Ну, комментарии в коде пока говорят об аутентичности. Дома надо будет пошерстить

                                      Да и вещи типа https://github.com/prestocore/browser/blob/master/data/translations/ru/search_eng.ini похожи на правду
                                        +1
                                        Согласен, при беглом просмотре очень похоже на правду.
                                        +6
                                        Дату коммита в гите поменять — дело нескольких секунд. Не думаете же вы, что весь оригинальный репозиторий Оперы так и состоял из двух коммитов, первых из которых пустой, а второй — целиком вся Опера 12.15, написанная с нуля одним махом. :-)
                                          –1
                                          Не думаю. Как и сказано выше — дело оформления, но имитация коммита от 95 года немного настораживает. По остальным признакам скорее похоже на настоящие исходники. По крайней мере случайные файлы оказались реально кодом, а не мусором на сотни мегабайт.
                                            +6
                                            имитация коммита от 95 года немного настораживает
                                            Думаю, это просто один из шагов по заметанию следов.
                                              0
                                              А вот, кстати, интересно, случайно ли был выбран именно год первого релиза Оперы. :-)
                                                0

                                                И "22 июня, ровно в 4 часа". Хотя "днём рождения Opera" считается 30 августа.

                                                  +1
                                                  А дата и время вас больше ни на какие мысли не натолкнули?
                                                    0

                                                    Нет, ну я понимаю, что 4:00 GMT+4 — это 0:00 UTC, просто подметил совпадение.

                                                      +1
                                                      Если эту дату и время выбрали неслучайно, то круг подозреваемых в сливе сужается до жителей эксСССР :)
                                                        0
                                                        Мне кажется, ВОВ сюда приплетать уж точно чересчур, если вы про неё.
                                                          0
                                                          Я просто развил мысль Ezhyg.
                                                            0
                                                            извините, не разобрался, подумал, что именно такая формулировка есть в текстах :(
                                                      +1
                                                      30 августа — это дата основания компании. Первая версия браузера была представлена 10–14 апреля 1995 на конференции WWW. А первая публичная версия (2.0) вышла только в 1996 году. Так что откуда взялось 22 июня, я пока не понял. Разве что самый длинный день года, но при чём он тут… Но всё равно 1995 год явно знаковый.
                                              +2
                                              В 95-ом существовал CVS, ClearCase (правда, лучше бы не существовал), и куча других систем контроля версий. Обычно люди и компании стремятся сохранить историю версий и импортируют в новую систему всю историю изменений, а не просто самую последнюю версию исходников, и для этого есть масса инструментов.

                                              История вообще могла пройти несколько этапов, например, CVS -> Subversion -> Mercurial -> Git.

                                              Если я правильно понял причину недоумения.
                                                +1
                                                P.S. Извините, посмотрел на репозиторий, там нет никакой истории, только фейковые даты у каждого файла.
                                              –2
                                              У меня одного антивирус ругается? Вот что Касперский Тотал Секьюрити говорит:
                                              Программа: WinRAR archiver;
                                              Файл: D:\browser-master\modules\minpng\tests\x_too-large.png;
                                              Время: 01/13/2017 15:41:35;
                                              Название объекта: Exploit.Win32.CVE-2013-2977.a
                                                +15
                                                Он и должен ругаться, это некорректная png, которой самое место в тестах.
                                                  +6
                                                  PNG integer overflow (CVE-2013-2977)
                                                  Логично блин :)
                                                    0
                                                    Symantec Endpoint тоже ругается, но на всю папку с репозиторием.
                                                    +2
                                                    Примечательно то что сам аккаунт и репозиторий были созданы почти год назад, еще 11 февраля 2016.
                                                    в исходниках, встречаются копирайты и 2003 и 2011 года, с именами разработчиков.
                                                      +2
                                                      feldgendler: https://github.com/prestocore/browser/blob/8c5977d18f4ed8aea10547829127d52bc612a725/adjunct/quick/documentation/quick.tjp#L12
                                                        +1
                                                        https://github.com/prestocore/browser/blob/8c5977d18f4ed8aea10547829127d52bc612a725/modules/logdoc/module.tweaks

                                                        Ы=ххъ ;D
                                                        +2
                                                        Хм.
                                                        Вопрос к знатокам: если это все же оригинальные исходники, то сможет ли Opera в суд на опенсорс проект основанный на этом двиге? Я просто туп в таких вопросах…

                                                        Если действительно Presto, то это очень здорово. Может кто то сделает новый годный браузер)
                                                          +5
                                                          DMCA и всё последующее.
                                                            0
                                                            Учитывая географию владельцев этих исходников, скорее EUCD.
                                                              +3
                                                                0
                                                                На кого они будут подавать в суд, если разработчики анонимны, например? На гитхаб?
                                                                  0
                                                                  На тех кто размещает исходники/продукт. Разрабатывать сколько угодно можно.
                                                                0
                                                                Подать в суд можно по воле левой пятки, практически. Вопрос скорее в том, каковы шансы этот суд выиграть.
                                                                  +2
                                                                  > сможет ли Opera в суд на опенсорс проект
                                                                  Конечно, сможет.
                                                                    +4
                                                                    Если разработчики будут полностью анонимны, а репозиторий где нибудь в Даркнете (торе или i2p) то пускай усудятся:)
                                                                    Я кстати давно жду такого явления как «темный open-source», которое объединяло бы открытую разработку и полное презрение к любому копирайту… А может такое уже где нибудь есть?
                                                                      +2
                                                                      Есть, как не быть: git.repo.i2p(.xyz)
                                                                      Оно, как и прочие темные интернеты, не слишком живое. Но вполне рабочее.
                                                                        –1
                                                                        Только это не надо будет никому. (К сожалению многих, наверное)
                                                                          0
                                                                          У меня нет i2p, но их зеркало в .onion (git.psii2p655trtnvru.onion) — лежит.
                                                                          Ещё на просторах интернета встречается упоминание gitweb2zl5eh7tp3.onion, но он тоже лежит.
                                                                          ehww2ercchnq7633.onion? Лежит.

                                                                          А есть ещё варианты? Разумеется, из чисто академического интереса спрашиваю.
                                                                            0
                                                                            upd: http://git.repo.i2p.xyz/ работает :)
                                                                              +1
                                                                              вот бы на GitLab еще перешли)
                                                                                0
                                                                                Мне тоже кажется, что основная проблема там — отсутствие issue tracker'а.
                                                                              0
                                                                              Через .i2p.xyz не все бывает доступно (например zzz.i2p.xyz или stats.i2p.xyz). Причина в том что весь трафик идет фактически через один узел, а также разнообразные куцхакеры.
                                                                              Потому, по возможности, рекомендуется ходить изнутри I2P, особенно на ресурсы с большим трафиком то git.
                                                                      +3
                                                                      Кстати, интересный нюанс. Били ли при продаже компании китайцам в явном виде переданы права на Presto. Формально на тот момент он уже был похоронен. Или Presto вообще остался в Норвегии, как используемый в каких-то телевизорах (продали же десктопное подразделение, да?).
                                                                        +24
                                                                        Там не только движок, там вся опера и м2. Под линуксом с помощью пары патчей и такой-то матери собирается. Версия 12.15
                                                                        Работает, даже видео на ютубе играет.
                                                                          0
                                                                          В т.ч. исходники интерфейсной части? А то в старом блоге Оперы рассказывали о том, что для тестов движка у них используется минимальная морда.
                                                                          Если выложено всё полностью, то это очень хорошо, для изучения в академических целях, конечно.
                                                                            +1
                                                                            Судя по набору файлов, там даже инсталлятор есть.

                                                                            PS. Привет! :)
                                                                              0
                                                                              Привет =)
                                                                              Я на работе бегло посмотрел файлы, но C++ — не моя специализация. И, блин, вот сегодня первый раз, когда я об этом жалею.
                                                                              +5
                                                                              Да. Весь интерфейс. Все системные скрипты, шейдеры для libvega и т.п.
                                                                              Все это дело жутко модульное. Каждый диалог, каждая фича — модулем.
                                                                              В целом от исходников довольно приятные впечатления и собирается все минут за 5 не выжирая оперативку, в отличии от другого известного движка.
                                                                                +4
                                                                                Ну, не считая того, что местами пришлось патчить return FALSE на return nullptr в функциях, возвращающих указатели.
                                                                                  +1
                                                                                  Собирали через flower или ещё как-то? Может инструкцию накидаете?
                                                                                    +7
                                                                                    да, flower
                                                                                    http://paste.fedoraproject.org/526781/32598714/ — патч на return'ы и на системный tinyxml
                                                                                    ./flower -v --without-kde4
                                                                                    (у меня пятые кеды и оно в итоге собирается наполовину с пятыми, наполовину с 4ми и падает)
                                                                                    У меня на 64 битах не собирается автоматом 32битный плагин-враппер, потому что инклюдит 64-битный gdk. Приходилось брать команду из выхлопа, заменять путь к инклюдам и собирать вручную. Там три файла, для которых так надо сделать.
                                                                                    flover можно запускать с -j 1 дабы было виднее, на чем он падает.
                                                                                      +1
                                                                                      Мерси!
                                                                                        +6
                                                                                        ах, да, там еще надо или отключить сборку апдейт-чекера или положить ему туда исходники curl
                                                                                          0
                                                                                          Можно ссылку сделать в /usr/include/curl
                                                                                            +1
                                                                                            есть подозрение что поможет вот этот параметр --without-autoupdatechecker.

                                                                                            p.s. вот бы кто-то еще написал список зависимостей, а то приходится методом проб и ошибок ставить все по очереди.
                                                                                            +2
                                                                                            Подтверждаю, собирается на генте с ~amd64 профилем. Версия браузера 12.15, версия престо 2.12.388.
                                                                                            У меня кстати собралось с системной so-шкой tinyxml без всякиз патчей. А инклюды gtk получаются через pkg-config, который и отдаёт lib64 вместо lib32, оно в platforms/quix/module.build/plugins.conf.py.
                                                                                            Ну и там по мелочам в некоторых perl-скриптах старый формат регекспов и переменных, но на сборку это не влияет.
                                                                                              +2
                                                                                              Ну и раз уж товарищ iSage начал фиксить варнинги, то и я немного отмечусь.
                                                                                              Микропатчик, фиксит похожую на FALSE->NULL проблему во встроенном hunspell — http://pastebin.com/2EUFEBYp
                                                                                                0
                                                                                                Ещё один микропатч — http://pastebin.com/UuaZSWZg
                                                                                                Фиксит релизную (--release) сборку на линуксе. Современные (gcc5+) компилеры выдают кривой код после оптимизации, что приводит к крашам на очень многих страницах с JS.
                                                                                                  0
                                                                                                  ну это неправильный фикс. правильный фикс — поправить места падения.
                                                                                                    +1
                                                                                                    Там ровно одно место, в котором используется ихний delete-враппер. Он вообще много где используется, но падает только там.
                                                                                                      +1
                                                                                                      И падает именно на -O2-3, на -O0, который в дебажной конфигурации, такого добра нет.
                                                                                                      Что опять же наводит на мысли о оптимизаторе. Поэтому и добавлен флаг, чтобы он ещё где подобного не учудил.
                                                                                                      Собственно, была аналогичная проблема в gcc6 и хроме, он там тоже в -O3 собирается, и без этого же самого флага были очень похожие краши на некоторых JS.
                                                                                                        0
                                                                                                        То есть на -O2 тоже падает?

                                                                                                        А есть возможность с ASAN'ом собрать?

                                                                                                        https://github.com/google/sanitizers/tree/master/address-sanitizer
                                                                                      –1
                                                                                      Вот, раз такой молодец, давай репозиторий с патчами и build.sh
                                                                                        +2
                                                                                        Патч есть выше. Все, что нужно для сборки — голова и ./flower --help
                                                                                        Распространять код я не собираюсь, его и так уже все, кому не лень отзеркалили.
                                                                                          0
                                                                                          > репозиторий с патчами

                                                                                          Как я понимаю, речь идёт не о том, чтобы распространять утекший код, а о том, чтобы коллективно создавать и распространять его улучшения. Вот интересно, кстати, насколько легален подобный процесс?
                                                                                            +1
                                                                                            Нет, судя по манере изложения там именно требование всего готовенького. Энивей, патч пока всего один.
                                                                                            Процесс нелегален, поскольку патчи содержат куски исходного кода.
                                                                                              0
                                                                                              Все зависит от страны. Главное, чтобы такой программист не нарушал открыто законы (а чаще всего просто практику их исполнения) той, гражданство которой имеет и в которой проживает. Никто не мешает ему представиться человеком с Кокосовых островов.
                                                                                                0
                                                                                                Смотря в каком виде.

                                                                                                Если в виде диффов/патчей, то могут придраться к тому, что в них фигурирует код оригинала.

                                                                                                Если в виде «в файл такой-то после строки номер X нужно добавить вот этот написанный мной с нуля код» — то придраться практически невозможно.
                                                                                                  0
                                                                                                  Только такие патчи привязаны к оригинальному коду намертво, и применить два таких на один файл очень затруднительно, придётся каждый раз сверятся с оригинальными исходниками.
                                                                                                  Интересно, а к именам файлов не придерутся?
                                                                                                    +1
                                                                                                    Можно сделать таблицу с однозначным соответствием «оригинальный_файл = сгенерированный_хеш_код» ))
                                                                                                      +2
                                                                                                      Тогда уж и строки хешировать, чтобы включить их в контекст diff вместо оригинальных, ну и сам софт для diff модифицировать соответствующим образом. Тогда удобство работы с такими патчами будет не сильно ниже, чем с обычными.
                                                                                                        +1

                                                                                                        Интересное концептуальное решение получается: система контроля версий, в которой вместо нулевой итерации будет magnet-хэш или torrent-файл, а в диффах вместо предыдущей версии строки указан её хэш. Правда в дифф-файлах следовало бы также предусмотреть возможность и других исправлений, таких как перемещение блока кода или замена части строки, чтобы максимально не засвечивать в коммитах оригинальный код.

                                                                                          +4

                                                                                          Просто мечтаю чтобы кто нибудь собрал легаси оперу для маленьких АРМ девайсов на линуксе!

                                                                                            0
                                                                                            [del]
                                                                                              –6
                                                                                              Ну не знаю. Как-то сразу после анонса, плюс на Гитхаб, смахивает на слив ради пиара. Да к тому же, судя по информации выше — не первый такой раз, а разве IT-гигант не научился бы на своих ошибках? И код неполный, как так сливать можно?
                                                                                              Мой вердикт — пиар акция, да и только.
                                                                                                +7
                                                                                                Код вполне себе полный. См. комментарии выше — вроде бы даже собрать уже удалось.
                                                                                                +5
                                                                                                Repository unavailable due to DMCA takedown.
                                                                                                  +5

                                                                                                  Теперь ждем на торентах

                                                                                                    +3
                                                                                                    Ну вот, а я был на работе и не успел скачать. Может кто-нибудь поделиться в личку?
                                                                                                      0
                                                                                                      Быстро отреагировали.
                                                                                                        +3
                                                                                                        Зато теперь в аутентичности утекших исходников можно не сомневаться.
                                                                                                          0
                                                                                                          Лично я бы посомневался в том, что анонимус не добавил какой-нибудь бэкдор, троян или что-то типа того забавы ради
                                                                                                            +1
                                                                                                            Мне больше интересно кто и зачем слил — да еще на гитхаб где такие вещи банятся на раз два.
                                                                                                              +2

                                                                                                              Перед тем, как они банятся, их успевает увидеть куча народу и сохранить себе. Так что смысл именно в GitHub'е есть.

                                                                                                          0
                                                                                                          у кого копия осталась? не успел :(
                                                                                                            +4
                                                                                                            «То, что попало в интернет, останется там навсегда.»
                                                                                                              +1
                                                                                                              Ага, в торрент и magnet-ссылку — в блокчейн BTC, комментарием к транзакции.
                                                                                                              (картинка-с-троллейбусом-из-буханки-хлеба)
                                                                                                                +5
                                                                                                                Ах, если бы… Это только с тем, что всем интересно. А вот мало кому нужный контент (в моём случае — музыка) запросто может пропасть навсегда :-(
                                                                                                                0
                                                                                                                Вчера клонировал репозиторий:
                                                                                                                https://mega.nz/#!Lo0l1aZA!hFtA8QDtkgwYFm15slZbZWkGprhwI6R8xkl3G9ulzDI
                                                                                                                Вариант без папки .git (на 100 МБ меньше):
                                                                                                                https://mega.nz/#!GhVTVaRC!fhaeAwWmOfpMbMznjziDmAouuQnPFdifK_xEllImBKk
                                                                                                                +1
                                                                                                                Господа успевшие скачать, ждем раздачу на торрентах:) Или может уже где-то есть?
                                                                                                                –4
                                                                                                                Гитхаб лег под хабраэффктом?
                                                                                                                При попытке склонировать — выдает 504. При попытке скачать zip — 500.
                                                                                                                  +6
                                                                                                                  Комментарий долго ожидал модерации, в момент опубликования уже устарел и, в итоге, набрал минусов.
                                                                                                                  Эта система комментариев для незахабренных пользователей немного кривовата…
                                                                                                                    +2
                                                                                                                    Я тоже в своё время мечтал о возможности снять комментарий с модерации.
                                                                                                                  +1
                                                                                                                  Вот и прикрыли лавочку.

                                                                                                                  Repository unavailable due to DMCA takedown.
                                                                                                                    +1
                                                                                                                    Присоединяюсь к остальным — поздно новость в вк увидел, может кто поделиться?
                                                                                                                    +1
                                                                                                                    Между прочим, из попыток пересоздания «старой оперы» Vivaldi и Otter тут уже все видели, а Fifth, кажется, ещё нет.
                                                                                                                      0
                                                                                                                      Fifth is a Linux-exclusive browser…
                                                                                                                        +1
                                                                                                                        Как он вообще? пользовались?
                                                                                                                        +4
                                                                                                                        «Opera — браузер, который мало где доминировал»
                                                                                                                        Если верить Statcounter, Opera — самый популярный брузер в России (и некоторых странах бывшего СССР) в 2009 году. Так что доминировал, и вполне себе не мало.
                                                                                                                          +3
                                                                                                                          Россия- это как раз и есть «мало где» в масштабах интернета.
                                                                                                                            +1
                                                                                                                            Да, глобально это было 2%.
                                                                                                                              +1
                                                                                                                              Поэтому боль от радикальных изменений в Опере и смены движка только в русскоязычном сообществе и была в основном замечена.
                                                                                                                          +4
                                                                                                                          Интересно, что слив по времени совпал с релизом Opera Neon
                                                                                                                            +3

                                                                                                                            Кого-то просто достало происходящее в опере.

                                                                                                                            +10
                                                                                                                            В общем, я собрал это дело для raspberry pi
                                                                                                                            Зависимости: libfontconfig1-dev libtinyxml-dev libxrender-dev libgstreamer-plugins-base0.10-dev libgtk2.0-dev libcups2-dev libfreetype6-dev libsqlite3-dev libxml-twig-perl zip

                                                                                                                            Патчи:
                                                                                                                            Build patch (был выше): https://paste.fedoraproject.org/527758/03599148
                                                                                                                            Arm patch: https://paste.fedoraproject.org/527759/45036061

                                                                                                                            ./flower -v -j 1 --without-kde4 --without-gtk3 --without-plugins --without-dual-plugin-wrapper --no-debug-symbols --optimize --without-autoupdatechecker --no-package-devel --release --package=tar

                                                                                                                            Если собирать на железке, то нужен свап на пару гигов и много терпения, ибо собирается больше суток
                                                                                                                            КПДВ: http://is2.4chan.org/g/1484503794169.png
                                                                                                                              +3
                                                                                                                              Мсье знает толк!
                                                                                                                                +4
                                                                                                                                Атож!
                                                                                                                                Малоизвестная, кстати (видимо потому, что закрытая) фича оперы: яваскриптовый движок можно расширять бинарными плагинами. Например дергать gpio из js.
                                                                                                                                  0
                                                                                                                                  Это возможно на raspberry или на андройде из оперы мобайл то же?
                                                                                                                                    0
                                                                                                                                    Исходников оперы-мобайл нету, поэтому без понятия.
                                                                                                                                    Судя по дефайнам они включены для профилей smartphone и tv, а на десктопе какраз выключены.
                                                                                                                                    Собственно, никто не мешает собрать примеры из modules/jsplugins и попробовать.
                                                                                                                              +5
                                                                                                                              Собрал под windows. Запускается, работает и даже html5 видео на youtube играет. Могу статью по сборке накидать, если надо.
                                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                  0

                                                                                                                                  Выше уже опубликована достаточно подробная инструкция по сборке под Windows.

                                                                                                                                +6
                                                                                                                                С opennet'а:
                                                                                                                                зато я понял, наконец, что за «непреодолимое препятствие» было у presto, почему он «устарел» и всё такое. про то, что «с кодовой базой presto сложно поддерживать новые стандарты» — это полная чушь, само собой. а вот то, что престо принципиально сдизайнен как однопоточный двигатель — это факт, который неоднократно упоминается в разной документации. редизайн на много потоков/процессов невозможен, только перепись.
                                                                                                                                  0
                                                                                                                                  Webkit тоже не особо просто переходит на новые парадигмы, и webkit2 потребовал много нового кода и для множественных процессов и платформенности и многопоточности и пр. Но возможно не так болезненно как было бы с presto, но есть ли смысл?
                                                                                                                                    +3
                                                                                                                                    ИМХО — смысла нет, возможно, конечно, если Presto переписать на потоки\процессы\рутины, то он и бы и стал работать на 10-30% быстрее, но, это бы не сыграло роли, он и так довольно шустрый. Короче — фап^W хайп на многопоточность сделал своё чёрное дело =(. Остается только надеяться, что Opera Software официально откроет сорцы, а то сейчас они вроде как и есть, а сделать с ними ничего нельзя.
                                                                                                                                    UPD:
                                                                                                                                    Или давайте распространять апдейты патчами, ночью, в поле
                                                                                                                                    +2
                                                                                                                                    А по-моему этот движок вполне возможно сделать многопоточным, было бы желание…
                                                                                                                                      +4
                                                                                                                                      Он и не нужен. Да, интерфейс однопоточен. Но тот же js — нет. Там вполне себе отдельные потоки. Плагины тоже отдельными потоками. Видео/Аудио — тоже.
                                                                                                                                        +3
                                                                                                                                        Однопоточность ядра — это фича, а не проблема.
                                                                                                                                        Она позволяла зарабатывать делая кастомные браузеры для телевизоров и автомагнитол (эти браузеры часто даже не содержали слово «opera», можно было догадаться только по «presto» в User-Agent).
                                                                                                                                        На таких железках не всегда доступны треды и другие модные штучки, вроде gcc новее 3-й версии.
                                                                                                                                          +4
                                                                                                                                          Однопоточность сначала была фичей, а потом стала проблемой. :)

                                                                                                                                          Насчёт кастомных браузеров и вообще кроссплатформенности — так и есть. Я на эту тему доклад делал.

                                                                                                                                          Статья на тему доклада: https://lvee.org/ru/abstracts/155
                                                                                                                                          Слайды: https://lvee.org/uploads/image_upload/file/385/Alexei_Khlebnikov.Crossplatform.2015-06-07.pdf

                                                                                                                                          В этих материалах есть и общая информация об архитектуре (код ядра vs код платформы). Не очень много, всё-таки NDA.

                                                                                                                                          И, «чтоб 2 раза не вставать», хочу порекомендовать отличную конференцию — LVEE.org, на которой я и делал тот доклад.
                                                                                                                                            +1
                                                                                                                                            Расскажите лучше, за что вы так надругались над OpenSSL? (часть с malloc'aми и прочим я понимаю)
                                                                                                                                            Обертка над оберткой и оберткой погоняет.
                                                                                                                                              0
                                                                                                                                              Предполагаю, чтобы иметь возможность собрать с чем-то другим. Но я не работал в Опере, просто догадка.
                                                                                                                                                +1
                                                                                                                                                Потому что надо было собирать для платформ, которые не поддерживают глобальные переменные.
                                                                                                                                                  +4
                                                                                                                                                  Да и тут вопрос, кто над кем надругался. :) Так-то очень мучительно было эти обёртки делать.
                                                                                                                                                    +1
                                                                                                                                                    Охотно верю. Попытки прикрутить ECC тоже весьма мучительны (и пока безуспешны)
                                                                                                                                          0
                                                                                                                                          Может кто-то пожалуйста, порт его ангстрем Linux?
                                                                                                                                            +1
                                                                                                                                            Интересно, под WinRT собрать можно? А то первый сурфейс без нормального браузера прохлаждается.
                                                                                                                                              0

                                                                                                                                              Под WinRT нужно очень много переделывать, не стоит шкурка выделки.


                                                                                                                                              P.S. А первому сурфейсу место давно в мусорке, если на ebay не смогли пристроить — наверное, самая "тормознутая" (особенно, после принудительного апдейта на 8.1) из "таблеток", что я когда-либо держал в руках.

                                                                                                                                                0
                                                                                                                                                Ну насчет мусорки можно поспорить. Вещь очень качественно изготовленная, с шикарным чехлом-клавой, нормальным аккумом. Видео крутит, 13 офис летает. Не хватает только нормального браузера.
                                                                                                                                                  +1

                                                                                                                                                  Был когда-то (довольно давно) доступен хак, позволяющий запускать "обычные" (в смысле, Win32) приложения, собранные под arm (в текстовом конфигурационном шаблоне проекта делалось одно небольшое изменение), на Windows RT. Посмотрите в одном из подфорумов вот тут.

                                                                                                                                                    +1
                                                                                                                                                    Спасибо, поковыряю на досуге.
                                                                                                                                              +3
                                                                                                                                              Яваскрипт-движок можно собрать отдельно:
                                                                                                                                              $ ./jsshell -e 'print("hello")'
                                                                                                                                              Opera JavaScript shell (, built Пн янв 16 15:23:18 MSK 2017)
                                                                                                                                              Setting address space limit to 512 MB

                                                                                                                                              hello
                                                                                                                                              --------------------------------------------------------------------------------
                                                                                                                                              Compilation time: 0.073975 ms
                                                                                                                                              Execution time: 0.047852 ms
                                                                                                                                              Major collection : 0.4ms (850.5%)
                                                                                                                                              Tracing : 0.4ms (741.8%)
                                                                                                                                              Sweeping : 0.1ms (106.6%)
                                                                                                                                              Number : 1
                                                                                                                                              Minor collection : 0.0ms (0.0%)
                                                                                                                                              Tracing : 0.0ms (0.0%)
                                                                                                                                              Sweeping : 0.0ms (0.0%)
                                                                                                                                              Number : 0
                                                                                                                                              Total in collection : 0.4ms (850.5%)
                                                                                                                                              Total bytes allocated : 87992
                                                                                                                                              Peak bytes allocated : 133032
                                                                                                                                              Total external bytes : 0
                                                                                                                                              Instructions executed : 5
                                                                                                                                              done!

                                                                                                                                                +5

                                                                                                                                                JSS Hell

                                                                                                                                                  0

                                                                                                                                                  Ждём порт nodejs на presto :D

                                                                                                                                                    0
                                                                                                                                                    зачем?
                                                                                                                                                      +2
                                                                                                                                                      Потому что можем ))
                                                                                                                                                      0
                                                                                                                                                      Имеете в виду на Carakan?
                                                                                                                                                    +4
                                                                                                                                                    Если кто захочет поковырять, присоединяйтесь (Tg)
                                                                                                                                                      +2
                                                                                                                                                      Разработка в Телеграмм?
                                                                                                                                                      Будущее уже тут…