Современный браузер должен поддерживать обилие стандартов и технологий, которые превращают веб-документы в интерактивные приложения, медиаплееры со стримингом или даже игры. В связи с этим сегодня браузерных движков не так уж и много. Ушло время, когда достаточно было кое-как вывести текст и картинки. Сегодня нужна мощность виртуальной машины для 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). В комментариях этого поста идут обсуждения зеркал и компилируемости исходников.
Поделиться с друзьями
Antikiller
В пост призываются Shpankov (с комментариями от фон Течнера) и pepelsbey
RedVelvet
Думаете слив от бывших сотрудников?
Antikiller
Я думаю, что они могли бы хотя бы сказать «оно» или «нет». Хотя вот листаю код, кое-какие доки в coredoc — похоже не фейк.
Dageron
Будет круче, если это «слив» от тех, к кому по случайности попали старые компы/оргтехника. Как часто бывает с утечками исходников прототипов игр, которые находят прямо на devkit-ах консолей на интернет-барахолках.
StjarnornasFred
Всё, репозиторий больше не «пока что». Поэтому, если кто-то из гиктаймеров успел выкачать всё — ждём перезаливки на облачко. Вроде камрады ниже (@brzsmg, staticlab и кто-то ещё) успели скачать — к ним и просьба перезалить.
Dageron
Уже разошлось по миру, см. на реддите и в других местах. Ну а что единожды попало в сеть, останется там навсегда. Теперь, после takedown-а репозитория, от этих исходников точно не отстанут. Иначе — могло бы просто побаловаться с ними и забить на «старье». Но не теперь, когда аутентичность (и актуальность кое для кого) подтверждена.
Единственное из всей этой истории, что мне по-прежнему интересно — это источник утечки. Слабо верится, что это кто-то из бывших разработчиков взял и решил выложить. Версия со списанной оргтехникой и неочищенными носителями информацией мне кажется более актуальной.
Acuna
А почему, соббсно, нет? Тем более написано, что «Аккаунт пользователя prestocore, выложившего файлы, анонимен и не содержит идентифицирующей информации». То есть понятно, что кому-то зачем-то пришлось шифроваться к тому-же.
MikailBag
Кто-то не захотел иметь проблемы с полицией / спецслужбами какой-нибудь страны.
Боюсь, что Опера выложившего затаскает по судам.
Acuna
Ну вот. Особенно страшно для него же самого будет, если это сам разраб Оперы и окажется.
NetBUG
>останется там навсегда
Не всегда, к сожалению.
Я _очень_ хочу найти один проект, выложенный в Сеть автором в 1999 году и удалённый по каким-то причинам отовсюду (включая зеркала на archive.org).
Сам файлик, если я правильно понял, имеет размер в 56 килобайт или около того, исходников вроде не было в комплекте. Я нашёл чей-то архив программ для него на Archive, но ссылка на сам файл bas9k.zip была потёрта.
eisaev
Вот прям про вашу ситуацию. Есть подозрение, что у этого человека (в смысле у немца) и необходимый вам файлик есть.
alsii
Вот я тоже так думал. Пока не приключилась такя история. Есть такой лингвист Джон Кихада (John Quijada). Изобрел он как-то искусственный язык — ифукиль. А потом поигрался с ним немного, и раз, изобрел другой искусственный язык — илакш. И вот в этом илакше была очень занятная письменность. Все материалы он выкладывал на свой сайт. И там было довольно много всего на эту тему. И вот как-то, когда мне понадобились "красивые и загадочные письмена", я решил сходить к нему на сайт и позаимствавать несколько надписей линейным письмом илакша. И там я прочитал, что автор в илакше разочаровался и вернулся к работе над усовершенствованым ифкуилем. И все материалы по илакшу убрал...
Фигня, подумал я!
подумал я! И подшел искать в сети. И нашел 100500 ссылок на сайт Кихады :-( Похоже никто не озадачился тем, чтобы к себе что-то скопировать. А зачем? Это же W.W.W., а в нем рулят HTTP и гиперссылки.
Впрочем, может я просто гуглить не умею? Если кто ткнет меня носом буду премного благодарен.
sumanai
Именно поэтому я установил ScrapBook X и тупо сохраняю себе все интересные страницы (а то и сайты), качаю все интересные репозитории и вообще храню у себя всю информацию, благо жёсткие диски достаточно дешёвые, чтобы ничего не удалять.
staticlab
Разве только вот осталось: https://web.archive.org/web/20090522161309/http://www.ithkuil.net/ilaksh/Chapter_11.htm
ggrnd0
удаленоJogger
Не думаю что от этих двоих есть хоть какой-то толк. Как минимум первый точно говорящая голова, он никогда не говорил правду, только повторял официальную позицию, даже если она противоречила здравому смыслу.
Antikiller
Второй, вы имеете в виду?
Jogger
Нет, я писал именно про первого. Если и второй тоже — значит оба.
pepelsbey
Ни у кого из упомянутых доступа к движку не было, разве что Йон может подтвердить.
Jeditobe
Надеюсь, что под гнетом утечки компания примет решение открыть исходники по-настоящему.
https://www.change.org/p/opera-software-open-sources-of-presto-engine
nikolaynnov
Что-то маловато пока голосов. Чем смог поддержал. Будем надеяться, что после такой утечки сорцы всё-таки официально передадут в опенсорс.
keysi
del
unxed
Прокомментируйте, пожалуйста.
Jeditobe
Я волнуюсь, Shpankov "последний раз был на сайте 31 декабря 2016 в 16:26", а последнее сообщение от него вообще месяц назад.
nik_vr
Не волнуйтесь, ВКонтакте он бывает регулярно (https://vk.com/id3942209), и даже пишет иногда.
ptica_filin
Кто-нибудь уже попробовал скомпилировать? :)
brzsmg
Нужна VisualStudio 2010.
Открываем решение
\platforms\windows\OperaProjectFile.vcxproj
Ругается что не хватает кучи проектов:
staticlab
А почему вы открывали vcxproj, а не sln? Там как минимум для libvpx путь корректно прописан, и нужный проект действительно лежит, где ему надо.
staticlab
По-видимому, недостающие файлы проектов генерируются из *.vcxproj.template при помощи vcxproj_update.py
CaptainFlint
Там в сорсах вообще какая-то своя система сборки живёт, flower называется. Пока детально не ковырял, поэтому не могу сказать, как она соотносится со студийными проектами и солюшенами.
staticlab
Из доков к flower: Flower is a build tool designed to replace GNU make for building Opera products on UNIX-like systems. Так что к Windows и Mac она, по-видимому, никак не относится.
CaptainFlint
А, понятно.
А с темплейтами, похоже, может работать ещё и скрипт git_checkout_hook.sh.
P.S. Кстати, он же и запускает vcxproj_update.py.
staticlab
Очевидно, при коммите он должен удалять файлы этих проектов, а затем их пересоздавать:
CaptainFlint
Не при коммите. При чекауте. Смотрит, имеются ли отличия в темплейт-файлах между предыдущим коммитом и тем, на который чекаутимся. Если есть — запускается перегенерация проектных файлов из этих шаблонов. Как-то так.
staticlab
Да, прошу прощения, оговорился.
RedCatX
Скомпилировал под 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-версия работает абсолютно нормально.
Таким образом, исходники старой Оперы теперь доступны. Но что с ними делать дальше — вот в чём вопрос…
hottabxp
Небольшое дополнение: что-бы standard_skin.zip автоматически собрался, нужно скачать 7zip архиватор и скопировать исполняемый файл «7z.exe» в папку, которая есть в PATH. Я создал папку C\bin, скопировал 7z.exe в эту папку, и добавил её в в PATH. Странно, но у меня encoding.bin создался сам при сборке. У меня windows 10 x64 и visual studio 2010.
RedCatX
Спасибо за дополнение! Действительно, с указанным в PATH путём к 7zip, дефолтный скин собирается автоматически. А что касается encoding.bin, то присмотревшись к логу сборки, я обнаружил там сообщение «Failed creating encoding.bin». Нужно разобраться…
velezh
У меня encoding.bin создался сам.То ли тут 7z помог, то-ли еще что.
velezh
Эта версия OpenSSL уязвима Heartbleed. Сборка с 1.0.1u проходит успешно, но и ее не рекомендуют к использованию
velezh
Сборка с OpenSSL-1.1.0c прошла успешно, только нужно установить NASM, добавить папку с ним в path, командную строку Visual Studio открывать с привилегиями админа, вместо libeay32.lib и ssleay32.lib копировать уже libcrypto.lib и libssl.lib и в autoupdate_checker в разделе Linker > Input > Additional Dependencies указать их имена.
andreymal
Если правда слив, то, боюсь, толку от этого немного, так как сомнительна возможность использования этих исходников с юридической точки зрения
(Здесь нужен
AppCheckerPVS-Studio :)bodqhrohro
Будет как с Wine/ReactOS. Некоторые разработчики поглядывают на слитые исходники Win2K, но переписывают.
Jeditobe
У нас никто не поглядывает.
Antikiller
А что плохого в подглядывании? Прямой копипаст — да, нельзя по законам юридическим и моральным, а посмотреть, как что-то сделано, не зазорно.
Jeditobe
В нашем случае это непозволительная роскошь, череватая большой бедой. Мы тщательно избегаем нарушения авторских прав Майкрософт. Мы стараемся не оставить ни малейшей лазейки для возможности для успешного преследования нас в суде.
Мы запрещаем разработчикам даже подглядывать в утекшие коды. Если достоверно известно, что разработчик смотрел в исходники, опубликованные нелегально, такой разработчик никогда не получит права коммитить код в транк проекта, а его патчи в саму ОС вряд ли будут приняты (но он все еще сможет написать наборы тестов).
bodqhrohro
А для Wine это гарантируется? Ведь наработки из него используются, например, в Arwinss.
Dageron
А если такого разработчика сразу не заметят? Ну не прямые же фрагменты кода же он будет коммитить, и не большими кусками сразу. И кто будет заниматься проверками «не-майкрософтности» кода, если сам в подобные источники никогда не заглядывал?
Jeditobe
Все очень просто, разработчик должен уметь объяснить происхождение каждого фрагмента своего кода, почему он написал так, а не иначе.
Кроме того, разработчики проходят у нас проверку не менее года, прежде чем получить значительную степень доверия.
И третье, любой код проходит ревью, во время которого так или иначе претерпевает изменения, так как у нас свои Бест Практикс, которые точно различаются с принятым в майкрософт.
Dageron
Но это же лишь подтверждает обратное! Получается, что при осознанном понимании заимствованного кода разработчиком, при адаптации его под требуемый фирменный стиль и последующих изменениях на ревью другими разрабами (что вообще, по сути, частично снимает ответственность с первоначального комиттера), определить заимствование из решений MS в той же области почти невозможно.
Любопытно, что похожая ситуация была в проекте Mono, где велик был соблазн залезть в утекшие исходники .NET Framework (позже, вроде, даже перевыложенные самими MS, что однако не сняло ограничения по официальному лицензированию, а этим Mono тоже были всегда озабочены).
Jeditobe
Это ничего не подтверждает. Все попытки использовать утекшие коды у нас тщательно пресекаются. Мы с огнем не играем.
Третий пункт нужен для того, чтобы избежать случайного сходства с проприетарными исходниками. Бывают изредка в программировании подобные парадоксальные ситуации.
Dageron
Т.е. с майкрософтскими исходниками все же сравнивают код определенные люди в команде?
unxed
Насколько я понимаю, DMCA позволяет следующий протокол: один человек смотрит утекшие исходники (или, скажем, логи дизассемблера) и подробно документирует это дело, другой — по этим докам реимплементирует (или же проверяет свой код на похожесть). Это законно.
maniacscientist
Придумали бы лучше процедуру невосстановимой переделки. А то наверняка бывают ситуации, когда написанный код такой же как оригинальный, потому что по другому нелогично
unxed
Поздравляю, вы только что переизобрели полиморфные вирусы!
maniacscientist
Полиморфные вирусы научились работать с исходниками на высокоуровневых языках?
Dageron
> А что плохого в подглядывании? Прямой копипаст — да, нельзя по законам юридическим и моральным, а посмотреть, как что-то сделано, не зазорно.
Я бы еще добавил: по законам юридическим какой юрисдикции. Ну глупо, скажем, в Иране сказать «по законам [Ирана] нельзя посмотреть утекший код и взять реализацию себе». И список стран, где такое явно неуместно, будет больше, где уместно.
Другое дело, что крупные площадки (вроде Github) ассоциируют себя напрямую с США и ЕС, а иногда и полностью находятся находятся в юрисдикции этих стран, где миром «рулит» DMCA 1998 года.
Выход: нужны другие площадки, иная кооперация и т.п.
И не исключаю что все это существует уже, при чем далеко не обязательно лишь в даркнете.
13_beta2
Ни git ни presto в 1995 не существовали, хотя тут вопрос оформления.
Буду рад, если это настоящие исходники и думаю пока не слишком поздно сделать из них что-то интересное.
mukizu
Ну, комментарии в коде пока говорят об аутентичности. Дома надо будет пошерстить
Да и вещи типа https://github.com/prestocore/browser/blob/master/data/translations/ru/search_eng.ini похожи на правду
13_beta2
Согласен, при беглом просмотре очень похоже на правду.
CaptainFlint
Дату коммита в гите поменять — дело нескольких секунд. Не думаете же вы, что весь оригинальный репозиторий Оперы так и состоял из двух коммитов, первых из которых пустой, а второй — целиком вся Опера 12.15, написанная с нуля одним махом. :-)
13_beta2
Не думаю. Как и сказано выше — дело оформления, но имитация коммита от 95 года немного настораживает. По остальным признакам скорее похоже на настоящие исходники. По крайней мере случайные файлы оказались реально кодом, а не мусором на сотни мегабайт.
CaptainFlint
CaptainFlint
А вот, кстати, интересно, случайно ли был выбран именно год первого релиза Оперы. :-)
staticlab
И "22 июня, ровно в 4 часа". Хотя "днём рождения Opera" считается 30 августа.
Ezhyg
А дата и время вас больше ни на какие мысли не натолкнули?
staticlab
Нет, ну я понимаю, что 4:00 GMT+4 — это 0:00 UTC, просто подметил совпадение.
nik_vr
Если эту дату и время выбрали неслучайно, то круг подозреваемых в сливе сужается до жителей эксСССР :)
CaptainFlint
Мне кажется, ВОВ сюда приплетать уж точно чересчур, если вы про неё.
nik_vr
Я просто развил мысль Ezhyg.
Ezhyg
извините, не разобрался, подумал, что именно такая формулировка есть в текстах :(
CaptainFlint
30 августа — это дата основания компании. Первая версия браузера была представлена 10–14 апреля 1995 на конференции WWW. А первая публичная версия (2.0) вышла только в 1996 году. Так что откуда взялось 22 июня, я пока не понял. Разве что самый длинный день года, но при чём он тут… Но всё равно 1995 год явно знаковый.
immaculate
В 95-ом существовал CVS, ClearCase (правда, лучше бы не существовал), и куча других систем контроля версий. Обычно люди и компании стремятся сохранить историю версий и импортируют в новую систему всю историю изменений, а не просто самую последнюю версию исходников, и для этого есть масса инструментов.
История вообще могла пройти несколько этапов, например, CVS -> Subversion -> Mercurial -> Git.
Если я правильно понял причину недоумения.
immaculate
P.S. Извините, посмотрел на репозиторий, там нет никакой истории, только фейковые даты у каждого файла.
bot1no4ek
У меня одного антивирус ругается? Вот что Касперский Тотал Секьюрити говорит:
Antikiller
Он и должен ругаться, это некорректная png, которой самое место в тестах.
iborzenkov
PNG integer overflow (CVE-2013-2977)
Логично блин :)
esata
Symantec Endpoint тоже ругается, но на всю папку с репозиторием.
DAiMor
Примечательно то что сам аккаунт и репозиторий были созданы почти год назад, еще 11 февраля 2016.
в исходниках, встречаются копирайты и 2003 и 2011 года, с именами разработчиков.
datacompboy
feldgendler: https://github.com/prestocore/browser/blob/8c5977d18f4ed8aea10547829127d52bc612a725/adjunct/quick/documentation/quick.tjp#L12
datacompboy
https://github.com/prestocore/browser/blob/8c5977d18f4ed8aea10547829127d52bc612a725/modules/logdoc/module.tweaks
Ы=ххъ ;D
Fqyeh29
Хм.
Вопрос к знатокам: если это все же оригинальные исходники, то сможет ли Opera в суд на опенсорс проект основанный на этом двиге? Я просто туп в таких вопросах…
Если действительно Presto, то это очень здорово. Может кто то сделает новый годный браузер)
TheOleg
DMCA и всё последующее.
nik_vr
Учитывая географию владельцев этих исходников, скорее EUCD.
zviryatko
вот кстати и репорт https://github.com/github/dmca/blob/master/2017/2017-01-12-Presto.md
equeim
На кого они будут подавать в суд, если разработчики анонимны, например? На гитхаб?
TheOleg
На тех кто размещает исходники/продукт. Разрабатывать сколько угодно можно.
mukizu
Подать в суд можно по воле левой пятки, практически. Вопрос скорее в том, каковы шансы этот суд выиграть.
inkvizitor68sl
> сможет ли Opera в суд на опенсорс проект
Конечно, сможет.
NeoCode
Если разработчики будут полностью анонимны, а репозиторий где нибудь в Даркнете (торе или i2p) то пускай усудятся:)
Я кстати давно жду такого явления как «темный open-source», которое объединяло бы открытую разработку и полное презрение к любому копирайту… А может такое уже где нибудь есть?
Volcher
Есть, как не быть: git.repo.i2p(.xyz)
Оно, как и прочие темные интернеты, не слишком живое. Но вполне рабочее.
TheOleg
Только это не надо будет никому. (К сожалению многих, наверное)
unxed
У меня нет i2p, но их зеркало в .onion (git.psii2p655trtnvru.onion) — лежит.
Ещё на просторах интернета встречается упоминание gitweb2zl5eh7tp3.onion, но он тоже лежит.
ehww2ercchnq7633.onion? Лежит.
А есть ещё варианты? Разумеется, из чисто академического интереса спрашиваю.
unxed
upd: http://git.repo.i2p.xyz/ работает :)
LexS007
вот бы на GitLab еще перешли)
unxed
Мне тоже кажется, что основная проблема там — отсутствие issue tracker'а.
staticlab
В GitLab?
unxed
В git.repo.i2p.
orignal
Через .i2p.xyz не все бывает доступно (например zzz.i2p.xyz или stats.i2p.xyz). Причина в том что весь трафик идет фактически через один узел, а также разнообразные куцхакеры.
Потому, по возможности, рекомендуется ходить изнутри I2P, особенно на ресурсы с большим трафиком то git.
nik_vr
Кстати, интересный нюанс. Били ли при продаже компании китайцам в явном виде переданы права на Presto. Формально на тот момент он уже был похоронен. Или Presto вообще остался в Норвегии, как используемый в каких-то телевизорах (продали же десктопное подразделение, да?).
iSage
Там не только движок, там вся опера и м2. Под линуксом с помощью пары патчей и такой-то матери собирается. Версия 12.15
Работает, даже видео на ютубе играет.
Antikiller
В т.ч. исходники интерфейсной части? А то в старом блоге Оперы рассказывали о том, что для тестов движка у них используется минимальная морда.
Если выложено всё полностью, то это очень хорошо, для изучения в академических целях, конечно.
nik_vr
Судя по набору файлов, там даже инсталлятор есть.
PS. Привет! :)
Antikiller
Привет =)
Я на работе бегло посмотрел файлы, но C++ — не моя специализация. И, блин, вот сегодня первый раз, когда я об этом жалею.
iSage
Да. Весь интерфейс. Все системные скрипты, шейдеры для libvega и т.п.
Все это дело жутко модульное. Каждый диалог, каждая фича — модулем.
В целом от исходников довольно приятные впечатления и собирается все минут за 5 не выжирая оперативку, в отличии от другого известного движка.
iSage
Ну, не считая того, что местами пришлось патчить return FALSE на return nullptr в функциях, возвращающих указатели.
Antikiller
Собирали через flower или ещё как-то? Может инструкцию накидаете?
iSage
да, flower
http://paste.fedoraproject.org/526781/32598714/ — патч на return'ы и на системный tinyxml
./flower -v --without-kde4
(у меня пятые кеды и оно в итоге собирается наполовину с пятыми, наполовину с 4ми и падает)
У меня на 64 битах не собирается автоматом 32битный плагин-враппер, потому что инклюдит 64-битный gdk. Приходилось брать команду из выхлопа, заменять путь к инклюдам и собирать вручную. Там три файла, для которых так надо сделать.
flover можно запускать с -j 1 дабы было виднее, на чем он падает.
Antikiller
Мерси!
iSage
ах, да, там еще надо или отключить сборку апдейт-чекера или положить ему туда исходники curl
resetnow
Можно ссылку сделать в /usr/include/curl
zviryatko
есть подозрение что поможет вот этот параметр
--without-autoupdatechecker
.p.s. вот бы кто-то еще написал список зависимостей, а то приходится методом проб и ошибок ставить все по очереди.
Yukarin
Подтверждаю, собирается на генте с ~amd64 профилем. Версия браузера 12.15, версия престо 2.12.388.
У меня кстати собралось с системной so-шкой tinyxml без всякиз патчей. А инклюды gtk получаются через pkg-config, который и отдаёт lib64 вместо lib32, оно в platforms/quix/module.build/plugins.conf.py.
Ну и там по мелочам в некоторых perl-скриптах старый формат регекспов и переменных, но на сборку это не влияет.
Yukarin
Ну и раз уж товарищ iSage начал фиксить варнинги, то и я немного отмечусь.
Микропатчик, фиксит похожую на FALSE->NULL проблему во встроенном hunspell — http://pastebin.com/2EUFEBYp
Yukarin
Ещё один микропатч — http://pastebin.com/UuaZSWZg
Фиксит релизную (--release) сборку на линуксе. Современные (gcc5+) компилеры выдают кривой код после оптимизации, что приводит к крашам на очень многих страницах с JS.
datacompboy
ну это неправильный фикс. правильный фикс — поправить места падения.
Yukarin
Там ровно одно место, в котором используется ихний delete-враппер. Он вообще много где используется, но падает только там.
Yukarin
И падает именно на -O2-3, на -O0, который в дебажной конфигурации, такого добра нет.
Что опять же наводит на мысли о оптимизаторе. Поэтому и добавлен флаг, чтобы он ещё где подобного не учудил.
Собственно, была аналогичная проблема в gcc6 и хроме, он там тоже в -O3 собирается, и без этого же самого флага были очень похожие краши на некоторых JS.
datacompboy
То есть на -O2 тоже падает?
А есть возможность с ASAN'ом собрать?
https://github.com/google/sanitizers/tree/master/address-sanitizer
inferrna
Вот, раз такой молодец, давай репозиторий с патчами и build.sh
iSage
Патч есть выше. Все, что нужно для сборки — голова и ./flower --help
Распространять код я не собираюсь, его и так уже все, кому не лень отзеркалили.
unxed
> репозиторий с патчами
Как я понимаю, речь идёт не о том, чтобы распространять утекший код, а о том, чтобы коллективно создавать и распространять его улучшения. Вот интересно, кстати, насколько легален подобный процесс?
iSage
Нет, судя по манере изложения там именно требование всего готовенького. Энивей, патч пока всего один.
Процесс нелегален, поскольку патчи содержат куски исходного кода.
Dageron
Все зависит от страны. Главное, чтобы такой программист не нарушал открыто законы (а чаще всего просто практику их исполнения) той, гражданство которой имеет и в которой проживает. Никто не мешает ему представиться человеком с Кокосовых островов.
dartraiden
Смотря в каком виде.
Если в виде диффов/патчей, то могут придраться к тому, что в них фигурирует код оригинала.
Если в виде «в файл такой-то после строки номер X нужно добавить вот этот написанный мной с нуля код» — то придраться практически невозможно.
sumanai
Только такие патчи привязаны к оригинальному коду намертво, и применить два таких на один файл очень затруднительно, придётся каждый раз сверятся с оригинальными исходниками.
Интересно, а к именам файлов не придерутся?
Dageron
Можно сделать таблицу с однозначным соответствием «оригинальный_файл = сгенерированный_хеш_код» ))
sumanai
Тогда уж и строки хешировать, чтобы включить их в контекст diff вместо оригинальных, ну и сам софт для diff модифицировать соответствующим образом. Тогда удобство работы с такими патчами будет не сильно ниже, чем с обычными.
staticlab
Интересное концептуальное решение получается: система контроля версий, в которой вместо нулевой итерации будет magnet-хэш или torrent-файл, а в диффах вместо предыдущей версии строки указан её хэш. Правда в дифф-файлах следовало бы также предусмотреть возможность и других исправлений, таких как перемещение блока кода или замена части строки, чтобы максимально не засвечивать в коммитах оригинальный код.
WaveCut
Просто мечтаю чтобы кто нибудь собрал легаси оперу для маленьких АРМ девайсов на линуксе!
nik_vr
[del]
Noizefan
Ну не знаю. Как-то сразу после анонса, плюс на Гитхаб, смахивает на слив ради пиара. Да к тому же, судя по информации выше — не первый такой раз, а разве IT-гигант не научился бы на своих ошибках? И код неполный, как так сливать можно?
Мой вердикт — пиар акция, да и только.
nik_vr
Код вполне себе полный. См. комментарии выше — вроде бы даже собрать уже удалось.
Suvitruf
Repository unavailable due to DMCA takedown.
Jeditobe
Теперь ждем на торентах
Jogger
Ну вот, а я был на работе и не успел скачать. Может кто-нибудь поделиться в личку?
RedVelvet
Быстро отреагировали.
unxed
Зато теперь в аутентичности утекших исходников можно не сомневаться.
andreymal
Лично я бы посомневался в том, что анонимус не добавил какой-нибудь бэкдор, троян или что-то типа того забавы ради
RedVelvet
Мне больше интересно кто и зачем слил — да еще на гитхаб где такие вещи банятся на раз два.
Mingun
Перед тем, как они банятся, их успевает увидеть куча народу и сохранить себе. Так что смысл именно в GitHub'е есть.
sukhyi
у кого копия осталась? не успел :(
nik_vr
«То, что попало в интернет, останется там навсегда.»
unxed
Ага, в торрент и magnet-ссылку — в блокчейн BTC, комментарием к транзакции.
(картинка-с-троллейбусом-из-буханки-хлеба)
Falcon_peregrinus
Ах, если бы… Это только с тем, что всем интересно. А вот мало кому нужный контент (в моём случае — музыка) запросто может пропасть навсегда :-(
alexantr
Вчера клонировал репозиторий:
https://mega.nz/#!Lo0l1aZA!hFtA8QDtkgwYFm15slZbZWkGprhwI6R8xkl3G9ulzDI
Вариант без папки .git (на 100 МБ меньше):
https://mega.nz/#!GhVTVaRC!fhaeAwWmOfpMbMznjziDmAouuQnPFdifK_xEllImBKk
NeoCode
Господа успевшие скачать, ждем раздачу на торрентах:) Или может уже где-то есть?
sens_boston
Камрад на реддите выложил архив ;)
dartraiden
Не ручаюсь за достоверность, но пишут, что по хэшу совпадает с тем, что было на гитхабе…
ссылки в этом треде
Jogger
Файл такой же как по ссылке выше на реддите, так что похоже он действительно оригинальный.
unxed
Чтоб было спокойнее за то, «откуда дровишки»: https://www.opennet.ru/openforum/vsluhforumID3/110169.html#11
Вот тут ещё зеркало репозитория.
9uvwyuwo6pqt
Я тоже скачал, как только увидел новость тут. https://u.nya.is/qjbxnn.zip
iLi0ni
Тут какая-то ссылка есть…
Zero3K
Его можно скачать, перейдя в https://mega.nz/#!kkYw0RiY!QdpCDvdtMcfzOHNNXZ52sBjZLDMFI68c2BPAihS0TRQ.
WhistlerW
тут http://boards.4chan.org/g/thread/58469437/well
semio
Гитхаб лег под хабраэффктом?
При попытке склонировать — выдает 504. При попытке скачать zip — 500.
semio
Комментарий долго ожидал модерации, в момент опубликования уже устарел и, в итоге, набрал минусов.
Эта система комментариев для незахабренных пользователей немного кривовата…
sumanai
Я тоже в своё время мечтал о возможности снять комментарий с модерации.
as_lan
Вот и прикрыли лавочку.
dark_snow
Присоединяюсь к остальным — поздно новость в вк увидел, может кто поделиться?
9uvwyuwo6pqt
https://geektimes.ru/post/284588/#comment_9813954
https://geektimes.ru/post/284588/#comment_9813890
https://geektimes.ru/post/284588/#comment_9813914
dark_snow
уже увидел — модерацию долго коммент проходил: я коммент в 12 вечера отправлял
nik_vr
На Меге есть копия исходников:
https://mega.nz/#!1h5BkKrA!CR9T-oxvFK-lU0jJYU3dvxuXQlvug_ayTqO7-uFaNv8
Lux_In_Tenebris
Репозиторий https://bitbucket.org/prestocore-fan/presto
Архив на разных файлообменниках http://pastebin.com/3bAvtQmm
openGSM
На Web.archive пока цело
unxed
Между прочим, из попыток пересоздания «старой оперы» Vivaldi и Otter тут уже все видели, а Fifth, кажется, ещё нет.
CaptainFlint
yefrem
Как он вообще? пользовались?
unwrecker
«Opera — браузер, который мало где доминировал»
Если верить Statcounter, Opera — самый популярный брузер в России (и некоторых странах бывшего СССР) в 2009 году. Так что доминировал, и вполне себе не мало.
sumanai
Россия- это как раз и есть «мало где» в масштабах интернета.
TheOleg
Да, глобально это было 2%.
Dageron
Поэтому боль от радикальных изменений в Опере и смены движка только в русскоязычном сообществе и была в основном замечена.
FlameArt
Интересно, что слив по времени совпал с релизом Opera Neon
dimm_ddr
Кого-то просто достало происходящее в опере.
iSage
В общем, я собрал это дело для 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
datacompboy
Мсье знает толк!
iSage
Атож!
Малоизвестная, кстати (видимо потому, что закрытая) фича оперы: яваскриптовый движок можно расширять бинарными плагинами. Например дергать gpio из js.
openGSM
Это возможно на raspberry или на андройде из оперы мобайл то же?
iSage
Исходников оперы-мобайл нету, поэтому без понятия.
Судя по дефайнам они включены для профилей smartphone и tv, а на десктопе какраз выключены.
Собственно, никто не мешает собрать примеры из modules/jsplugins и попробовать.
hottabxp
Собрал под windows. Запускается, работает и даже html5 видео на youtube играет. Могу статью по сборке накидать, если надо.
ggrnd0
давай
sens_boston
Выше уже опубликована достаточно подробная инструкция по сборке под Windows.
unxed
С opennet'а:
valbok
Webkit тоже не особо просто переходит на новые парадигмы, и webkit2 потребовал много нового кода и для множественных процессов и платформенности и многопоточности и пр. Но возможно не так болезненно как было бы с presto, но есть ли смысл?
t0pep0
ИМХО — смысла нет, возможно, конечно, если Presto переписать на потоки\процессы\рутины, то он и бы и стал работать на 10-30% быстрее, но, это бы не сыграло роли, он и так довольно шустрый. Короче — фап^W хайп на многопоточность сделал своё чёрное дело =(. Остается только надеяться, что Opera Software официально откроет сорцы, а то сейчас они вроде как и есть, а сделать с ними ничего нельзя.
UPD:
Или давайте распространять апдейты патчами, ночью, в поле
RedCatX
А по-моему этот движок вполне возможно сделать многопоточным, было бы желание…
iSage
Он и не нужен. Да, интерфейс однопоточен. Но тот же js — нет. Там вполне себе отдельные потоки. Плагины тоже отдельными потоками. Видео/Аудио — тоже.
zhengxi
Однопоточность ядра — это фича, а не проблема.
Она позволяла зарабатывать делая кастомные браузеры для телевизоров и автомагнитол (эти браузеры часто даже не содержали слово «opera», можно было догадаться только по «presto» в User-Agent).
На таких железках не всегда доступны треды и другие модные штучки, вроде gcc новее 3-й версии.
alexeikh
Однопоточность сначала была фичей, а потом стала проблемой. :)
Насчёт кастомных браузеров и вообще кроссплатформенности — так и есть. Я на эту тему доклад делал.
Статья на тему доклада: 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, на которой я и делал тот доклад.
iSage
Расскажите лучше, за что вы так надругались над OpenSSL? (часть с malloc'aми и прочим я понимаю)
Обертка над оберткой и оберткой погоняет.
Magister7
Предполагаю, чтобы иметь возможность собрать с чем-то другим. Но я не работал в Опере, просто догадка.
alexeikh
Потому что надо было собирать для платформ, которые не поддерживают глобальные переменные.
alexeikh
Да и тут вопрос, кто над кем надругался. :) Так-то очень мучительно было эти обёртки делать.
iSage
Охотно верю. Попытки прикрутить ECC тоже весьма мучительны (и пока безуспешны)
Zero3K
Может кто-то пожалуйста, порт его ангстрем Linux?
unrealee
Интересно, под WinRT собрать можно? А то первый сурфейс без нормального браузера прохлаждается.
sens_boston
Под WinRT нужно очень много переделывать, не стоит шкурка выделки.
P.S. А первому сурфейсу место давно в мусорке, если на ebay не смогли пристроить — наверное, самая "тормознутая" (особенно, после принудительного апдейта на 8.1) из "таблеток", что я когда-либо держал в руках.
unrealee
Ну насчет мусорки можно поспорить. Вещь очень качественно изготовленная, с шикарным чехлом-клавой, нормальным аккумом. Видео крутит, 13 офис летает. Не хватает только нормального браузера.
sens_boston
Был когда-то (довольно давно) доступен хак, позволяющий запускать "обычные" (в смысле, Win32) приложения, собранные под arm (в текстовом конфигурационном шаблоне проекта делалось одно небольшое изменение), на Windows RT. Посмотрите в одном из подфорумов вот тут.
unrealee
Спасибо, поковыряю на досуге.
iSage
Яваскрипт-движок можно собрать отдельно:
$ ./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!
Eklykti
JSS Hell
VovanZ
Ждём порт nodejs на presto :D
MikailBag
зачем?
sumanai
Потому что можем ))
t0pep0
Если кто захочет поковырять, присоединяйтесь (Tg)
openGSM
Разработка в Телеграмм?
Будущее уже тут…
Chamie
Разработка в i2p. Кибер/шифропанк уже здесь.
iSage
Патч на поддержку VP9: https://paste.fedoraproject.org/528850/14846609
Сперва нужно обновить встроенную libvpx до 1.3.0
Патч только линуксовый, сорри.
orignal
Копирастозащищенная раздача через I2P
magnet:?xt=urn:btih:664901345132aa13322bf4eb5a03192dc4a16b40&tr=http://5m3pd32zx43xk3uz6hvrdksj6tlg7abnjsc3j5kkd2yzctet4nmq.b32.i2p/announce
Трекер: ptt.i2p
openGSM
Четыре пира… Не вижу хваленого Хабраэффекта!
nikolaynnov
Жалко нет никакого опраса. Интересно сколько ещё людей ей пользуются. У меня коллеги постепенно сдаются, уже всего 2 осталось кроме меня, кто на 12й версии сидит. Да и я уже дома на Я.Браузер перешёл.
PrestoXen
Hello Russia! On 4chan we saw this leak too, and it got us very excited :) Thank you very much for it!
There's already been lots of progress, people have ported it to FreeBSD, Raspberry PI, Visual Studio 2015…
You can see some of our work here: https://github.com/PrestoXen/openopera-patches
I wish I spoke Russian because I'm sure you guys are doing great stuff too, I hope we can work together somehow. We have an IRC channel described in that github link, and we usually have threads on 4chan /g/ board, one is up now, feel free to visit! https://boards.4chan.org/g/thread/58544865
Google translate / Гугл переводчик:
Привет Россия! На 4chan мы увидели эту утечку слишком, и он получил нас очень возбужденными :) Большое спасибо за это!
Там уже было много прогресса, люди перенесли его на FreeBSD, Raspberry Pi, Visual Studio 2015…
Вы можете увидеть некоторые из наших работ здесь: https://github.com/PrestoXen/openopera-patches
Если бы я говорил по-русски, потому что я уверен, что вы, ребята, делаете большие вещи тоже, я надеюсь, что мы можем работать вместе как-то. У нас есть IRC-канал, описанный в этой ссылке GitHub, и мы, как правило, имеют резьбу на 4chan /g/ плате, один сейчас, не стесняйтесь посетить! https://boards.4chan.org/g/thread/58544865
iSage
Sup, Xen.
A couple of us are actually posting on 4ch too ;)
zanac
Поиск в эклипсе показал, что есть какая то поддержка симбиана :-)
unxed
А сейчас вообще хоть где-то ещё, кроме утекших исходников Opera, есть хоть какая-то поддержка симбиана?
zanac
gcc включая 6.4.0, scummvm
Zero3K
New Thread on 4chan: http://boards.4chan.org/g/thread/58567400
Btw, I still would like to have it ported to Angstrom Linux so I can run it on my Pandora.