GutHub получил от компании Opera Software требование (https://github.com/github/dmca/blob/master/2017/2017-01-12-P...) заблокировать один из репозиториев (https://github.com/prestocore/browser) под предлогом необходимости соблюдения действующего в США Закона об авторском праве в цифровую эпоху (DMCA). В заявлении утверждается, что репозиторий содержит незаконно полученные исходные тексты браузера Opera 12.15, основанного на проприетарном движке Presto, развитие которого было прекращено (https://www.opennet.dev/opennews/art.shtml?num=37031) в пользу использования технологий Chromium. Причина утечки исходных текстов не сообщается - непонято, имел место саботаж одного из сотрудников или код был похищен в результате взлома (https://www.opennet.dev/opennews/art.shtml?num=45046) инфраструктуры Opera Software в прошлом году.URL: https://news.ycombinator.com/item?id=13393994
Новость: http://www.opennet.dev/opennews/art.shtml?num=45855
Дайте сорцы!
"6 days 19:15:52 until upload expiration" http://dropmefiles.com/Xdvg4
Спасибо!
https://bitbucket.org/prestocore-fan/presto/src
зачем?
Чтобы повысить интерес потенциальных пользователей и увеличить количество реальных.
Чтобы пересадить на опера "многоцифер" и пропиариться.
Хотя, еще много людей сидят на вечно молодой опере12. Может даже больше чем на новых. Если бы не лицензия, могли бы и поддерживать сорцы, т к реально легкий и быстрый браузер был.
Не зря я решил сохранить себе локальную копию.
Осталось теперь понять, накой оно мне :)
Пили торрент, кому надо — сольют. Может, свободный аналог на основе запилят, типа ReactOS.
Дурачком растешь. Код ReactOS написан с нуля, а не из "утекших" исходников.
написан может и с нуля, а вот на основе чего - этого нам не скажут :)
Например согласно легенде код винды предъявляется при сертификации в ФСБ...
Вместо пропуска?
> Например согласно легенде код винды предъявляется при сертификации в ФСБ...По некоторым данным, тот код не собирается -- кой-чего не передали.
nsa.key же!
Не закусили перед сборкой? :)
По некоторым данным, если воспроизвести сборку не удаётся, сертификат не дают.
Только ФСБ тут, конечно, ни при чём. У винды ФСБшных сертификатов нет, только ФСТЭКовские.
> По некоторым данным, если воспроизвести сборку не удаётся, сертификат не дают.Чему только не давали... хорошо, что с тех пор явно произошла раздача пенделей.
> Например согласно легенде код винды предъявляется при сертификации в ФСБ
> По некоторым данным, тот код не собираетсяА какая гарантия, что это тот код и что он не очищен от закладок?
Так-то в свое время часть исходников Win2000 утекли вроде бы, уж не знаю, смотрел ли кто-нибудь из разработчиков Wine и ReactOS и использовал как основу для реализации чего-либо (думаю, что наверняка смотрели :) ).
У разработчиков Wine и ReactOS правило - тот кто хоть раз видел тот код отстраняется от разработки. Даже если смотрел краем глаза и меньше секунды.
Ога, конечно. Ты еще скажи каждый новый разработчик подвергается ректальному криптоанализу с цельую выяснить, смотрел он в те исходники
Правильно, его задача становится описывать алгоритм другому, который реализует :)
Но имело место утечка исходников Win 95\98\2000, если не ошибаюсь. Все желающие могут скачать на Пиратской бухте. На форуме обсуждался вопрос использования этих исходников, так что... ;)
Поделись, а!)) хоть в архив закатай выложи куда-нить
Забирайте.
aww.moe/z0egik.zip
(Честно не знаю, как администрация к таким ссылкам здесь относится, но надеюсь, что с пониманием)
https://bitbucket.org/prestocore-fan/
"Repository deleted"
Все еще доступен. Но надолго ли.
> Поделись, а!)) хоть в архив закатай выложи куда-нитьПо комментариям вижу что ссылки трут. Если так будет и дальше - желающие могут писать в электропочту (lord(лай)drunk.systems) :)
лучше сразу - в спортлото
> Не зря я решил сохранить себе локальную копию.
> Осталось теперь понять, накой оно мне :)т.е. выходит, что может быть и зря?
Ну, где все те люди, которые ныли "Эх, нам бы исходники престо"?
Ноем: "нам бы исходники presto легально под пермиссивной лицензией". Иначе что предлагаешь, уходить в то же правовое поле, где kat.cr и викиликс, всё время жизни проекта бодаться с DMCA, рисковать своей физической свободой, не иметь официальной поддержки ни одним легально работающим сайтом и т.д.? Ради чего, ради 2,5 пользователей?
Оглянитесь вокруг по трезвяни всего один раз и живите дальше спокойно - "системе" на Вас глубоко наплевать. Система занята пытками Ильдара Дадина и прочим таким, а на вас она чихала.
^
Вот ещё один порабощённый системой, который уже на всё плюнул и просто "живёт". А система его имеет. Каждый день. Только он уже этого не замечает...
> викиликс
> всё время жизни проекта бодаться с DMCAКонечно бороться, когда они раскрывают такие факты их хотят не просто заблокировать, но и посадить.
> ради 2,5 пользователей?
На викиликс ходит 2.5 пользователя? Ахахха, насмешил.
Ну, теперь уж победите!
Теория Заговора.Opera нынче полна троянов и бэкдоров от китайских госспецслужб, но если выложить исходники, которые как бы случайно утекли в сеть, да пошуметь, УДАЛЯЙТЕ!!!, мол, народ посмотрит код, в котором, ясное дело, нет троянов и бэкдоров и может быть тогда начнёт больше доверять этому броузеру и рейтинг Оперки может снова подрастёт.
Вполне приемлемая версия, причем тут заговор?
бред какой-то, утекли другие исходники...
Утекший код интересен только некрофилам.
Успокойтесь
Утёк только старый код, но массы об этом не знают и они будут уверены, что раз нет новостей, то бэкдоров в опере не обнаружено и её можно пользоваться. Полный бред. Массам плевать есть там бэкдоры или нет.
Но эта теория была шуткой, а как насчёт, им мстят за былое или обыкновенная война конкурентов?
> Утёк только старый код, но массы об этом не знают...Я на на Opera Presto с 9-й версии и пользуюсь ей до сих пор, потому в курсе, что после выхода 12-й ветки реализации каких либо API и поддержки новых стандартов не было. До 12.15 он фиксили разве что browser.js и какие-то "уязвимости". После 12.15 фиксились лишь серсифткаты, версия OpenSSL и т.п., т.е. сам код браузера не менялся. Люди, которые знают где это поменять, сделают это за пару несложных телодвижений.
Другое дело, что движок уже безнадёжно устарел. Если бы запилить поддержку какого-либо другого нового движка... но это титанический труд. По моему, больше шансов дождаться Otter.
Хотя я бы с удовольствием пользовался откорректированной версией Presto; люди вон до сих пор через правку бинарников патчат Presto, исходники для этого всё же лучше.
> Другое дело, что движок уже безнадёжно устарел.скажи, зачем ты такой глупый человек, а?
> скажи, зачем ты такой глупый человек, а?Для баланса. А если все будут такими умными как Вы?.. Должен же быть и кто-то глупый.
>> Утёк только старый код, но массы об этом не знают...
> Другое дело, что движок уже безнадёжно устарел. Если бы запилить поддержку какого-либо
> другого нового движка... но это титанический труд. По моему, больше шансов
> дождаться Otter.Смысл там как раз в движке ( не смотря на удобства интерфейса )
В любом случае, вряд ли это сделал уволенный и обозлённый бывший опера-работник ради мести,
скорее это чей-то ход, направленный на что-то.
ни себе, ни людям
Обсуждение https://m.geektimes.ru/post/284588/comments/
"Там не только движок, там вся опера и м2. Под линуксом с помощью пары патчей и такой-то матери собирается. Версия 12.15 Работает, даже видео на ютубе играет."
п-а_т~ч http://paste.fedoraproject.org/526781/32598714/
http://web.archive.org/web/20170114032926/http://paste.fedor.../http://web.archive.org/web/20170114033018/http://paste.fedor.../
Оу, а вот М2 - это уже интересно. Они в 2013 выделили его в отдельный продукт Opera Mail, причем только под винду, и дальнейшего развития он не получит. А тут интересно, есть шанс.
^_^ https://warosu.org/g/thread/58469437
-_- https://www.reddit.com/r/operabrowser/comments/5nk69m/
Вот она, основа для новой версии браузера Edge.
А чего им париться. Это вообще пиар-ход. Аккурат под выпуск "браузера будущего".
Парад некрофилов начнётся?
Новой Опере кирдык. Ей никто не захочет пользоваться, когда старую Оперук форкнут и начнут развивать. Руководству ничего не остаётся, как преследовать разработчиков новой Оперы, чтобы пресечь создание форка, и пользователей (в крайнем случае).
> Новой Опере кирдык. Ей никто не захочет пользоваться, когда старую Оперук форкнут
> и начнут развивать. Руководству ничего не остаётся, как преследовать разработчиков новой
> Оперы, чтобы пресечь создание форка, и пользователей (в крайнем случае).Фперёд, о джедай юный!
Вся Opera Software не потянула, но ты сможешь!
Хз, что там на самом деле: или они и правда "не шмогли", или их как-то "материально заинтересовали".
Ну и не факт что "не шможет" коммьюнити. История с Netscape доказывает, что не все так однозначно.
Нашли, с чем сравнивать. Netscape сам легально открыл исходники, и сам приложил массу усилий для создания сообщества. Причём это было в те времена, когда такой ход был совершенно экстраординарным, потому и привлёк много внимания.
>Новому Netscape кирдык. Им никто не захочет пользоваться, когда старый Netscape форкнут и начнут развивать. Руководству ничего не оставалось, кроме как поддержать разработчиков нового Netscape.Фперед, о джедай юный
Весь Netscape не потянул, но ты сможешь!
Теперь сами догадайтесь, о истории какого браузера шла речь и чем это закончилось. Так что ...
> Новой Опере кирдык. Ей никто не захочет пользоватьсяВ твоём классе Опера не популярна? А в других спрашивал?
Если чо заливайте на fex .. net и кидайте ключ
Уже нашел в вк но хз за безопасность файла405899542112
SHA1
e3fde54110fbe3a004508c4404fac77196540fcf
Вот скриншот, к новости можно подцепить. https://i.warosu.org/data/g/img/0584/69/1484355450121.png
Аxcекс денайдед
Из постороннего реферрера, нужно вручную вставить ссылку.
О! Сразу видно, что твой скриншот.
Сегодня уже нет смысла в них. Даже если сама Опера их выложит. Слишком много времени прошло. Теперь уже точно - Presto RIP.
Ниша легковесного открытого браузера, умеющего работать с современным вебом, все еще незанята. Даже в таком виде проект может быть интересен, как браузер для одноплатников, а если соберется хотя бы небольшая команда для его поддержки и развития - то может потеснить и остальные браузеры.Одно плохо - исходники по-прежнему остаются не легальными и их дальнейшая судьба действительно остается под вопросом.
Опера 12 давно уже вышла из поля "современного веба". Тебе об этом сейчас будут сообщать через два ресурса на третьем.
> Опера 12 давно уже вышла из поля "современного веба".По свидетельствам очевидцев даже ютуб работает, значит не все так плохо ;)
> Тебе об этом сейчас будут сообщать через два ресурса на третьем.
Это говорит только о том, что веб девеллоперы не проверяют в нем свои сайты. Но практически все они по-прежнему будут работать. Особенно забавно - когда сайт упирается и криво работает на "устаревшем" браузере, а после смены user agent начинает нормально работать.
Да, знаю. Демагогия и "через тернии к звёздам!". Ну так, в очередной раз, вперёд! Я знаю, чем это у вас заканчивается в реале - дело не доходит даже до "вперёд", а заканчивается ровно на "кукареку!".
> Опера 12 давно уже вышла из поля "современного веба". Тебе об этом
> сейчас будут сообщать через два ресурса на третьем.смени юзерагента — и не будут. уеб‐девелоперы — дятлы.
Не дятлы, а двигатели прогресса. Благодаря нам (веб-девелоперам) и нашим настойчивым требованиям обновить браузер, пользователи гораздо живее скачивают новые версии, в которых, помимо всего прочего, еще и браузерные уязвимости закрываются. Так что не ной и не отставай от Паровоза Прогресса. Если браузер не поддерживает часть стандарта - это проблемы браузера, а не веб-разработчиков. Или по-твоему неподдерживание стандарта надо всячески поощрять, делая костыли для недобраузеров?
> Не дятлы, а двигатели прогресса.двигатели может и двигатели, только вся конструкция едет не туда.
впрочем, и с прогрессом там тоже всё плохо. и со стандартами. как писали гуанокод с -webkit- — так и пишут. как не знали js — так и не знают. дятлы потому что.
> вся конструкция едет не тудаЭто называется эволюция. У эволюции нет направления и целеполагания. Инструменты и конструкция обслуживают чисто практические нужды, а не нужды диванных теоретиков, которые, сидя на диване, воображают, куда вся конструкция должна ехать.
> гуанокод с -webkit
Какие -webkit, о чем ты? С автопрефиксерами веб-разработчик пишет чистейший CSS. Вообще, до этого коммента, который ты читаешь, последовательность "-webkit" я набирал эдак лет 5 назад, хотя я и веб-разработчик.
> как не знали js — так и не знают
Ты о критиках js? Да, все верно, тут недавно один такой критик с удивлением обнаружил, что в js оказывается есть скоупы. Потом эти же самые критики идут осуждать воображаемых "дятлов, которые не знают".
>> вся конструкция едет не туда
> Это называется эволюция.это называется «деградация». не всякое движение является эволюцией.
> Какие -webkit, о чем ты? С автопрефиксерами веб-разработчик пишет чистейший CSS. Вообще,
> до этого коммента, который ты читаешь, последовательность "-webkit" я набирал эдак
> лет 5 назад, хотя я и веб-разработчик.рад за тебя, чо. ты у нас теперь все интернеты пишешь, видать.
>> как не знали js — так и не знают
> Ты о критиках js?нет, я о вас, уеб‐дивилопирах. вы, впрочем, не только js — вы всего стека наглухо не знаете.
а вообще — извини, конечно. чего это я с уеб‐дивилопером как с разумным существом беседовать пытаюсь…
> Не дятлы, а двигатели прогресса. Благодаря нам (веб-девелоперам) и нашим настойчивым требованиям... и бла-бла-бла.Какой вы прогресс? Вы - веб-девелапти.
Дайте хотя бы ОДИН ПРИМЕР УЯЗВИМОСТИ старого браузера Opera 9 и 12. За 10 лет что-то ни одна уязвимость не смогла уязвить мой ПК.
> Дайте хотя бы ОДИН ПРИМЕР УЯЗВИМОСТИ старого браузера Opera 9 и 12.
> За 10 лет что-то ни одна уязвимость не смогла уязвить мой ПК.Те же зловредные редиректы c location.reload или gif-ки с переполнением стека... были уязвимости и достаточно (можно легко нагуглить пруфы), просто пользователи старой Оперы нафиг никому тогда не сдались чтобы их эксплоитить - слишком малая доля рынка.
> Опера 12 давно уже вышла из поля "современного веба". Тебе об этом
> сейчас будут сообщать через два ресурса на третьем.Вы, мягко говоря, неправы. Я до сих пор пользуюсь Opera Presto 12.18. Можно использовать маскировку. Единственный сайт, внимание, - из которых я пользуюсь, и который не поддерживается (пишет "у вас неподдерживаемый браузер"; и это не обойти), это Google Drive. Потому чисто для этого ресурса держу новую Оперу. Остальное просто летает.
>12.18Спалился, однако.:)
>>12.18
> Спалился, однако.:)Пользуйтесь на здоровье :)
> Одно плохо - исходники по-прежнему остаются не легальными и их дальнейшая судьба
> действительно остается под вопросом.да и поздновато уже. несколько лет бы назад — может, выжила бы где‐то в андерграунде. а сейчас уже даже хардкорные фанаты забили, поздно.
> умеющего работать с современным вебомВы, видимо, давно под ним не пользовались "современным" вебом.
По сей день мой основной браузер. Могет быть, парочка yoba-сцайтов и не работает, ну так что мне за дело? Все, что мне надо, работает.
Опера 12 - слишком хипстерский и новый. Надо использовать NCSA Mosaic.
> а если соберется хотя бы небольшая команда для его поддержки и развития - то может потеснить и остальные браузеры.Вот-вот. Есть же Mate - неумирающий Gnome 2. С развитием дела обстоят плохо, но по крайней мере жизнь поддерживается. Вот хотя бы так же и с Оперой!
Сделал бы владельцу кода кто-нибудь серьёзный вызов: вы, мол, уверены в своём новом продукте, так что слабо легализовать утёкший код, всё равно не осилят ведь?
> Сделал бы владельцу кода кто-нибудь серьёзный вызова владельцы кода, конечно, спят и видят, как бы в «а тебе слабо?!» поиграть. детский сад, блин.
Работа над своим продвинутым движком была серьёзным делом. И, как видно, мы все это ценили. А теперь, да, они играются в гуй с готовым чужим движком. Так что почему бы и не вступить в начатую ими же игру.
потому что когда одна сторона играет, а второй стороне настолько пофигу, что она даже не замечает — это не игра.
> Сделал бы владельцу кода кто-нибудь серьёзный вызов: вы, мол, уверены в своём
> новом продукте, так что слабо легализовать утёкший код, всё равно не
> осилят ведь?Так ты денег предложи - тогда может и легализуют. Да только откуда у аналитиков опеннета такие суммы возьмутся?
А еще он умеет работать без привязки к qt/gtk. Для легковесного десктопа - неоценимо. А то выбор между "большими" браузерами, которые тянут за собой монструозный тулкит и наколеночными школоподелками "я-у-мамы-хакир". Выглядит при этом, конечно, как гoвнo, но на функциональности это не сказывается.
забавно, оно действительно собирается. и сразу падает, потому что в gcc5+ баг оптимизатора. после воркэраунда — отлично работает.а ещё можно standalone jsshell собрать.
(вздыхает) ну что стоило «пролюбить» этот код несколько лет назад, когда у меня ещё было желание в нём ковыряться…
p.s.: цветочек на удивление беспроблемный. а код вообще очень хорошо организован, красиво побит на модули, вполне внятно документирован. код мозиллы по сравнению с этим — хтонический ужас.
> p.s.: цветочек на удивление беспроблемный. а код вообще очень хорошо организован, красиво
> побит на модули, вполне внятно документирован. код мозиллы по сравнению с
> этим — хтонический ужас.Перефразируя, красивый браузер красив во всем.
И его убийство тянет по меньшей мере на преступление.
> Перефразируя, красивый браузер красив во всем.
> И его убийство тянет по меньшей мере на преступление.ты знаешь — таки да. я работал с кодовой базой мозиллы… у меня с тех пор щека дёргается иногда. ну, фигурально. а кодовая база оперы красота.
зато я понял, наконец, что за «непреодолимое препятствие» было у presto, почему он «устарел» и всё такое. про то, что «с кодовой базой presto сложно поддерживать новые стандарты» — это полная чушь, само собой. а вот то, что престо принципиально сдизайнен как однопоточный двигатель — это факт, который неоднократно упоминается в разной документации. редизайн на много потоков/процессов невозможен, только перепись. вот оно, то самое «непреодолимое препятствие», которое триггернуло дятлов‐маркетологов. у нас ведь сейчас модно, чтобы всё тормозило не на одном CPU, а на всех доступных.
Есть идеи как umatrix заменить?Хочу попробовать снова этот браузер использовать - посмотрел список дополнений и понял, что реально нужен только umatrix, остальное либо есть, либо не особо нужно :)
> Есть идеи как umatrix заменить?ну, чтобы «всё в одном», как в uMatrix — то надо делать интерфейс. потому что оно размазано по встроеному urlfilter, page permissions и печенькоменеджеру.
впрочем, вместо «делать интерфейс» можно просто высунуть в extension API немного функций, чтобы всё это гибко контролировать, и дальше просто написать морду а‐ля uMatirx. зачатки этого в extension API уже есть, можно посмотреть, как сделано, и пилить «по мотивам».
чёрт, ну несколько лет назад бы это всё, ну… когда у меня ещё был энтузиазм. может, поковыряюсь как‐нибудь.
кстати, пишу из горящего танка^w^w opera-next 12.15, свежесобраной. ;-)
http://git.repo.i2p.xyz/;)
> http://git.repo.i2p.xyz/
> ;)и? выложить изменения (и даже билды) — не проблема, я в курсе, как это сделать без создания себе неприятностей. проблема в том, что энтузиазма больше нет: слишком давно я с оперы ушёл, чтобы сейчас опять на неё силы тратить. собрал, поностальгировал — и всё. ну, твиками немного поигрался: их там много, но с десктопным продуктом корректно работают далеко не все, увы.
> проблема в том, что
> энтузиазма больше нет: слишком давно я с оперы ушёл, чтобы сейчас
> опять на неё силы тратить.А какие есть другие варианты? Забить на легковесность и использовать FF или клоны хрома?
Сейчас использую pale moon, но особо легковесным его не назовешь, да и как ты верно отметил кодовая база FF это тихий ужас.Есть конечно netsurf, но вряд ли в ближайшие пять лет он догонит эту "древнюю" оперу.
> А какие есть другие варианты?увы. но пилить оперу я всё равно не готов — в том числе и потому, что это работа в андерграунд. «легальные» последствия меня мало волнуют, конечно; а вот отсутствие возможности нормально взаимодействовать с потенциальными разработчиками — ещё как.
> Есть конечно netsurf, но вряд ли в ближайшие пять лет он догонит
> эту "древнюю" оперу.да и медленней он. был, по крайней мере, когда я как‐то пробовал.
(офф) досадно, каракан не умеет в let. правда, судя по коду, можно его туда быстровхачить. собственно, сейчас найду, как удалять символы из таблицы локалов — и должно заработать.круто, кстати, каракан регистровый, а не стековый.
> а вот отсутствие возможности нормально взаимодействовать с потенциальными разработчиками — ещё какну, если git в i2p есть, то и багтрекеры тоже наверняка встречаются. или вы про какое-то другое взаимодействие?
>> а вот отсутствие возможности нормально взаимодействовать с потенциальными разработчиками — ещё как
> ну, если git в i2p есть, то и багтрекеры тоже наверняка встречаются.
> или вы про какое-то другое взаимодействие?да: я про то, где кроме инструментов ещё и люди есть. в даркнете их полторы штуки, из этих полутора штук — полштуки тех, кто починят пару строчек. а из этого получеловека нормальных программистов в лучшем случае вообще процент. ну, и посчитай, сколько там осталось тех, с кем можно продуктивно работать (если слово «продуктивно» вообще применимо к даркнетной модели).
время покажет. мне вот интересно, может в принципе такая модель работать, или нет. критикуя (обзывая скамом) тех, кто хотя бы пытается, я точно не поспособствую тому, чтобы это дело взлетело. так неинтересно.
> время покажет. мне вот интересно, может в принципе такая модель работать, или
> нет.может, но не в данном случае: нет критической массы. слишком нишевая вещь.
> критикуя (обзывая скамом) тех, кто хотя бы пытается, я точно
> не поспособствую тому, чтобы это дело взлетело. так неинтересно.констатация фактов не является ни критикой, ни обзываниями. к сожалению, идиотизм ещё на стадии подготовки однозначно указывает на то, что ничего не выйдет. хипстота умеет хайпить, но не умеет работать.
А я б попилил
тебя кто‐то связал и держит в подвале, что ли? встань и иди^w^w^w иди и пили, какие проблемы. я пилю, например: у меня большая тудушка на каракан. движется потихоньку. крутой хипстерский проект, по‐идее, должен уже как минимум две трети этого реализовать: они же не бла‐бла‐скам, как я их «обозвал», куда мне одному с таким‐то сообществом тягаться.
> а вот отсутствие возможности нормально взаимодействовать с потенциальными
> разработчиками — ещё как.Ну с одной стороны - да, часть потенциальных разработчиков не станет связываться с подобным проектом. С другой стороны - под виндами, особенно у игровых моддеров - это вполне обычное явление: даже без исходников патчат и накатывают свои новые возможности, при этом собирают большие сообщества. Их сайты периодически банят, но это их не останавливает.
Кажется, потенциальные разработчики тем временем уже придумали рабочий вариант коммуникации: https://t.me/opera_presto
> Кажется, потенциальные разработчики тем временем уже придумали рабочий вариант коммуникации:
> https://t.me/opera_prestoспасибо, это было очень смешно. вот именно с подобным скамом я взаимодействовать и не хочу. а никто другой не придёт.
надеюсь, не надо пояснять, почему использование телеграма в этом случае автоматически обозначает, что скам?
>> Кажется, потенциальные разработчики тем временем уже придумали рабочий вариант коммуникации:
>> https://t.me/opera_presto
> спасибо, это было очень смешно. вот именно с подобным скамом я взаимодействовать
> и не хочу. а никто другой не придёт.
> надеюсь, не надо пояснять, почему использование телеграма в этом случае автоматически обозначает,
> что скам?Конечно, надо. Например, телеграм - единственное, что настолько least shit, что как-то пригодно в качестве юзабельного, из всех этих новомодных мессенджыров (e.g. есть десктопный, CLI-клиент, я юзаю без смартфон-версий).
> Конечно, надо.значит, уже не надо, потому что бессмысленно.
>> Конечно, надо.
> значит, уже не надо, потому что бессмысленно.Ну, мы помним, что ты умный, но удак, да.
спасибо. пока меня так характеризуют подобные тебе — это значит, что со мной всё нормально ещё.
> Кажется, потенциальные разработчики тем временем уже придумали рабочий вариант коммуникации:
> https://t.me/opera_prestoтак вот: о скаме, «разработчиках» и хипстоте. у них кроме бла‐бла в телеграме есть что‐то? времени прошло вполне достаточно, чтобы показать хоть какие‐нибудь результаты. кроме «бла‐бла», конечно, и мегапатча для FreeBSD.
>> Кажется, потенциальные разработчики тем временем уже придумали рабочий вариант коммуникации:
>> https://t.me/opera_presto
> так вот: о скаме, «разработчиках» и хипстоте. у них кроме бла‐бла в
> телеграме есть что‐то? времени прошло вполне достаточно, чтобы показать хоть какие‐нибудь
> результаты. кроме «бла‐бла», конечно, и мегапатча для FreeBSD.Я создал тот чатик, пока весь чатик это деление рецептами\советами, из результатов, насколько мне известно - ARM, BSD билды, поддержка vp9, народ работает над ssl, чинит фичи. В основном - да, много бла-бла, но есть и те кто работает, зря Вы так
> Я создал тот чатик, пока весь чатик это деление рецептами\советами, из результатов,
> насколько мне известно - ARM, BSD билды,три с половиной ифдефа. достижение. армоджит починили уже? ну, хоть проверку на разные модели армов?
> поддержка vp9
молодцы, посмотрели в новые исходники gstreamer.
> народ работает над ssl
ECC уже есть? хотя бы в виде PoC?
> чинит фичи
то есть, ничего больше.
> есть и те кто работает
iSage и ещё полтора человека.
ну, удачи, чо. делитесь рецептами дальше. чем там делиться, правда — мне не очень понятно, потому что там не «рецепты» надо делать, а садиться и писать документацию хотя бы по базовым модулям: работа с памятью, утилиты, ssl, сеть, сопряжение этого всего… доксиген — это хорошо, но мало.
а вместо этого будет дальнейшее бла‐бла и два с половиной энтузиаста, обладающих Секретными Знаниями по разным частям кода.
p.s.: тесты хоть запустили? или тесты придумали трусы?
p.p.s.: ну, может хоть твикалку кто‐то сделал? там же несложно, оно машиночитаемо.
> Я создал тот чатик, пока весь чатик это деление рецептами\советами...Может быть, ребятам из чятика интересно будет: http://www.opennet.dev/openforum/vsluhforumID3/110169.html#174
> Ну с одной стороны - да, часть потенциальных разработчиков не станет связываться
> с подобным проектом.практически никто из тех, с кем можно нормально взаимодействовать. в смысле — не только в плане «потрещать», но ещё и в плане качественных коммитов.
> С другой стороны - под виндами, особенно у
> игровых моддеров - это вполне обычное явление: даже без исходников
> патчат и накатывают свои новые возможности, при этом собирают большие сообщества.
> Их сайты периодически банят, но это их не останавливает.причём заметь: в таких сообществах реально всю работу тянут несколько человек, а все остальные в лучшем случае бегают кругами и кричат: «когда новая версия, когда, когда!» конечно, это ласкает ЧСВ, но больше никакой пользы от такого сообщества нет. а мне ЧСВ ласкать не надо, оно у меня и так опухшее. мне надо, чтобы народ спокойно приходил, спокойно коммитил, спокойно качал код и собирал.
я потому и сокрушаюсь, что поздно. когда оперу только‐только заменили на хроперу, я был активным пользователем, изо всех сил никуда уходить не хотел, и у меня был прямой интерес допиливать хоть бы и для себя — не обращая внимания ни на какие неудобства.
а сейчас я на оперу уже не вернусь (как минимум, не в виде основного браузера), поэтому «для себя» уже неактуально. соответственно, остаются только интересы поучаствовать в более‐менее большом нормальном проекте — а это невозможно с нелегальным кодом.
и мне вдвойне жаль, потому что опера не только снаружи, она и внутри весьма хороша. я уже и забыл, что такое нормальная отзывчивость у браузера: такое впечатление, что опера совершает действия чуть раньше, чем я на кнопки нажимаю. ;-)
p.s.: предрекаю, что ни одна даркнетовая попытка продолжить оперу не взлетит. в силу контингента‐с.
p.p.s.: каракан забавный. пришлось вводить новый вид скопов. надо всё‐таки разобраться, как у них тесты работают, а то «пишу код в непонятный проект, не приходя в сознание» без тестов как‐то слишком экстремально.
> причём заметь: в таких сообществах реально всю работу тянут несколько человек, а
> все остальные в лучшем случае бегают кругами и кричат: «когда новая
> версия, когда, когда!»Но тут ситуация несколько иная: этот браузер нужен не массам, а гикам типа нас, которые хотят действительно легковесный браузер.
> мне надо, чтобы народ спокойно приходил, спокойно коммитил, спокойно качал код и собирал.
С учетом того, что больше всего этим браузером пользовались русские - в этом плане проблем не будет :)
> а сейчас я на оперу уже не вернусь (как минимум, не в виде основного браузера), поэтому «для себя» уже неактуально.
На чем остановился? Доволен?
> p.s.: предрекаю, что ни одна даркнетовая попытка продолжить оперу не взлетит. в силу контингента‐с.
С учетом того, что браузер уже пригоден к употреблению, почему нет? Допилить по мелочам наверняка кто-то возьмется.
P.S. Выкладывай свои наработки и фиксы в любом месте в любом виде - они полезны тем, кто сейчас пробует браузер. Мне уже помог fix_flower_build.patch и твой совет про data.attrs собрать и попробовать браузер.
>> причём заметь: в таких сообществах реально всю работу тянут несколько человек, а
>> все остальные в лучшем случае бегают кругами и кричат: «когда новая
>> версия, когда, когда!»
> Но тут ситуация несколько иная: этот браузер нужен не массам, а гикам
> типа нас, которые хотят действительно легковесный браузер.но писать‐то лучше — как и батю бить — толпой. ;-)
>> мне надо, чтобы народ спокойно приходил, спокойно коммитил, спокойно качал код и собирал.
> С учетом того, что больше всего этим браузером пользовались русские - в
> этом плане проблем не будет :)я космополит, я желаю, чтобы все. ;-)
>> а сейчас я на оперу уже не вернусь (как минимум, не в виде основного браузера), поэтому «для себя» уже неактуально.
> На чем остановился? Доволен?на Pale Moon. пару месяцев лепил к нему фиксы и дополнения, чтобы было больше на оперу похоже, теперь вот сижу на нём. в частности, впилил spatial navigation, без которого я буквально как без рук. не то, чтобы полностью доволен, конечно: опера всё равно мне лучше подходила. и до сих пор лучше подходит — почти.
>> p.s.: предрекаю, что ни одна даркнетовая попытка продолжить оперу не взлетит. в силу контингента‐с.
> С учетом того, что браузер уже пригоден к употреблению, почему нет? Допилить
> по мелочам наверняка кто-то возьмется.по мелочам — это по мелочам. а кто возьмётся за доводку каракана до понимания хотя бы сабсета es6? а за доводку лайаутера? это как раз самое важное, а не мелочи…
> P.S. Выкладывай свои наработки и фиксы в любом месте в любом виде
> - они полезны тем, кто сейчас пробует браузер. Мне уже помог
> fix_flower_build.patch и твой совет про data.attrs собрать и попробовать браузер.там вон анонимус выше^w ниже посоветовал вместо printf просто добавить «-fno-delete-null-pointer-checks» — это намного красивей, и вдобавок ещё и работает.
а фикс каракана я на какое‐нибудь пастохранилище положу, конечно, если доделаю.
p.s.: а арма у меня и вовсе нет, так что армовый jit в каракане починить совсем не вариант.
кстати, на всякий случай утащил dragonfly с их сервера на свой. а то мало ли — возьмут и прикроют лавочку. будет обидно.жаль, сам dragonfly обфусцирован (пожат, точнее, но разницы особой нет). неплохо было бы, если бы кто‐нибудь взялся восстановить его в нормальное состояние.
Драгонфлай на гитхабе https://github.com/operasoftware/dragonfly
Только локализацию подпилить. И пожатый стартует чуть быстрее.
> Драгонфлай на гитхабе https://github.com/operasoftware/dragonfly
> Только локализацию подпилить. И пожатый стартует чуть быстрее.чёрт, протупил. спасибо.
> Их сайты периодически банят, но это их не останавливает.Но в конце концов получается нечто типа WOG для третьих героев, когда люди вроде вбухали кучу усилий но вроде нормально пользоваться не получается, двигло с кучей проблем которые нельзя починить. Все задолбались и проект встрял. Vcmi конечно появился, но если бы люди сразу ориентировались на легальные и работоспособные варианты - они бы за это время всю игру запилили с теми же усилиями, как это в OpenTTD и сделали в конце концов, чтобы не пиратить ресурсы. Нормально получилось, между прочим.
> Но в конце концов получается нечто типа WOG для третьих героев, когда
> люди вроде вбухали кучу усилий но вроде нормально пользоваться не получается,
> двигло с кучей проблем которые нельзя починить.потому что исходников не было. здесь исходники есть.
p.s.: желаю видеть «открытую оперу». всякие остаточные продукты жизнедеятельности на вебкитах и геконах не предлагать.
> потому что исходников не было. здесь исходники есть.На икспу и винтукей тоже есть. А вон сорец AMI BIOS лежит. И как, сильно помогло?
> p.s.: желаю видеть «открытую оперу». всякие остаточные продукты жизнедеятельности
> на вебкитах и геконах не предлагать.Хотелка то нормальная, но есть нюансы. А кстати чем вебкит плохой? Не гугловский blink-монстрик а обычный? И какие у оперовского двигуна преимущества, собственно? А так то спору нет что легкий шустрый браузер без западла - штука нужная. Но не таким же манером? А по нормальному норвежцы имхо не сделают. Бизнес-модель у них по жизни не такая. Я конечно понимаю что сложно быть мелкой норвежской компанией, но все-таки.
>> потому что исходников не было. здесь исходники есть.
> На икспу и винтукей тоже есть.вот как соберёшь из них работоспособный продукт — тогда и приходи обсуждать это «есть».
> А вон сорец AMI BIOS лежит.
и зачем он нужен? я лично не припомню необходимости что‐то добавить в биос.
> И как, сильно помогло?
кому? мне это не надо. кому надо — тому, может, помогло, я не знаю.
>> p.s.: желаю видеть «открытую оперу». всякие остаточные продукты жизнедеятельности
>> на вебкитах и геконах не предлагать.
> Хотелка то нормальная, но есть нюансы.поскольку автор комментария, на который я отвечал, задвигал намёки про «написание своего заместо допилки» — то я и желаю это увидеть. сравнимое по ТТХ с оперой.
> А кстати чем вебкит плохой? Не
> гугловский blink-монстрик а обычный? И какие у оперовского двигуна преимущества, собственно?это один вопрос в трёх частях. именно тем и плохой, что жирный монстр. вся десктопная опера собирается быстрее, чем один только вебкит. наф саид.
я хочу оперу. в плане скорости, организации и качества кода, и прочих сопутствующих. если бы такой проект был — я бы с удовольствием присоединился. но его нет. и не будет. потому что написать на энтузиазме нескольких рыл полноценный браузер невозможно.
> А так то спору нет что легкий шустрый браузер без западла
> - штука нужная. Но не таким же манером?я лично не вижу никаких препятствий к использованию мной личнодопиленой и личнособраной оперы. что я и делаю в эти несколько дней. и, в общем‐то, планирую делать и дальше. для меня этого достаточно, планов покорять мир с этим двигателем у меня нет.
> вот как соберёшь из них работоспособный продукт — тогда и приходи обсуждать это «есть».Мне оказалось проще линуксный кернел собирать, увы.
> и зачем он нужен? я лично не припомню необходимости что‐то добавить в биос.
Ну вот у меня биос имеет свойство локапаться если кнопку невовремя нажмешь при попытке зайти в меню бутлоадера. Uboot я пропатчил где мне надо было.
> кому? мне это не надо. кому надо — тому, может, помогло, я не знаю.
По крайней мере живых пользователей этого я не видел.
> своего заместо допилки» — то я и желаю это увидеть. сравнимое по ТТХ с оперой.
Он что, совсем проприетарщик?
> это один вопрос в трёх частях. именно тем и плохой, что жирный монстр.
Ну так вебня нынче такая. Опера как раз и не потянула темпы. А браузер которым можно только опеннет и еще полтора таких же сайта браузить - тут и линкса хватит.
> я лично не вижу никаких препятствий к использованию мной личнодопиленой и личнособраной
> оперы. что я и делаю в эти несколько дней.Очевидная проблема - сайтов которые будут учитывать это по сути не сущестует и оно обречено bitrot'ить вплоть до состояния когда там корректно отображаться будет опеннет разве что. Даже то что ютуб работает - это временно, имхо. MSE/DASH оно умеет?
>> вот как соберёшь из них работоспособный продукт — тогда и приходи обсуждать это «есть».
> Мне оказалось проще линуксный кернел собирать, увы.ну вот и не будем тогда про «есть исходники». исходники собираемого продукта совсем не то же самое, что куча обломков.
>> и зачем он нужен? я лично не припомню необходимости что‐то добавить в биос.
> Ну вот у меня биос имеет свойство локапаться если кнопку невовремя нажмешь
> при попытке зайти в меню бутлоадера.и я сильно подозреваю, что это далеко не тот AMI, который опубликовали, так что мало поможет.
>> своего заместо допилки» — то я и желаю это увидеть. сравнимое по ТТХ с оперой.
> Он что, совсем проприетарщик?э?
>> это один вопрос в трёх частях. именно тем и плохой, что жирный монстр.
> Ну так вебня нынче такая.нет.
> Опера как раз и не потянула темпы.
ЗА.
ДОЛ.
БА.
ЛИ.
перестаньте уже повторять эту ложь. все. пожалуйста. «не потянула темпы» — это маркетинговый булшит, которым пытались оправдать убийство вполне нормального продукта. нет в «саврименнам уебе» ничего такого, для чего нужна ракетная наука. или такого, что требует марсианских технологий. зато есть «уеб‐дисигнеры» типа того, что тут пробегал, которые снифают агента и подсовывают кривые страницы.>> я лично не вижу никаких препятствий к использованию мной личнодопиленой и личнособраной
>> оперы. что я и делаю в эти несколько дней.
> Очевидная проблема - сайтов которые будут учитывать это по сути не сущестуетесли сайт должен «учитывать браузер» — это не сайт, а ведро помоев. я не ем помои.
> ютуб
ясно. извини, мы с разных планет. я не ем помои.
> но если бы люди сразу ориентировались на
> легальные и работоспособные варианты - они бы за это время всю
> игру запилили с теми же усилиями, как это в OpenTTD и
> сделали в конце концов, чтобы не пиратить ресурсы.Я согласен, что лучше вкладывать усилия в СПО. Но создать с нуля сложный проект не просто - нужен большой опыт проектирования и развития подобных проектов или много времени чтобы этот опыт получить.
Гораздо проще учиться дорабатывая готовый хороший проект. (Форкать FF не вариант - разве что посмотреть, как делать не надо :)
Возможно, самым правильным вариантом, были бы переговоры с владельцем кода. Возможно они решаться его официально открыть. Нельзя также исключать вариант, что утечка была не совсем случайной: возможно владелец кода специально ее допустил и хочет оценить интерес к этому коду, а дальше предпринять какие-то действия. Возможно, кто-то из бывшей команды хочет подтолкнуть владельца к открытию кода.
Так или иначе - код есть и с ним можно работать. А дальше - время покажет.
> Нельзя также исключать вариант, что утечка была
> не совсем случайной: возможно владелец кода специально ее допустил и хочет
> оценить интерес к этому коду, а дальше предпринять какие-то действия. Возможно,
> кто-то из бывшей команды хочет подтолкнуть владельца к открытию кода.я склонен считать, что у кого‐то из старой гвардии «пригорело»: проект‐то великолепный, а его ни себе, ни людям. вполне понимаю ощущения, я бы тоже при таких раскладах код «потерял».
и не по теме, но мне лень в другое место пост пилить: энтузиазм мой по поводу `let` был несколько преждевременным: у анализатора замыканий сносит башню от — похоже — кучи локалов с одним именем. но, зараза, не всегда. похоже, сносит где‐то в районе сохранения замыкания в объект — типа функции обработчика событий. так единственным доступным экспертом по каракану пока являюсь я, то ответов на некоторые вопросы ещё нет. придётся начать заново, с идеей тупо переименования переменных. я очень не хотел это делать, оно ломает отладчик, но увы.
к сожалению, написать тест для этой конкретной поломки пока не выходит. а остальные тесты прошлая реализация прошла удовлетворительно. зараза.
> великолепный, а его ни себе, ни людям. вполне понимаю ощущения, я
> бы тоже при таких раскладах код «потерял».Да понятно что свинство. Но толку то его терять вот так?
>> великолепный, а его ни себе, ни людям. вполне понимаю ощущения, я
>> бы тоже при таких раскладах код «потерял».
> Да понятно что свинство. Но толку то его терять вот так?лучше так, чем вообще никак. как минимум — мы можем увидеть, что опера была действительно очень качественной штукой.
> подобных проектов или много времени чтобы этот опыт получить.А зачем с нуля? Есть несколько движков, начиная от классического вебкита и заканчивая любопытным рендерером HTML5 на гитхабе. А так то понятно что спиратить у оперы проще всего, пользователи винды тоже так считали. И к чему прищли? К UEFI и бутгадам? А тут даже к этому не придет.
> Гораздо проще учиться дорабатывая готовый хороший проект. (Форкать FF не вариант -
> разве что посмотреть, как делать не надо :)FF ужасен. Но вот чем так ужасен классический webkit?
> Возможно, самым правильным вариантом, были бы переговоры с владельцем кода.
А для этого надо вынуть сколько-то лямов из кармана - вот и все переговоры.
>> Возможно, самым правильным вариантом, были бы переговоры с владельцем кода.
> А для этого надо вынуть сколько-то лямов из кармана - вот и все переговоры.История Blender оказалась вполне успешной. Почему бы ей не повториться
> История Blender оказалась вполне успешной. Почему бы ей не повторитьсяпотому что операстов мало.
>> История Blender оказалась вполне успешной. Почему бы ей не повториться
> потому что операстов мало.ИМХО их даже сейчас на порядок-два больше, чем было пользователей у блендера на тот момент. Вот только владельцы кода presto могут и суму совершенно иную запросить ...
> ИМХО их даже сейчас на порядок-два больше, чем было пользователей у блендера
> на тот момент. Вот только владельцы кода presto могут и суму
> совершенно иную запросить ...и запросят. они как раз из тех идиотов, которые сидят на ненужном так, что не сковырнёшь. а если увидят, что за это ненужное можно ещё и копеечку получить — цены сразу взлетят до космических.
в любом случае — я не вижу тех, кто этим бы занялся. потому что если бы были, то давно бы уже.
Реквестирую патч, кэп!
> Реквестирую патч, кэп!вон он, ниже. запусти оперу из цветочка (flower run, не забыв собрать с отладочными символами, там есть опция), она тогда сразу под gdb поедет. потом пойди, например, в opera:config — она сразу упадёт. вот перед той самой строкой, где упала — смело пихай мою строку.
по какой‐то причине gcc дурит, и без вызова функции с сайд‐эффектом пытается освободить nullptr. а если вызов есть, и в условии переменная фигурирует — всё нормально. я долго думать не стал, и просто засунул printf, не жалко. но пойдёт любая фигня — лишь бы компилятор не решил, что она там лишняя, и не выкинул вместе с условием.
p.s.: нет, просто проверка на NULL перед вызовом delete-враппера не катит. gcc в курсе, что delete можно вызывать на нулах, и условие убирает.
>[оверквотинг удален]
> поедет. потом пойди, например, в opera:config — она сразу упадёт. вот
> перед той самой строкой, где упала — смело пихай мою строку.
> по какой‐то причине gcc дурит, и без вызова функции с сайд‐эффектом пытается
> освободить nullptr. а если вызов есть, и в условии переменная фигурирует
> — всё нормально. я долго думать не стал, и просто засунул
> printf, не жалко. но пойдёт любая фигня — лишь бы компилятор
> не решил, что она там лишняя, и не выкинул вместе с
> условием.
> p.s.: нет, просто проверка на NULL перед вызовом delete-враппера не катит. gcc
> в курсе, что delete можно вызывать на нулах, и условие убирает.А не может ли тут помочь -fno-delete-null-pointer-checks?
>> p.s.: нет, просто проверка на NULL перед вызовом delete-враппера не катит. gcc
>> в курсе, что delete можно вызывать на нулах, и условие убирает.
> А не может ли тут помочь -fno-delete-null-pointer-checks?может и может, я не пробовал: этих -f в gcc так много, что я их все не помню, а читать лениво. ;-)
в принципе, компилятор *не* *должен* удалять *внутреннюю* проверку (delete же по стандарту обязана, то есть, компилятор обязан) — и он не удаляет нигде, кроме вот этого одного места. чем это место такое особенное — я не знаю. где‐то оптимизатор споткнулся. попробую собрать с этим флагом ради интереса сейчас.
>>> p.s.: нет, просто проверка на NULL перед вызовом delete-враппера не катит. gcc
>>> в курсе, что delete можно вызывать на нулах, и условие убирает.
>> А не может ли тут помочь -fno-delete-null-pointer-checks?
> может и может, я не пробовал: этих -f в gcc так много,
> что я их все не помню, а читать лениво. ;-)
> в принципе, компилятор *не* *должен* удалять *внутреннюю* проверку (delete же по стандарту
> обязана, то есть, компилятор обязан) — и он не удаляет нигде,
> кроме вот этого одного места. чем это место такое особенное —
> я не знаю. где‐то оптимизатор споткнулся. попробую собрать с этим флагом
> ради интереса сейчас.Ну у меня падал релизный билд прямо на спид-диале, с -fno-delete-null-pointer-checks вроде работает и пока не падает.
> Ну у меня падал релизный билд прямо на спид-диале, с -fno-delete-null-pointer-checks вроде
> работает и пока не падает.да, на спиддиале тоже падал, надо было только чуть‐чуть подождать. с opera:config просто быстрее, а так в одном и том же месте рушился. и не только на спиддиале — на куче сайтов, на самом деле.
> Ну у меня падал релизный билд прямо на спид-диале, с -fno-delete-null-pointer-checks вроде
> работает и пока не падает.да, ты прав, больше не падает. спасибо, это однозначно лучше, чем мой кривохак с printf.
>> Ну у меня падал релизный билд прямо на спид-диале, с -fno-delete-null-pointer-checks вроде
>> работает и пока не падает.
> да, ты прав, больше не падает. спасибо, это однозначно лучше, чем мой
> кривохак с printf.Да не за что, как там с караканом дела?
> Да не за что, как там с караканом дела?с наскоку — как и полагается — не очень получилось. то есть, оно работает, но не совсем так, как надо. большинство кода, конечно, этого не заметит, потому что почти никто не перемешивает в одной функции let, var и дикий реюз имён — а я откатил свой мусор, и захачил let при помощи переписи его в `let a;` -> `var a = undefined;`. но как понимаешь, это неправильная реализация.
complier.addVariable умеет то, что мне надо, но требуется ещё вхачить специальный скоуп, который будет за собой убирать локалы по выходу из ES_BlockStmt (и создавать по входу). а в визиторе, который собирает локалы по функции, сделать пару хаков, чтобы он не создавал let'ные.
в общем, первый вариант грязнохака служил для того, чтобы немного понять структуру каракана. теперь я помедитирую, и попробую сделать опять, на этот раз правильно. если лень не настигнет меня раньше, чем доделаю — положу патч на какое‐нибудь пастохранилище.
p.s.: а вот парзер у них очень забавно сделан: с ручным управлением стеком. то есть, парзер имеет свой стек, куда суёт выхлоп лексера и ещё чуть‐чуть всякого, а потом из этого стека достаёт. видимо, они так сделали, чтобы иметь возможность руками контролировать глубину рекурсии. пазер выражений тоже на ручном push/pop в массив‐ака‐стек.
> Да не за что, как там с караканом дела?function test () {
let v = 69;
{
let v;
v = 42;
print(v);
}
print(v);
return v;
}print(test());
и на выходе:
42
69
69да, я знаю, что это, в принципе, не совсем валидный es6. неважно.
p.s.: патч ещё не готов, это только первый тест, который не сегфолтится и похож на правду. но принцип, судя по всему, работает. ужасно медленно (линейный поиск по всей таблице локалов каждый раз), но неважно — ускорить потом проблемой не будет.
если кому интересно, то нафиг, никаких скопов. тупой подсчёт вложенности блоков, и выбор переменной в зависимости от этого. благо, каракан выделяет всем локалам фиксированные регистры перед компиляцией операторов, и никогда регистры больше не меняет.
p.p.s.: возможно, это поломает стрекозу, потому что теперь несколько переменных могут иметь одно имя. возможно, стоит их переименовывать потом, но пока я считаю, что работоспособность let (хоть частичная) важнее, чем стрекоза.
ну и раз уж я тут: более‐менее переписал тот хтонический ужос, который родил изначально. сделаю тесты, погоняю «вживую» и выложу. лишь бы не забыть.
> ну и раз уж я тут: более‐менее переписал тот хтонический ужос, который
> родил изначально. сделаю тесты, погоняю «вживую» и выложу. лишь бы не
> забыть.ага. тесты рулят и жгут. а отсутствие нормального сна — не очень. я совсем забыл, что внутри вложеных функций тоже код, и он может обращаться к переменным родителя. и вот тут у нас случается полная беда, потому что компилятор собирает все вложеные функции в кучку, и обрабатывает тоже кучкой, перед основным кодом. отличное решение для старого js, очень плохое для нового. я пока не совсем понимаю, как и когда создаются замыкания (в смысле объектов компилятора). без этого вариант решения есть, он будет работать, но убьёт производительность на корню: перед каждым блоком с let запоминать «перекрытые» (буде такие будут) переменные во временных регистрах, блок оборачивать в try/finally, в finally восстанавливать.
увы, try/finally в каракане наглухо отключает value tracking (это DFA/CSE отимизации) для всей функции. как и `with`, кстати — это два performance killers. поэтому решение мне не нравится.
решение иметь отдельный стек «перекрытых» переменных и восстанавливать их буквально в каждом операторе, который меняет code flow — ещё хуже. работать, может, и будет, но обгадит весь код (каракана).
ужасно не хватает возможности побеседовать с оригинальным автором двигателя. у меня к нему масса интересных вопросов.
p.p.s.: простое добавление `let` как синонима `var` позволяет где‐то треть скриптов с `let` запускать. но это не наш путь, конечно.
окей, никто это не читает, но мне всё равно интересно писать. итого, реализация распадается на две: «быструю» (переименование) — для случаев, когда в коде нет замыканий, и «медленную» (try/finally), когда замыкания есть. в принципе, «медленная» вполне способна справиться с обоими случаями, но она таки медленная, потому что отключает каракановский оптимизатор. а каракан и так скоростью не блещет, если на каждом скрипте, где случайно `let` встретился (все новые es6 скрипты, в принципе), идти медленным путём — будет совсем плачевно.к сожалению, чтобы сделать это всё правильно и без замедлений, надо переписать парзер и компилятор, достаточно сильно. по крайней мере, я другого пути не вижу. вышеописаные хаки хоть и хаки, но относительно понятные и сопровождаемые. а если хачить парзер‐компилер без переписи — это будет совсем невнятная кодокаша.
пока что имею рантаймовую настройку «let как синоним», что позволило хотя бы некоторые свои скрипты более‐менее запустить. но выкладывать этот патч смысла не вижу.
p.s.: чёрт, а `of`-то — не ключевое слово. поломало стрекозу (которая из гита). пришлось понизить в статусе назад до простого идентификатора.
> окей, никто это не читаетЧитать то - читаем, просто помочь не можем, ввиду отсутствия подобного опыта и знаний.
P.S. Если допилить их js движок окажется очень сложно, насколько сложно прикрутить чужой js движок?
>> окей, никто это не читает
> Читать то - читаем, просто помочь не можем, ввиду отсутствия подобного опыта
> и знаний.да ладно, я рисуюсь, конечно. но спасибо, иногда даже просто «keep it up» (или «да ты балабол!») помогают.
> P.S. Если допилить их js движок окажется очень сложно, насколько сложно прикрутить
> чужой js движок?сильно‐сильно сложнее. у каракана своя… как бы это сказать поприличней… «экосистема», пардон май фрэнч. форматы объектов, API, идеи о том, как он себя ведёт — это вот всё. чтобы заменить — фактически, надо знать *точно* как работает каракан, и вдобавок обладать столь же глубокими знаниями о другом движке. конечно, сразу отвалится стрекоза — что для меня потеря невосполнимая, например. короче: заменить намного сложнее.
тут дело даже не в том, что допилить каракан сложно, а в том, что не хочется в нём откровенно гадить: там очень чисто и культурно всё. а тут я такой, с пивными банками, окурками, сэмками везде плевать… как жывтоне какое‐то. фу.
я пока не понимаю, как он смотрит во внешние области видимости для создания замыканий. скорее всего, можно без try/finally трюка, но надо понять эту часть. автора бы на интервью…
а вот что реально сложно сделать, например — это yield. если let — всего лишь вопрос правильно сгенерированого кода для VM, то с yield всё значительно хуже: это требует переделки «нативного» кодогенератора. то есть, двигатель попросту не умеет в ситуацию, когда надо заморозить выполнение функции, а потом с этого же места продолжить. опять же: это можно обойти при помощи генерации cps-кода, но тогда про эффективность можно забыть навсегда. поэтому за yield я даже не возьмусь. по крайней мере не раньше, чем пойму, как там всё‐всё работает (что малореально).
p.s.: точнее, в заморозить‐продолжить умеет, но именно с места заморозки, не выполняя между этим другого кода. и да, трюк с try/finally я потихоньку реализовываю, что уж тут. тоже некрасиво, но…
> автора бы на интервью…У меня был знакомый, ушедший из оперы (а может, и два даже) -- поискать контакты, вдруг дальше подскажут, кому пива заказать? :)
>> автора бы на интервью…
> У меня был знакомый, ушедший из оперы (а может, и два даже)
> -- поискать контакты, вдруг дальше подскажут, кому пива заказать? :)авторы‐то все в исходниках указаны. в частности, за интересующие меня части отвечал Jens Lindstrom. проблема в том, что вряд ли он имеет возможность рассказывать про свою прошлую работу, нарушая NDA, да ещё и на основе «краденого» материала. поэтому просить у него консультаций было бы неэтично: зачем ставить человека в заведомо проигрышное положение, когда любой ответ так или иначе неприятен/неудобен?
хотя, конечно, если ему кто‐то даст знать, и он посчитает, что консультации не создадут ему проблем… не просить о них, а просто дать знать.
Я читаю, хоть и ничего не понимаю) - душа болит за угробленный Presto. И рад, что хоть кто-то что-то делает.P.S. У меня тоже такое бывает - начинаю что-то фиксить не до конца разобравшись, - быстрее входишь в курс по ходу дела. Хотя серьёзные вещи не запилить без полного понимания, больше вероятности что-то отломать. Бывает, приходится переписать с нуля, если оно того стоит. Только я люблю правильные и расширяемые решения, чтобы сделать, так на совесть, и чтобы потом уже не переделывать.
P.P.S. В общем, по делу я сказать ничего не могу, потому: Так держать! :)
> Я читаю, хоть и ничего не понимаю) - душа болит за угробленный
> Presto.та же эф. тем более после того, как я код увидел: это же сказка! я давно уже в жизни не видел настолько красивого внешне и внутренне проекта. с ним просто в кайф работать.
и заодно убедился в том, что подозревал изначально: все разговоры про «престо перестал успевать в современный веб и аккумулирует хаки» — маркетинговый bullshit, который манагеры гнали чтобы оправдать убийство оперы. поэтому фразы про «протухший» и «не умеет в современность» мгновенно триггерят во мне ЗЛО. если я один в принципе могу тянуть любую из частей после двух‐трёх недель въезжания, то команда оперы без труда бы справилась. и нет там кодокаши. кодокаша — это gecko. это webkit (раньше был чуть меньше gecko, сейчас не знаю). вот это — кодокаша.
> P.S. У меня тоже такое бывает - начинаю что-то фиксить не до
> конца разобравшись, - быстрее входишь в курс по ходу дела.тут иначе и не получилось бы. я вполне сознательно выбрал `let` — то есть, я ожидал этих всех проблем. благо, компиляторы писал, и js-ные тоже. нет, я, конечно, мечтал, что там уже всё есть, а мне только какой‐нибудь ifdef поменять… ничего, у меня ещё столько гениальных идей! ;-)
> Бывает, приходится переписать с нуля, если оно того стоит.
переписать кое‐что стоило бы, конечно. но тогда у твоих детей уже дети будут, когда я закончу. не совсем то, чего хотелось бы. ;-)
> люблю правильные и расширяемые решения, чтобы сделать, так на совесть, и
> чтобы потом уже не переделывать.переделывать потом придётся, конечно. поэтому стараюсь хотя бы не очень в код нагадить, более‐менее локализовав свой помёт.
> P.P.S. В общем, по делу я сказать ничего не могу, потому: Так
> держать! :)спасибо. когда знаешь, что кто‐то смотрит, даже лентяйничать приятней, а работать тем более. ;-)
по ходу дела: я и забыл, насколько крутая штука fit-to-width. всё больше сайтостроителей отчего‐то уверены, что у меня экран в пять метров шириной, и я обязательно на весь экран разверну браузер.
и ещё: несмотря на то, что опера отрисовывается визуально чуть медленней, чем Pale Moon, в целом сайты рендерятся — парадоксально — быстрее. а вот попытка зафорсить вывод с hw-акселерацией периодически намертво вешает вегу. надо будет потом полезть и в неё: может, если не починить, так хоть понять удастся, что за ерундень.
p.s.: а вы знали, что уже установленую десктопную оперу (как минимум версий до девятой) можно было встраивать в свои софтины как html engine? причём API для этого чисто сишный. читать модуль adjunct/embrowser. я не уверен, что этот модуль актуален, но если что — его можно реанимировать.
> опера отрисовывается визуально чуть медленней, чем Pale Moon, в целом сайты рендерятся — парадоксально — быстрееC отрисовкой было 2 парадигмы: либо отображать страницу сразу же после полной загрузки (по умолчанию в Presto) либо подгружать и отображать по частям (как в других браузерах; у Presto в этом режиме иногда всплывает баг недозагрузки страниц). Если я ничего не путаю, и если в 12-й ветке это не отломали (а они кое что успели отломать), то эта настройка по идее д.б. и сейчас.
> C отрисовкой было 2 парадигмы: либо отображать страницу сразу же после полной
> загрузки (по умолчанию в Presto) либо подгружать и отображать по частям
> (как в других браузерах; у Presto в этом режиме иногда всплывает
> баг недозагрузки страниц). Если я ничего не путаю, и если в
> 12-й ветке это не отломали (а они кое что успели отломать),
> то эта настройка по идее д.б. и сейчас.всё вообще не так, пардон. опера всегда умела перемежать парзинг, лайаутинг и рендеринг, и посейчас умеет. это спокойно регулируется в настройках, можешь хоть вообще таймаут на рендер убрать. при этом опера *визуально* и «на уровне ощущений» — быстрее. в основном за счёт общей отзывчивости: закрытие таба, например, в опере *мгновенно* перекитывает на один из старых, а у Pale Moon — весьма ощутимая пауза.
и нет, «баг недозагрузки страниц» не имеет отношения к рендеру, он имеет отношение к кривым скриптам и рекламным хламосайтам. я этого «бага» не видел в опере много лет — с тех пор, как перевёл JS в режим белого списка и побанил большинство рекламной $#%%^@^&.
p.s.: «видузально». теперь вот думаю, что это я написать хотел.
> «баг недозагрузки страниц» не имеет отношения к рендеру, он имеет
> отношение к кривым скриптам и рекламным хламосайтам.Возможно и так. Я как раз примерно в одно время игрался опциями отрисовки и очень многое тогда же забанил через urlfilter.
впрочем, он имеет какое‐то отношение к кэшу, конечно. когда опера не догружает нечто по таймауту, например — она иногда, похоже, пишет в кэш мусор. и потом его использует.
кажется, я мало‐мало идиот. всё‐таки стек «запомненых» переменных должен быть решением. зачем try/finally, если при исключении всё равно без разницы, какие там значения у переменных были, а дальше их восстановит outer code block? ну ладно, придётся хачить break/continue — не самое страшное в жизни.реализовал, кстати, «псевдоскопы» с with — так, чисто проверить концепт. то есть, примерно такую трансформацию:
{
print(v);
let v = 69;
print(v);
}в:
var __tmp__ = {};
with (__tmp__) {
print(v);
__tmp__.v = 69;
print(v);
}почти работает (падает со вложеными функциями, потому что где‐то я пропустил момент установки флага «внутри with» — он из парзера устанавливается, зараза, а я трансформации уже в компиляторе делаю. но это так, крайний случай — медленно же до ужаса. попробую всё‐таки сделать вот это:
{
print(v);
{
var __old_v__ = v;
v = 69;
print(v);
v = __old_v__;
}
}
это будет значительно быстрее, можно будет потом оптимизировать для случая «let никого не перекрывает» (вообще, если нет замыканий, то можно смело делать «let lifting», повышая все let-ы до var-ов), да вдобавок — в отличие от with — это не убивает value tracking (aka оптимизатор). придётся только захачивать в break/continue вместо простого jmp восстановление.кто удивился, откуда выше взялся вложеный кодовый блок — неявно добавился анализатором. чтобы границы запоминания‐восстановления были чётко по границам блоков, так проще. а кодогенератору без разницы, есть там блок или нет, он на переходы смотрит.
опять рандомный репорт под рандомным комментарием: я нечаянно реализовал `let` лучше, чем надо по стандарту. оказывается, `let` — это на самом деле просто похаченый `var`, а не полноценная конструкция. то есть, по стандарту оно делает именно то, что делаю я — сохраняет и восстанавливает перекрытые переменные — но не с места, где встретился `let`, а с самого начала блока, где `let` живёт.мораль: не думайте о людях лучше, чем следует.
ещё мораль: резать к чёртовой матери, не дожидаясь перитонитов! ломать, то есть, красивую реализацию.примечание: не считая этой ерунды и одного бага с перекрытием глобалов, всё очень похоже на работоспособное.
> ещё мораль: резать к чёртовой матери, не дожидаясь перитонитов! ломать, то есть,
> красивую реализацию.Такого же мнения.
Поддерживать костыли имеет смысл, когда делаешь правки на уже работающей системе. В ситуации как сейчас, лучше отламывать костыли ради правильного, однозначного и понятного кода, и если что-то всплывёт (т.е. упадёт), разбираться и фиксить по месту. Я уверяю, - бесплатных тестеров ради ИДЕИ, которые готовы будут погонять развивающуюся Opera Classic, будет предостаточно! Успевайте только давать скомпиленые версии, чтобы люди не мучились :)
продолжаем рандомные репорты: ALL TESTS ARE GREEN! даже вот такие извращения:
b = 666;
c = 669;function test () {
let a = [1, 69, 2, 42, 8];
print(a);for (let b of a) {
print(b);
}
++b; // here our engine should use global
print("last b: "+b);
print("last c: "+c);
}
test();
print("global b: "+b);
print("global c: "+c);
%#?:%"#»% насос, да. совсем забыл, что по легенде let создаёт новые переменные. это неважно ни для чего кроме… замыканий, падла. соответственно, замыкания вместо upvalue получают полную фигню. если бы я мог менять семантику байткода — это решилось бы влёт. но по очевидным причинам я не могу, поэтому придётся опять хаки накручивать. тоскую. плачу. ем позапрошлогодний орбитбезсахара.
> Да не за что, как там с караканом дела?ещё обнаружил, что каракан не умеет в `for (let a of arr) …`. но это проще, это я могу просто в обычный for ещё в парзере преобразовать.
> ещё обнаружил, что каракан не умеет в `for (let a of arr)
> …`. но это проще, это я могу просто в обычный for
> ещё в парзере преобразовать.не, преобразовывать некрасиво (а точнее, сложно, потому что надо заводить AST nodes для временных переменных, считать их…). сделал вместо этого нормально, с правильным кодогенератором и скрытыми temporaries в регистрах.
понятно, что нормальный SSA они не стали делать из‐за потерь скорости в компиляторе. но так руки чешутся! оно там даже некие «псевдо‐фиты» расставляет (потому что оптимизатор умеет в не очень сложное DFA и CSE).
кстати, оптимизатор иногда ещё и циклы анроллит. под какое настроение — пока не смотрел.
кусочек патча вам, нерабочего. для тех, кто не верит в ведущиеся работы. умные поймут.p.s.: говноингриш, я знаю. увы.
> кусочек патча вам, нерабочего. для тех, кто не верит в ведущиеся работы.
> умные поймут.
> http://dpaste.com/0ZV9MY9лень-таки одолела или каракан еще препарируется? Очень хочется узнать вести с полей.
>> кусочек патча вам, нерабочего. для тех, кто не верит в ведущиеся работы.
>> умные поймут.
>> http://dpaste.com/0ZV9MY9
> лень-таки одолела или каракан еще препарируется? Очень хочется узнать вести с полей.нет, пока не одолела. как раз в процессе очередной переписи (так каждый раз: чем глубже понимаю код, тем опять всё переписывать ;-). новая реализация уже поддерживает `for (let v…)` и замыкания. остались break/continue и try/catch — тоже требуют специальной обработки. а потом поверх накатить анализатор, который уберёт лишние копирования (не обязательно, но приятно).
не то, чтобы каждый из предыдущих вариантов не мог работать — просто каждый новый проще, а код делает пошустрей. теперешняя реализация даже немного сотрудничает с value propagation. она не совсем верная, но нафиг эти corner cases: не надо так код писать; да и в es6 strict это запрещено.
по дороге чиню всякую мелочёвку типа ненужного автоматического добавления «http://» к шаблонам urlfilter типа «||example.com/*».
реализую таки путём переписи
let v = xxx;
<smth>
в
{
__tempregX__ = v;
<smth>
v = __tempregX__;
}это, всё‐таки, самый нормальный вариант, и позволяет не отрубать наглухо оптимизатор.
p.s.: мне, собственно, не жалко было бы текущее состояние дел показать в виде патча, но он размазан по истории, надо собирать в кучу, очищать от случайного мусора и отладки, которые совсем в других местах сидят, и всё такое. морока.
> по дороге чиню всякую мелочёвку типа ненужного автоматического добавления «http://»
> к шаблонам urlfilter типа «||example.com/*».К слову, этой ерунды когда-то не было. Введенные строки сохранялись как есть. Поведение изменилось приблизительно в то время когда urlfilter научили синхронизироваться (и добавили метки uuid). Так что годно.
>> по дороге чиню всякую мелочёвку типа ненужного автоматического добавления «http://»
>> к шаблонам urlfilter типа «||example.com/*».
> К слову, этой ерунды когда-то не было. Введенные строки сохранялись как есть.
> Поведение изменилось приблизительно в то время когда urlfilter научили синхронизироваться
> (и добавили метки uuid). Так что годно.оно, в принципе, удобно. и добавляет не всегда, пытается понять, когда не надо. просто когда для расширений добавили фильтры типа «||example.com/*», то UI поправить забыли, и оно о таких фильтрах не знает. а это очень удобные фильтры, потому что они обозначают «любой протокол, включая поддомены». без «||» для этого надо два фильтра: отдельно на основной домен, и отдельно на поддомены. и они медленней.
>> по дороге чиню всякую мелочёвку типа ненужного автоматического добавления «http://»
>> к шаблонам urlfilter типа «||example.com/*».
> К слову, этой ерунды когда-то не было. Введенные строки сохранялись как есть.
> Поведение изменилось приблизительно в то время когда urlfilter научили синхронизироваться
> (и добавили метки uuid). Так что годно.вообще, надо сделать какой‐нибудь спецсимвол в начале строки, наверное, увидев который, опера просто молча его уберёт и не будет пытаться проявить интеллект.
рипорт апдате в рандомный пост. на вторую неделю до Зоркого Глаза дошло, что вместо жестокого переписывания AST внутри компилятора (это чревато ошибками связности — хоть в данном случае они и не проявляются) можно сделать новую ноду‐наследника ES_BlockStmt, которая будет сохранять и восстанавливать переменные. а потом вставлять её прямо в парзере, чисто, красиво и лаяй^w^w.впрочем, я пока не буду опять всё переписывать заново (тут три с половиной наблюдателя, полагаю, облегчённо выдохнули), а просто запишу в тудушку на предмет последующего, пардон май фрэнч, рефакторинга.
тем временем правильно заработали break и continue, пока без меток.
также появилось мнение, что гадить в опеннет блогозаписями (по сути‐то) стало несколько неудобно. аноны‐анончики, а какой сечайс есть блогосервис, чтобы скриптами не обвешан, мозги не насиловал, не грузил 100500 петабайт мусора вместе со страницей и вам удобно было следить? предлагайте свои предложения — и уедем туда, может быть, со всей этой лабуденью?
> также появилось мнение, что гадить в опеннет блогозаписями (по сути‐то) стало несколько
> неудобно. аноны‐анончики, а какой сечайс есть блогосервис, чтобы скриптами не обвешан,
> мозги не насиловал, не грузил 100500 петабайт мусора вместе со страницей
> и вам удобно было следить? предлагайте свои предложения — и уедем
> туда, может быть, со всей этой лабуденью?Поддерживаю! Всё толковое, что касается сабжа, надо бы обязательно перенести.
Я предлагаю на конфе ру-боарда в разделе "Программы" создать отдельную тему. Есть там и отдельный форум "Варез", который закрыт для незагереных пользователей; можно там запостить тему.
Ру-боард очень прост, почти ничего лишнего - всё летает. Некоторые ненужные штуки почикал с помощью UserCSS - простой таблично-линейный вид.
> там и отдельный форум "Варез", который закрыт для незагереных пользователейнет путей. я принципиально за то, чтобы анонимус мог читать и писать свободнобезрегистрациибезсмс.
> я принципиально за то, чтобы анонимус мог читать и писать
> свободнобезрегистрациибезсмс.На Ру-боарде плюс в том, что это единственное оставшееся место, где общаются фаны старой Оперы. Кроме 3,5 человек там реально много людей, кому это интересно; когда всплыла инфа о сабже, то люди весьма оживились!
Я думаю, что проще всего зарегиться одному человеку (там, кстати, не надо никаких смс; при регистрации указывается только e-mail), чем всем мониторить ещё один ресурс. Но, как бы то ни было, я запостил там Ваши требования, и один человек даже предлагает развернуть свой собственный бесплатный форум для тех, кто будет допиливать Opera Claccic; короче вот обсуждение: http://forum.ru-board.com/topic.cgi?forum=5&topic=48802&star...
>> там и отдельный форум "Варез", который закрыт для незагереных пользователей
> нет путей. я принципиально за то, чтобы анонимус мог читать и писать
> свободнобезрегистрациибезсмс.В итоге чем закончился поиск хостинга? Ты так и остался на
форуме opennet? ;)
> В итоге чем закончился поиск хостинга? Ты так и остался на
> форуме opennet? ;)я и не искал, я ждал предложений от анонимусов (ну, и не совсем анонимусов). парочка поступила, но энтузиазма не наблюдаю. то есть, видно, что читать простыни людям неинтересно — а потому пусть будет опеннет с краткими отчётами.
судя по всему, те, кто что‐то с кодом делает — я да iSage. то есть, расписывать внутреннее устройство кодовой базы не для кого. ну, мне же легче. подумываю о том, чтобы выложить патч как есть, написать пару строк о том, что там надо допилить — и тоже в тень уйти. это я не угрожаю и не требую восхвалений с просьбами остаться, это я подустал просто. в том числе и от просьб. опеннет в этом плане самый приличный, кстати, оказался: читают, радуются, не пристают. ;-)
> судя по всему, те, кто что‐то с кодом делает — я да
> iSage. то есть, расписывать внутреннее устройство кодовой базы не для кого.Думаю, что это отчасти связано с тем, что работа с исходным кодом Оперы
лежит вне правового поля.> ну, мне же легче. подумываю о том, чтобы выложить патч как
> есть, написать пару строк о том, что там надо допилить —
> и тоже в тень уйти. это я не угрожаю и не
> требую восхвалений с просьбами остаться, это я подустал просто.Понятное дело, энтузиазм иссякает, а когда еще и знаешь, что будут
пользоваться наработками полтора человека, то и ценность
производимых работ как-то теряется. А для себя можно и потерпеть :)> в том числе и от просьб. опеннет в этом плане самый приличный, кстати,
> оказался: читают, радуются, не пристают. ;-)А где пристают и требуют?
>> судя по всему, те, кто что‐то с кодом делает — я да
>> iSage. то есть, расписывать внутреннее устройство кодовой базы не для кого.
> Думаю, что это отчасти связано с тем, что работа с исходным кодом
> Оперы
> лежит вне правового поля.а также с тем, что «иметь» хотят многие, а «делать» — почти никто.
> Понятное дело, энтузиазм иссякает, а когда еще и знаешь, что будут
> пользоваться наработками полтора человека, то и ценность
> производимых работ как-то теряется. А для себя можно и потерпеть :)для себя я как раз терпеть и не собираюсь. и энтузиазм никуда не девается. просто «для себя» можно не напрягаться особо: фигачить любой обезьянокод, лишь бы собралось и не падало (хотя бы не очень часто). и тупо заниматься вандализмом, вырезая «с концами» всё, что мне неинтересно — вместо нежного твикования.
те же let: да мне нафиг не упёрся JIT в каракане, мне вообще наплевать на скорость js. для себя я могу просто вырвать JIT, добавить в VM несколько команд — и всё работает.
>> в том числе и от просьб. опеннет в этом плане самый приличный, кстати,
>> оказался: читают, радуются, не пристают. ;-)
> А где пристают и требуют?очевидно же: в других местах. ;-)
> очевидно же: в других местах. ;-)Какие вести с полей? Будешь патчи культурно
оформлять или рано еще?
> Какие вести с полей? Будешь патчи культурно
> оформлять или рано еще?замыкания же не работают правильно. кой хрен радости с тех летов, если замыкания кирдык? к сожалению, правильно их починить без изменения VM не так просто. экспериментирую.
я всё ещё не умер, мне просто очень не хочется делать придуманый хакфикс: он отвратителен. поэтому я откладываю — в надежде на то, что придумаю что‐нибудь получше. если в ближайшее время (дни‐недели‐года, как‐то так) не придумаю, то придётся так.
>> В итоге чем закончился поиск хостинга? Ты так и остался на
>> форуме opennet? ;)
> я и не искал, я ждал предложений от анонимусов (ну, и не
> совсем анонимусов). парочка поступила, но энтузиазма не наблюдаю. то есть, видно,
> что читать простыни людям неинтересно — а потому пусть будет опеннет
> с краткими отчётами.Пользователь timsky [ http://forum.ru-board.com/topic.cgi?forum=5&topic=48802&star... ] для обсуждения исходников Oперы 12.15 поднял форум [ http://forum.timsky.ru/ ] :
> Гости имеют возможность создавать темы, отвечать и прочее.
> Регистрироваться не обязательно, но желательно.
> Регистрация без капчи и подтверждения.
> Вбил логин, пароль, мыло - и вперёд!
> Приглашайте кого хотите
спасибо. однако форум и бложег — вещи разные. в бложеге я королева сцены, пишу простыни и всё такое. а форум — он и здесь терпимый, да и интерфейс приятней.
> спасибо. однако форум и бложег — вещи разные. в бложеге я королева
> сцены, пишу простыни и всё такое. а форум — он и
> здесь терпимый, да и интерфейс приятней.Здесь уже месиво из постов. На форуме можно создавать отдельные темы по решению/обсуждению конкретных задач. Так сказать unix way: одна задача, одна тема. А самопровозглашенным королем территории Carakan ты и так останешься на долго, ибо пока никто даже и не помышляет вторгаться на эту территорию :)
> Здесь уже месиво из постов.хаос всепобеждающ!
> А самопровозглашенным королем территории Carakan ты и так останешься на долго,
> ибо пока никто даже и не помышляет вторгаться на эту территорию
> :)да я хоть сейчас все регалии сдам! только возьмите кто‐нибудь! ;-)
p.s.: уф. пол‐дня поисков для двух строчек патча. подарите мне кто‐нибудь запасную голову, эта болит.
> уф. пол‐дня поисков для двух строчек патча.В хорошем коде патч из двух строк - серьёзный патч!
> однако форум и бложег — вещи разные. в бложеге я королева
> сцены, пишу простыни и всё такое.Эти вещи как раз общие.
И у блога, и у форума в темах есть возможность написать неизменяемую шапку.
И у блога, и у форума в темах есть возможность вести дальнейшую переписку.Другое дело, что Вы почему-то утеряли желание куда-то переходить...
как я писал — мне интересны сольные выступления. и тряпка, чтобы глупости из комментариев чистить. формат форума — это: «вот вам патч. любитесь.» в формате блога же можно рассказывать о том, что такое опера внутри, как я дошёл до жизни такой и почему все вокруг идиоты, один я стою умный в белом пальто.
> как я писал — мне интересны сольные выступления. и тряпка, чтобы глупости
> из комментариев чистить.Я думаю вакансия модератора на форуме также открыта :)
> в формате блога же можно рассказывать о том, что такое опера
> внутри, как я дошёл до жизни такой и почему все вокруг
> идиоты, один я стою умный в белом пальто.Так сделай тему на форме "Внутренности carakan" или "Моя война за каракан" и пиши все что считаешь нужным.
На форуме плюс в том, что и остальные смогут параллельно создавать и обсуждать темы не мешая друг другу. В тоже время все будет соборно в одном форуме - проще и тебе и остальным - сразу видно кто над чем работает и какие проблемы кого волнуют.
>> как я писал — мне интересны сольные выступления. и тряпка, чтобы глупости
>> из комментариев чистить.
> Я думаю вакансия модератора на форуме также открыта :)нененене. я в этом уже бывал неоднократно, больше не хочу.
> Так сделай тему на форме "Внутренности carakan" или "Моя война за каракан"
> и пиши все что считаешь нужным.не то! ну вот не то, и всё тут. ;-)
> На форуме плюс в том, что и остальные смогут параллельно создавать и
> обсуждать темы не мешая друг другу. В тоже время все будет
> соборно в одном форуме - проще и тебе и остальным -
> сразу видно кто над чем работает и какие проблемы кого волнуют.да никто ни над чем не работает. на руборде посмотри, например (откуда и форум пошёл) — там и собрать‐то некому, какой «работать»… понапихают риквестов — как обычно, — да и всё.
iSage разве что зазвать: может, он ещё не забил на ECC.
а я вот не хочу риквестов, кстати, они меня раздражают.
> я и не искал, я ждал предложений от анонимусов (ну, и не
> совсем анонимусов). парочка поступила, но энтузиазма не наблюдаю.Поднят открытый форум http://forum.timsky.ru/ специально для тех, кто пилит код и для всех заинтересованных.
Регистрация осталась для тех, кто хочет региться. Можно зайти в "Вопросы форума" и потестить - сообщения и темы добавляются без регистрации, смс, капчей и т.п.
>[оверквотинг удален]
> что читать простыни людям неинтересно — а потому пусть будет опеннет
> с краткими отчётами.
> судя по всему, те, кто что‐то с кодом делает — я да
> iSage. то есть, расписывать внутреннее устройство кодовой базы не для кого.
> ну, мне же легче. подумываю о том, чтобы выложить патч как
> есть, написать пару строк о том, что там надо допилить —
> и тоже в тень уйти. это я не угрожаю и не
> требую восхвалений с просьбами остаться, это я подустал просто. в том
> числе и от просьб. опеннет в этом плане самый приличный, кстати,
> оказался: читают, радуются, не пристают. ;-)а я бы почитал подробнее. Примерно раз в неделю берусь за оперу. Правда, у меня ситуация более безнадёжная: приходится отлаживать краши внутри блоков jit. пока могу сказать одно: рушится stack frame после выхода из jit блока. При этом jsshell работает нормально. Просто загадка какая-то.
> Правда, у меня ситуация более безнадёжная: приходится отлаживать краши внутри блоков
> jit. пока могу сказать одно: рушится stack frame после выхода из
> jit блока. При этом jsshell работает нормально. Просто загадка какая-то.так, с ходу, очень похоже на то, что где-то кто-то мажет мимо нужной памяти, и повреждает какую-то фигню. или выравнивание. или таки инструкции «не те». увы: пытайся повторить на jsshell, иначе фиг ты чего отладишь, неудобно и пересобирать запаришься.
типа вот такого: http://dpaste.com/2B0D4CXпатч не накатится, конечно: вырван с мясом, с кусками, которые удаляют старые эксперименты, типа того.
> лень-таки одолела или каракан еще препарируется? Очень хочется узнать вести с полей.также есть подозрение, что потом получится реализовать полноценный yield. если я правильно понял внутреннюю механику — есть шанс, что не придётся при этом полностью JIT отрубать и крушить VM кувалдой. соответственно, будут так любимые хипстерами и мной генераторы. а это, почитай, все модные‐стильные‐современные фичи es6 покрывает. промисы можно и шимом добавить из расширения/browser.js.
> промисы можно и шимом добавить из расширения/browser.js.По моему, лучше такие штуки делать в основном коде, т.к. browser.js такая штука - каждый навернуть может, а потом ищи-свищи, почему что-то не работает...
это мечты. а жестокая реальность заключается как минимум в том, что мне промисы абсолютно неинтересны: они в моих скриптах не фигурируют — в отличие от `let` и `yield`. поэтому шим — лучшее, что я могу предложить. это если ты имел в виду реализацию в core, «как надо».а если именно «гадить захардкоженым текстом, а не browser.js» — нит. browser.js предназначен именно для того, чтобы чинить всякие сайты; если кто‐то полезет и допишет в него ерунды — сам себе виноват. есть механизм, предназначеный именно для того, что надо сделать — следует его использовать, а не вбивать кувалдометром болты. я специально для этого проверку подписи в browser.js убрал.
расскажу немного про то, что такое каракан внутри.внутри это более‐менее стандартный компилятор в регистровую VM, написаный практически «по учебнику».
парзер сделан руками, и немного «шиворот‐навыворот»: вместо прямой рекурсии она отслеживается вручную, и парзер кладёт на стеки куски собраных AST для выражений и операторов. а потом из них строит AST повыше. сделано так для того, чтобы на устройствах, где со стеком напряг, не начинать rampage, когда всё становится плохо. внутри кода есть твики, указывающие максимальный уровень вложенности для парзера и подобное, поэтому поломать каракан очень‐очень глубокой глоткой нельзя (если в коде каракана нет ошибок, конечно ;-).
флажок «у нас есть try/finally или with», к сожалению, трекается внутри парзера, а не внутри компилятора. отчасти потому, что он нужен для кодогенерации вложеных функций, а к этому моменту (кодогенерации) вложеные функции уже собраны в отдельные объекты, и информация о точном месте их объявления утеряна.
практически всё выделение памяти в лексере/парзере/компиляторе делается в отдельном пуле, который потом выкидывается. во‐вторых, так быстрее, а во‐первых, опять таки позволяет удобней контролировать, сколько движку позволено выжрать.
компилятор в процессе создания кода пытается отслеживать значения локальных переменных и делать constant folding. периодически у него это получается. однако любое использование try/catch/finally и/или with отрубает эту функциональность наглухо для всей функции. также каракан может отрубить оптимизатор, если посчитает, что вложеные функции слишком сложные (расплывчатое понятие, да).
по некоторым причинам значения аргументов функции не отслеживаются, даже если аргументу явно присваивается какое‐то значение и его можно отслеживать. так что заводите локальные переменные, когда пишете js-код для оперы. ;-)
for и while, у которых известно количество повторений, компилятор может unroll'нуть. он там как‐то считает весовые коэффициенты и выгоду, но я не смотрел, как именно. если честно, я вообще не уверен, что от этого есть большая выгода. впрочем, см. ниже. это тоже часть оптимизатора, и тоже будет отрублена, если вдруг.
jit. он там есть. даже пытается выводить типы, отслеживать их изменение и периодически перекомпилировать код, если считает, что это будет полезно. компилируется не вся функция целиком, а кусками. базовый кусок — это выражение. потом набор выражений без переходов. у цикла, по‐моему, компилируется только тело (возможно, именно по этой причине оптимизатор пытается циклы разворачивать — чтобы помочь jit'у).
код компилятора вполне читабельный. есть документация по командам VM: краткая, но вполне достаточная для справочника. авторы знали про паттерн visitor, и кое‐где его используют. однако стадии Prepare и Compile не «запатернены»: скорее всего, писались первыми, а потом просто не было глубокого смысла делать код «модным».
нативного дизассемблера нет (или я долблюсь в глаза), но дизасм VM есть, конечно. впрочем, он включается только для standalone jsshell, а сама опера собрана без него.
в целом — каракан оставляет очень приятное впечатление и вполне поддаётся разбору. с jit'ами чуть сложнее (потому что один jit больше всего компилятора в целом), но при беглом осмотре они тоже вполне адекватны.
остальные части кода я смотрел очень бегло, так что ничего особо интересного о них написать не могу пока.примечание: в течение этой недели с хвостиком я честно использую оперу как основной браузер. работает, не падает. прямо как настоящая.
p.s.: есть какой‐то интересный исходник, который — по идее — должен сохранять на диск сгенерированый код для VM. однако судя по тому, что в этом исходнике можно прочитать — он всего лишь обломок футарка (предыдущего js-двигателя), и для каракана такой фичи попросту не планировалось.
> p.s.: есть какой‐то интересный исходник, который — по идее — должен сохранять
> на диск сгенерированый код для VM. однако судя по тому, что
> в этом исходнике можно прочитать — он всего лишь обломок футарка
> (предыдущего js-двигателя), и для каракана такой фичи попросту не планировалось.Емнип, это используется турбо на сервере, клиенту отдается уже байткод
> Емнип, это используется турбо на сервере, клиенту отдается уже байткодкак минимум то, что там лежит — уже давно протухшее и нерабочее. даже несобираемое. возможно, была идея перевести обрезок с футарка на каракан. или просто забыли исходник, и он там гниёт потихоньку. в общем, он бесполезен, мусор.
то есть, ты прав в том, что это огрызок operette, но её у нас всё равно нет.
p.s.: не вводи народ в заблуждение на гт: каракан однопоточный. точнее, там cooperative multithreading. возможность сборки с «настоящими» потоками существует только для standalone, и то я не уверен, что оно будет нормально работать. вся opera core строго однопоточная внутри, без исключений почти.
> примечание: в течение этой недели с хвостиком я честно использую оперу как
> основной браузер. работает, не падает. прямо как настоящая.Читаю тред с самого начала. Очень интересно, хотя исходников у меня нет.
Но, готов помочь с созданием rpm для Fedor'ы, если кому-то надо.
Хотелось бы узнать, сколько людей работает над утекшими исходниками?
arisu есть ли у тебя какой-нибудь кошелек, дабы люди могли твой энтузиазм
денежными переводами поддерживать?
> Но, готов помочь с созданием rpm для Fedor'ы, если кому-то надо.а смысл? то есть, любое желание помочь — это хорошо, спасибо, но делать пакеты… оперу можно без особых проблем запускать из одного каталога, утрамбовав туда же профиль. к тому же цветочек в принципе способен делать deb и rpm сам — при наличии соответствующих инструментов. он, собственно, и пытается сразу. проще нафантазировать себе исходники и проверить, действительно ли цветочек ещё не поломан.
> Хотелось бы узнать, сколько людей работает над утекшими исходниками?
вряд ли это кому‐то известно. в любом случае — думаю, что меньше десятка (хорошо, если хоть половина десятка ;-). в принципе, всё равно лучше, чем ноль.
> arisu есть ли у тебя какой-нибудь кошелек, дабы люди могли твой энтузиазм
> денежными переводами поддерживать?нет. и я бы не показал в любом случае: это уже прямой путь к пативэну. пока что я просто вольно фантазирую на тему неких байтов, которые — прошу заметить — сам себе и придумал. а как только появляются деньги — в любом виде — позиция становится намного более шаткой.
тем не менее, спасибо: думаю, предложение было сделано от чистого сердца, и при других обстоятельствах я бы не отказался. будем надеяться, что всё‐таки случится чудо, и инопланетные мозговые слизни заставят операсофтваре открыть исходники под нормальной лицензией.
> вряд ли это кому‐то известно. в любом случае — думаю, что меньше
> десятка (хорошо, если хоть половина десятка ;-). в принципе, всё равно
> лучше, чем ноль.То есть ни ты, ни с тобой никто не связывался с предложением
пилить совместно и никто патчи не присылал?> нет. и я бы не показал в любом случае: это уже прямой
> путь к пативэну. пока что я просто вольно фантазирую на тему
> неких байтов, которые — прошу заметить — сам себе и придумал.
> а как только появляются деньги — в любом виде — позиция
> становится намного более шаткой.А вот тут я сомневаюсь. Ты же не будешь распространять исходный код,
а будешь распространять патчи, для некоей абстрактной фантазии.> тем не менее, спасибо: думаю, предложение было сделано от чистого сердца, и
> при других обстоятельствах я бы не отказался.Другие обстоятельства - это другие проекты, или именно исходники Presto,
под открытой лицензией?> будем надеяться, что всё‐таки
> случится чудо, и инопланетные мозговые слизни заставят операсофтваре открыть исходники
> под нормальной лицензией.Вроде на change.org петиция была, но, уверен, на нее забьют. Ждем чуда, одним словом.
> То есть ни ты, ни с тобой никто не связывался с предложением
> пилить совместно и никто патчи не присылал?вся ветка тут. как видишь. ;-)
впрочем, какие мне патчи, или кому я? я плотно присел на каракан, в остальные части особо не вчитывался; не думаю, что кто‐то ещё занимается караканом. а у меня хобби — написание всяких компиляторов, мне интересно.
>> нет. и я бы не показал в любом случае: это уже прямой
>> путь к пативэну. пока что я просто вольно фантазирую на тему
>> неких байтов, которые — прошу заметить — сам себе и придумал.
>> а как только появляются деньги — в любом виде — позиция
>> становится намного более шаткой.
> А вот тут я сомневаюсь. Ты же не будешь распространять исходный код,
> а будешь распространять патчи, для некоей абстрактной фантазии.«сомнение не есть уверенность: можно и ошибиться» (ц) когда начинают фигурировать деньги, говорить, что это просто развлечение, которое никому не приносит вреда и не предназначено для извлечения коммерческой выгоды из чужой собственности — сильно сложнее.
я, конечно, не думаю, что ко мне прямо таки заедут юристы оперы и весёлые парни с дубиналом, но бережённого, как говорится…
>> тем не менее, спасибо: думаю, предложение было сделано от чистого сердца, и
>> при других обстоятельствах я бы не отказался.
> Другие обстоятельства - это другие проекты, или именно исходники Presto,
> под открытой лицензией?престо. мне не особо интересно в другие проекты впрягаться. я и этих воображаемых розовых единорогов не собираюсь развивать, мне просто хочется, чтобы там работали нужные мне фичи. если бы вдруг кто‐то мне их сделал — я бы в ту же секунду бросил сам маяться. но если никого нет… что ж, DIY тогда.
>> будем надеяться, что всё‐таки
>> случится чудо, и инопланетные мозговые слизни заставят операсофтваре открыть исходники
>> под нормальной лицензией.
> Вроде на change.org петиция была, но, уверен, на нее забьют. Ждем чуда,
> одним словом.да они ещё тогда, когда она появилась, забили. скорее всего, ещё и бетоном сверху забитое залили. но надеяться‐то это не мешает.
> Но, готов помочь с созданием rpm для Fedor'ы, если кому-то надо.Это абсолютно не нужно, ибо система сборки умеет делать tar, rpm и deb.
>[оверквотинг удален]
> с jit'ами чуть сложнее (потому что один jit больше всего компилятора
> в целом), но при беглом осмотре они тоже вполне адекватны.
> остальные части кода я смотрел очень бегло, так что ничего особо интересного
> о них написать не могу пока.
> примечание: в течение этой недели с хвостиком я честно использую оперу как
> основной браузер. работает, не падает. прямо как настоящая.
> p.s.: есть какой‐то интересный исходник, который — по идее — должен сохранять
> на диск сгенерированый код для VM. однако судя по тому, что
> в этом исходнике можно прочитать — он всего лишь обломок футарка
> (предыдущего js-двигателя), и для каракана такой фичи попросту не планировалось.А есть что-нибудь для отладки jit? gdb вроде бы бессилен т.к краш обычно находится в глубине jit блока и не понятна не причина ни даже место js кода его вызвавшее?
jit не работает на armhf системе по непонятной причине, возможно, дело в каких-то armv7 фичах. падает или с неверной инструкцией или с segmentation fault. При этом говорят что на RPI всё работает.
для всего этого были тесты, но запускалку их нам не слили.впрочем, в случае каракана использовались от соответствующего времени санспайдер и как его, чёрта… этот, второй.
в любом случае — вся информация сохраняется для вывода стектрэйсов. printf'ы, всё такое.
> для всего этого были тесты, но запускалку их нам не слили.
> впрочем, в случае каракана использовались от соответствующего времени санспайдер и как
> его, чёрта… этот, второй.
> в любом случае — вся информация сохраняется для вывода стектрэйсов. printf'ы, всё
> такое.Ну я прогонял на jsshell тесты которые там есть, они не крашатся.
Может есть какие-то отличия сборки standalone от полной?
Я попытался врубить встроенный дизассемблер, но он пока ничего не вывел.
> Может есть какие-то отличия сборки standalone от полной?да. по дефолту, как я писал, jsshell не использует jit. надо -np указывать.
> Я попытался врубить встроенный дизассемблер, но он пока ничего не вывел.
дизасм дизасмит только инструкции VM, дизасма для нативного кода там нет.
>> Может есть какие-то отличия сборки standalone от полной?
> да. по дефолту, как я писал, jsshell не использует jit. надо -np
> указывать.
>> Я попытался врубить встроенный дизассемблер, но он пока ничего не вывел.
> дизасм дизасмит только инструкции VM, дизасма для нативного кода там нет.есть. сишный файл.
Он использует binutils для дизассемблирования, но прикручивали его по быстрому.
Я видимо что-то пропустил.carakan/src/util/es_codegenerator_mips.cpp
#carakan/src/util/es_native_disass.c # [no-jumbo;no-pch] ; used for debugging on lingogi, uncomment if needed
carakan/src/util/es_strtod.cpp
carakan/src/util/es_util.cpp
carakan/src/util/es_tempbuf.cppНа убунте нужен binutils-dev, в ldflags добавить -lopcodes
Собирал так:
./flower -v -j 5 --without-kde4 --without-gtk3 --without-gtk2 -k --without-plugins --without-dual-plugin-wrapper --without-autoupdatechecker --no-package-devel --debug --package=tar -D FT_INTERNAL_FREETYPE --without-gstreamer -D NO_CUPS --no-jumbo --lib-per-module -D FEATURE_SCOPE_ECMASCRIPT_DEBUG=YES -D DUMP_TRAMPOLINE_CODE_VECTORS -D NATIVE_DISASSEMBLER_SUPPORT -D ES_DISASSEMBLER_SUPPORTТам ещё пара патчей исправляющих сборку без cups и без jumbo
>>> Я попытался врубить встроенный дизассемблер, но он пока ничего не вывел.
>> дизасм дизасмит только инструкции VM, дизасма для нативного кода там нет.
> есть. сишный файл.
> Он использует binutils для дизассемблирования, но прикручивали его по быстрому.
> Я видимо что-то пропустил.я провтыкал, значит. извиняюсь за дезу.
>[оверквотинг удален]
> carakan/src/util/es_strtod.cpp
> carakan/src/util/es_util.cpp
> carakan/src/util/es_tempbuf.cpp
> На убунте нужен binutils-dev, в ldflags добавить -lopcodes
> Собирал так:
> ./flower -v -j 5 --without-kde4 --without-gtk3 --without-gtk2 -k --without-plugins --without-dual-plugin-wrapper
> --without-autoupdatechecker --no-package-devel --debug --package=tar -D FT_INTERNAL_FREETYPE
> --without-gstreamer -D NO_CUPS --no-jumbo --lib-per-module -D FEATURE_SCOPE_ECMASCRIPT_DEBUG=YES
> -D DUMP_TRAMPOLINE_CODE_VECTORS -D NATIVE_DISASSEMBLER_SUPPORT -D ES_DISASSEMBLER_SUPPORT
> Там ещё пара патчей исправляющих сборку без cups и без jumboА как включить основной дизасм? Он там связан с нативным, но надо как-то заставить его работать в рантайме. Без него нативный ничего и не пишет.
> А как включить основной дизасм? Он там связан с нативным, но надо
> как-то заставить его работать в рантайме. Без него нативный ничего и
> не пишет.должен. если нативный включен, то при создании `ES_Native` сразу зовут `EnableNativeDisassemble()` же.
>> А как включить основной дизасм? Он там связан с нативным, но надо
>> как-то заставить его работать в рантайме. Без него нативный ничего и
>> не пишет.
> должен. если нативный включен, то при создании `ES_Native` сразу зовут `EnableNativeDisassemble()`
> же.Пробегусь ещё раз, может что-то найду. Но уже не сегодня.
Переходите сюда, пожалуйста: http://forum.timsky.ru/viewtopic.php?f=5&t=86 ибо хотелось бы, чтобы вся полезная инфа была в одном месте, а собирать её и фильтровать, потом переносить занимает много времени(
> Переходите сюда, пожалуйста: http://forum.timsky.ru/viewtopic.php?f=5&t=86 ибо хотелось
> бы, чтобы вся полезная инфа была в одном месте, а собирать
> её и фильтровать, потом переносить занимает много времени(там не очень удобная каталогизация, да и скудная, чтобы туда полностью переходить. но если это изменится, то там будет собираться не только полезная инфа. сейчас ограниченность разделов и тем обеспечивают фильтрацию, так сказать, аудитории, что передотвращает cpa4. хотя зачастую в cpa4e и рождаются новые полезные ветки обсуждения, вот которые вы и переностие на тимский (кстати как правильно, тимский или тимскай?). то есть если всё переедут туда и там будет легко общаться, то от перетаскивания и распределения коментов вы, скорее всего, не уйдете, просто будете делать это в рамках одного сайта.
вот меня в частности интересует обсуждение вопроса будущего распространения готовых решений в доступной для юзверей форме, когда опера уже будет к тому готова. но на тимском нет соответствующего раздела, где можно об этом разглогольствовать. раздел с пожеланиями как-то не очень для этого подходит.
> вот меня в частности интересует обсуждение вопроса будущего распространения готовых решений
> в доступной для юзверей форме, когда опера уже будет к тому
> готова. но на тимском нет соответствующего раздела, где можно об этом
> разглогольствовать. раздел с пожеланиями как-то не очень для этого подходит.так я тебе скажу, что вопросы по поводу нового раздела *там*, обсуждаемые *тут* — это не самая конструктивная идея.
> так я тебе скажу, что вопросы по поводу нового раздела *там*, обсуждаемые
> *тут* — это не самая конструктивная идея.так вот в том то и фикус, что я и вышесказанное там не могу сказать. а здесь отписался лишь в ответ (=
а так согласен, конструктивна централизованность.
Завтра во второй половине дня постараюсь сделать подборку уже имеющихся сообщений и создать тему там. Тоже думал, куда бы её присобачить, вроде подходящего форума нет, но ради одной-двух тем отдельный форум выделять не дело.
Короче, всё завтра.
> Завтра во второй половине дня постараюсь сделать подборку уже имеющихся сообщений и
> создать тему там. Тоже думал, куда бы её присобачить, вроде подходящего
> форума нет, но ради одной-двух тем отдельный форум выделять не дело.
> Короче, всё завтра.не дело, если там никто писать не будет. другое дело, если это кому языки развяжет, так как раздел будет относительно произвольной тематики. хотя с другой стороны халиварщики уже в январе сдулись, так что хз. ладно, будет день - будет пища.
> так вот в том то и фикус, что я и вышесказанное там
> не могу сказать.почему? O_O
>> так вот в том то и фикус, что я и вышесказанное там
>> не могу сказать.
> почему? O_Oнегде. но вроде как VladSh собирается расширить разделы, может тогда и будет можно обо всём жуметь на тимском.
>>> так вот в том то и фикус, что я и вышесказанное там
>>> не могу сказать.
>> почему? O_O
> негде.так я ещё раз намекаю, что с телепатией всё очень плохо. поэтому стоит не ожидать активации libastral, а прийти прямо на форум, и там попросить нужный раздел. вот где предложения предлагают.
> но вроде как VladSh собирается расширить разделы, может тогда и будет
> можно обо всём жуметь на тимском.У меня нет столько прав, чтобы добавить/удалить раздел/форум.
Но тема создана, пользуйтесь: http://forum.timsky.ru/viewtopic.php?f=9&t=100
>> но вроде как VladSh собирается расширить разделы, может тогда и будет
>> можно обо всём жуметь на тимском.
> У меня нет столько прав, чтобы добавить/удалить раздел/форум.
> Но тема создана, пользуйтесь: http://forum.timsky.ru/viewtopic.php?f=9&t=100тогда вот этот пост поправь http://forum.timsky.ru/viewtopic.php?f=9&t=100&sid=d54bc8376...
там аттач не нужен, я давал ссылку и на превью и на ригенал, чтоб кликабелку можно было сделать. незнаю как сюда текст набросать, чтобы в матюги не записало, но попробую..Кстати ради интереса прошерстил ворстат, вот что вышло.
[урл=http://s008.radikal.ru/i306/1702/ff/e7fc44ff534e.png]...
Не знаю, оптимистично это или нет, но радует что непосредственно сорцами интересуется около 20%. К слову для сравнения: вивальди интересует не большее число людей, может и меньшее. если кто считает, что я учел не все запросы - учел, просто там по нулям. разве что не все англоязычные запросы были проверены.
Адвордс не люблю, потому там ничего не проверял.
хреново вышло, но думаю догадаешься, на что "урл" подменить, и скопируй линк, чтоб получить остаток от bbкодов
Не знаю, как вставить там линк на превью(И не знаю, как аттач сделать не развёрнутым, а такой, как в патчах...
P.S. Я специально туда вложил файл, т.к. на радикале это с течением времени исчезнет, и из инета эта инфа исчезнет, а на форуме останется.
> Не знаю, как вставить там линк на превью(
> И не знаю, как аттач сделать не развёрнутым, а такой, как в
> патчах...
> P.S. Я специально туда вложил файл, т.к. на радикале это с течением
> времени исчезнет, и из инета эта инфа исчезнет, а на форуме
> останется.Кстати ради интереса прошерстил ворстат, вот что вышло.
[урл=хттп://s008.radikal.ru/i306/1702/ff/e7fc44ff534e.png][img]хттп://s008.radikal.ru/i306/1702/ff/e7fc44ff534et.jpg[/img][/url]
Не знаю, оптимистично это или нет, но радует что непосредственно сорцами интересуется около 20%. К слову для сравнения: вивальди интересует не большее число людей, может и меньшее. если кто считает, что я учел не все запросы - учел, просто там по нулям. разве что не все англоязычные запросы были проверены.
Адвордс не люблю, потому там ничего не проверял.вот так вот оформи текст (русское замени на инглиш, я про "урл" и "хттп") и удали аттач вообще, я на радикале картинки храню с 2008, их никто не удалял, одна по сей день с того года там лежит (лишь про нее я точно знаю, так как все форумы, где я использовал радикал посдыхали раньше, чем можно было проверить сохранность других картинок). на радикале, может, что-то и удалят, но только в том случае, если к файлу не будет обращений регулярных. а они будут. даже если и удалится, у меня есть оригенал, всё можно будет восстановить. в любом случае данные актуальны на какое-то время.
> Я видимо что-то пропустил.учти, что jit триггерится только если движок решает, что увидел «горячий» код. например, для простого
function n () {
let a = 40;
a += 2;
return a;
}print("a!");
print(n());фиг тебе, а не нативный код. а вот если `print(n());` вызывать в цикле — прибежит джитер.
>[оверквотинг удален]
> например, для простого
>function n () {
> let a = 40;
> a += 2;
> return a;
> }
> print("a!");
> print(n());
> фиг тебе, а не нативный код. а вот если `print(n());` вызывать в
> цикле — прибежит джитер.знаю про это.
Я включил дамп трамплинов, он показывает только заголовки, но внутри пусто.
тогда не знаю, увы. я в джит практически не лазил.
больше я тебе ничего не скажу, потому что у меня из всех армов только N900, и я даже не пробовал пока для него собирать.
> больше я тебе ничего не скажу, потому что у меня из всех
> армов только N900, и я даже не пробовал пока для него
> собирать.ну так он же как раз с armv7, там и есть эта проблема.
Правда, сборка ресурсов требует. С --no-jumbo и --lib-per-module памяти хватит, но будет доого ползти.
собирать можно кросс-компилятором, то не проблема. но мне пока не до этого.
p.s.: на всякий случай можешь ещё -fno-strict-aliasing сделать в «platforms/flower/module.build/00-gcc.conf.py». там в процессе несколько (один точно) ворнинг по этому поводу, поэтому лучше обезопаситься. на всякий случай.
p.p.s.: да, мелкопатч от iSage тоже наложи — не помешает. также можешь сказать --package tar, чтобы оно не пыталось делать deb и rpm (оно для этого перломодулей хочет). возможно, один перломодуль таки придётся поставить, который для xml. там скажут, какой.2all: и да, я в курсе, что есть редактирование постов. но мне так больше нравится.
Сделал сборку под x86 с макимальной оптимизацией, показала себя нормально.
А вот на arm при включенном jit падает с неверной инструкцией. Нужны люди которые разбираются в принципах работы jit чтобы это исправить. возможно код jit компилятора не первой актуальности. Без jit js выполняется в 2000 раз медленнее.
Сразу отмечу, что эта ветка не имеет android порта. тут только десктопные версии. И код компилятора для arm может не иметь последних изменений, из-за которых и происходит сбой.
Кстати, опера может работать без gtk. Там есть свой тулкит и он намного шустрее.
Для сборки свежими компиляторами без оптимизации придётся отрубить FORTIFY_SOURCE.
ещё у него есть проблемы со встроенным аллокатором, которые могут проявиться при сборке без дебага.
> ещё у него есть проблемы со встроенным аллокатором, которые могут проявиться при
> сборке без дебага.это баг gcc5+, который косячит, выкидывая нужное. решается стратегическим `
if (data.attrs) printf(" \x08"); else printf(" \x08");`, например.а код для арм там кривой. ну и фиг с ним.
>> ещё у него есть проблемы со встроенным аллокатором, которые могут проявиться при
>> сборке без дебага.
> это баг gcc5+, который косячит, выкидывая нужное. решается стратегическим `
> if (data.attrs) printf(" \x08"); else printf(" \x08");`, например.
> а код для арм там кривой. ну и фиг с ним.Что-то я туплю, но где именно оно там падает? Вруг можно без хака с флагом пофиксить?
> Что-то я туплю, но где именно оно там падает? Вруг можно без
> хака с флагом пофиксить?оно падает где‐то во глубине сибирских руд^w^w delete, куда оно зачем‐то попадает с `data.attrs == NULL`, а попадать туда оно не должно, потому что delete должно быть толерантно к нулам.
причём падаем именно в этом одном конкретном месте, больше я нигде подобных падений не выловил. так что это не баг в оперном delete (я даже не уверен, что они его перекрывают — по‐моему, нет), это баг в оптимизаторе. дополнительно можно убедиться, что именно оптимизатор, если вспомнить, что -O0 не падает.
соответственно, компилятор у нас дохрена умный, и
if (data.attr) delete data.attr[];
не работает, потому что компилятор знает, что delete безопасно вызывать с нулами, и проверку нафиг аннигилирует.поскольку про флаг я не знал, не знал, а потом вдруг забыл, то я просто вставил вызов функции с сайд‐эффектом, и это помогло.
дизасм я не смотрел, но судя по всему где‐то облажался register allocator.
p.s.: -O2 лажает точно так же, как и -O3. я всё равно на всякий случай понизил до -O2 — целее будем.p.p.s.: я сильно подозреваю, что это очередной случай, когда компилятор тупо считает: «программ с UB нет и быть не может». там выше цикл, который снимает у attr атрибут внутренней очистки, и в принципе, он без охраны. поэтому компилятор вправе считать, что после цикла data.attr никогда не NULL, даже если цикл в принципе выполнился ноль раз (а после вызова функции, в которую компилятор не может заглянуть, он вынужден заново проверять). вполне возможно, что поэтому и беда. ибо новые компиляторы всё больше оптимизаций делают основываясь на идиотской идее про UB.
флаг я бы убирать не стал, потому что неизвестно, где ещё компилятор может проявить подобную гениальность.
>[оверквотинг удален]
> p.p.s.: я сильно подозреваю, что это очередной случай, когда компилятор тупо считает:
> «программ с UB нет и быть не может». там выше цикл,
> который снимает у attr атрибут внутренней очистки, и в принципе, он
> без охраны. поэтому компилятор вправе считать, что после цикла data.attr никогда
> не NULL, даже если цикл в принципе выполнился ноль раз (а
> после вызова функции, в которую компилятор не может заглянуть, он вынужден
> заново проверять). вполне возможно, что поэтому и беда. ибо новые компиляторы
> всё больше оптимизаций делают основываясь на идиотской идее про UB.
> флаг я бы убирать не стал, потому что неизвестно, где ещё компилятор
> может проявить подобную гениальность.Хм, а 4-й gcc такой фигни не творит? А то у меня пока нет возможности проверить...
> Хм, а 4-й gcc такой фигни не творит? А то у меня
> пока нет возможности проверить...я тоже не знаю, увы: собирать четвёртый gcc мне, откровенно говоря, лениво. но поскольку опера собиралась именно четвёртым (насколько я помню), в цветочке флага нет, а она не падала — скорее всего, не творил.
>>> ещё у него есть проблемы со встроенным аллокатором, которые могут проявиться при
>>> сборке без дебага.
>> это баг gcc5+, который косячит, выкидывая нужное. решается стратегическим `
>> if (data.attrs) printf(" \x08"); else printf(" \x08");`, например.
>> а код для арм там кривой. ну и фиг с ним.
> Что-то я туплю, но где именно оно там падает? Вруг можно без
> хака с флагом пофиксить?Падает по довольно простой причине: он убирает проверку на 0 перед delete. Оптимизация такая. А оперовая реализация delete не позволяет 0.
А в jit падает внутри jit блока. причём не в самом начале. Похоже на кривой трамплин где-то.
При этом на лоре есть информация что arm сбоока работает нормально.
> Падает по довольно простой причине: он убирает проверку на 0 перед delete.
> Оптимизация такая. А оперовая реализация delete не позволяет 0.позволяет, конечно же. убирается *сгенерированая* проверка в заинлайненом коде. по причине того, что авторы стандартов — безмозглые кучи соломы.
>[оверквотинг удален]
>>> это баг gcc5+, который косячит, выкидывая нужное. решается стратегическим `
>>> if (data.attrs) printf(" \x08"); else printf(" \x08");`, например.
>>> а код для арм там кривой. ну и фиг с ним.
>> Что-то я туплю, но где именно оно там падает? Вруг можно без
>> хака с флагом пофиксить?
> Падает по довольно простой причине: он убирает проверку на 0 перед delete.
> Оптимизация такая. А оперовая реализация delete не позволяет 0.
> А в jit падает внутри jit блока. причём не в самом начале.
> Похоже на кривой трамплин где-то.
> При этом на лоре есть информация что arm сбоока работает нормально.На лоре и хабре есть патчи на сборку армы, там тупо выкидывается код проверки возможностей проца.
> На лоре и хабре есть патчи на сборку армы, там тупо выкидывается
> код проверки возможностей проца.это, конечно, гениальное решение. iSage его привинтил чтобы хоть как‐то собрать, а хипстота решила, что Это Оно — и растащила по патчам. именно поэтому хипстоту надо изолировать от разработки, и поэтому же я не выкладываю промежуточных рабочих патчей.
я к тому, что проверка фич X86 на арме, конечно, не нужна. а вот немного других проверок не помешали бы.
> На лоре и хабре есть патчи на сборку армы, там тупо выкидывается
> код проверки возможностей проца.оно не работает. То есть я сам эту проверку и вручную вырезал и этим патчем, всё равно получаю краш. Не знаю, как оно работает у iSage, может он js отрубил?
Кстати, собранный отдельно jsshell не крашится.
Ещё что касается крашей: иногда js блоки проходят успешно, но после возвращения занулена часть регистров и крашится из-за нулевого указателя где-нибудь
> Кстати, собранный отдельно jsshell не крашится.потому что без аргумента -np он jit не использует.
>> Кстати, собранный отдельно jsshell не крашится.
> потому что без аргумента -np он jit не использует.Я с -np проверял, тоже работает
^_^ - Pi - http://is2.4chan.org/g/1484503794169.png1) http://web.archive.org/web/20170115184028/http://www.linux.o...
2) http://web.archive.org/web/20170115184352/https://paste.fedo.../
3) http://web.archive.org/web/20170115184518/https://paste.fedo.../
это всё было бы хорошо, но арможит сломан.
Ух, какой красивый и понятный код-то, а! Намного качественнее хромиума и тем более мозиллы.Зря не опенсорснули, когда это еще кому-то было нужно. Хотя лучше поздно, чем никогда, может, эта утечка и сподвигнет.
Ребята из Оперы решили, что поддерживать новый движок слишком гемморно и бесплатно, по этому слили старый, чтобы фанаты сами его пилили.
Может кто-то пожалуйста, порт его ангстрем Linux?
У кого-нибудь под FreeBSD собралось?
https://gist.github.com/kandeshvari/6e69327fb017ea95bced85c6...
Нарисовал пару картинок для новообретенной оперы.
Выглядеть это может, например, так: http://i.imgur.com/nM6oRQB.pngСсылка: http://puu.sh/tr9Yo/7e90ccdf0e.zip
В архиве два варианта логотипа, большие png и svg.
Зачем вообще эти картинки? Зачем менять?
Тем более эти, массонские...
Я против. Меняйте себе сами, какие хотите.
New Thread on 4chan: http://boards.4chan.org/g/thread/58567400Btw, I still would like to have it ported to Angstrom Linux so I can run it on my Pandora.
> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400btw, issue #14 can be fixed with TWEAK_LOGDOC_LOAD_IMAGES_FROM_PARSER NO
«click to activate» has tweak too.
features and tweaks are (deliberately) machine-readable, so it is not that hard to write a GUI for feature selector and tweaker. but don't lay too much hopes on that: desktop opera rarely checks for feature/tweak availability, and may not work right (for example, turning off browser.js support leads to crashes when there are any extensions) or not compile at all.
How do I implement the change that is mentioned to fix that issue?
> How do I implement the change that is mentioned to fix that
> issue?'cmon, you (as a group) HAVE to be familiar with features/tweaks system already! at least you should be able to tweak your builds. either that, or i won't give a dime for your «project» (and, of course, i will not waste my time trying to improve something that is nothing more than random collection of random patches, without any understanding of underlying project).
I'm not a developer. I was asking so I can pass the information over to one who is.
> I'm not a developer. I was asking so I can pass the
> information over to one who is.just pass the tweak name i provided. that should be enough for developers. i wonder why nobody bothered to study available tweaks, but ok, there are more than 1800 of them, i wasted several days reading and trying.
>> I'm not a developer. I was asking so I can pass the
>> information over to one who is.
> just pass the tweak name i provided. that should be enough for
> developers. i wonder why nobody bothered to study available tweaks, but
> ok, there are more than 1800 of them, i wasted several
> days reading and trying.Ok. I have done that earlier on. Now to wait for a patch to be made.
> Ok. I have done that earlier on. Now to wait for a
> patch to be made.i don't think that it worth a hardcoded patch. this is something user have to decide for himself, i believe, so that tweak goes to «local-tweaks.h», which is not in repo for obvious reasons. loading images from parser leads to faster page loading times, so some users may want to leave it as is.
sadly, there is currently no way to configure this in runtime. adding such preference may be a good task for someone interested: it doesn't require alot of arcane knowledge about the engine, just some copypasta work, some conditions, and some more code in prefs system.
also note that turning on canvas support will force loading images from parser, so this will need either patching, or adding another pref.
> Ok. I have done that earlier on. Now to wait for a
> patch to be made.enjoy, and happy hacking!
btw, crash logger is there too. i didn't looked at it, tho: it is annoying and useless. we have no site to redirect it to, and without officiall FOSS release it would be hard to process the reports anyway. so it is better to keep it disabled for now.
by the way, there is one interesting tweak in opera core:
TWEAK_DOCHAND_DONT_UPDATE_VISITED_LINKS YESas you may guess, it disables marking links as «visited», thus preventing «visited links tracking» exploit. this can be turned into runtime preference too.
What about a way to disable the blue coloring of the title in a tab that shows when the page has fully loaded?
> What about a way to disable the blue coloring of the title
> in a tab that shows when the page has fully loaded?afair, this is easily fixed with skins. at least my non-default skin has a different color for that. except for some corner cases, almost everything in quick (opera UI toolkit) can be changed with skin setting.
>> What about a way to disable the blue coloring of the title
>> in a tab that shows when the page has fully loaded?
> afair, this is easily fixed with skins. at least my non-default skin
> has a different color for that. except for some corner cases,
> almost everything in quick (opera UI toolkit) can be changed with
> skin setting.Do you know what setting I should change in the skin.ini in order to remove it?
> Do you know what setting I should change in the skin.ini in
> order to remove it?nope, sorry. but you can turn on opera:config#UserPrefs|DebugSkin and then holding ctrl and hovering mouse cursor over any UI item will show a tooltip with skin info for that item. you may try parent item if shown one doesn't work. use «Text Color = #rrggbb» in skin.ini to change it.
>>> What about a way to disable the blue coloring of the title
>>> in a tab that shows when the page has fully loaded?
>> afair, this is easily fixed with skins. at least my non-default skin
>> has a different color for that. except for some corner cases,
>> almost everything in quick (opera UI toolkit) can be changed with
>> skin setting.
> Do you know what setting I should change in the skin.ini in
> order to remove it?I learned of the settings to change thanks to http://www.textndata.com/forums/color-loaded-tabs-214365.html.
> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400another minipatch, for content blocker UI: don't add «http://» for patterns like «||example.com/*», and replace simple «example.com» to «||example.com/*».
>> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400
> another minipatch, for content blocker UI: don't add «http://» for patterns like
> «||example.com/*», and replace simple «example.com»
> to «||example.com/*».
> http://dpaste.com/21AF0F9How hard would it be to add Auto Complete to it?
>>> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400
>> another minipatch, for content blocker UI: don't add «http://» for patterns like
>> «||example.com/*», and replace simple «example.com»
>> to «||example.com/*».
>> http://dpaste.com/21AF0F9
> How hard would it be to add Auto Complete to it?It would be nice if someone made a patch to make the "Open tabs inside current window" checkbox of the Manage Sessions dialog box stay checked.
> It would be nice if someone made a patch to make the
> "Open tabs inside current window" checkbox of the Manage Sessions dialog
> box stay checked.what do you mean?
I want the checkbox in the following picture to stay checked when clicked on (basically, make it a permanent option):
> I want the checkbox in the following picture to stay checked when
> clicked on (basically, make it a permanent option):
> https://snag.gy/KAr0HO.jpgah, i see. this will basically need a new preference (easy), and then we'll have to bind that checkbox to our new pref (easy). i'll try to look at it. but don't hold your breath, my memory is bad and my attention span is short.
also, this may be a good task for someone trying to «dive into opera». just look at my picture loading patch to find out how to work with prefs, and then look at quick's preferences dialog to find out how to make bindings to prefs. you may ping other presto developing communities out there.
>[оверквотинг удален]
>> https://snag.gy/KAr0HO.jpg
> ah, i see. this will basically need a new preference (easy), and
> then we'll have to bind that checkbox to our new pref
> (easy). i'll try to look at it. but don't hold your
> breath, my memory is bad and my attention span is short.
> also, this may be a good task for someone trying to «dive
> into opera». just look at my picture loading patch to find
> out how to work with prefs, and then look at quick's
> preferences dialog to find out how to make bindings to prefs.
> you may ping other presto developing communities out there.And one more thing to make a mention of. It would be nice if it used the first tab shown when it has just been opened when opening a session instead of opening first tab of the session as a new tab.
>>> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400
> How hard would it be to add Auto Complete to it?sorry, i don't even know what to autocomplete there (and i hate autocompletion altogether ;-).
there is no list of «accessed urls» for loaded page (that list can be created only by external debugger for now), so we can't autocomplete even site names.
>>>> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400
>> How hard would it be to add Auto Complete to it?lol, quotes…
>>>> New Thread on 4chan: http://boards.4chan.org/g/thread/58567400
>> How hard would it be to add Auto Complete to it?
> sorry, i don't even know what to autocomplete there (and i hate
> autocompletion altogether ;-).
> there is no list of «accessed urls» for loaded page (that list
> can be created only by external debugger for now), so we
> can't autocomplete even site names.I mean, autocomplete for text boxes
> I mean, autocomplete for text boxesthere should be something to show in autocomplete selection. ;-) basically, each UI edit box will need an unique id then to store it's input history. and i see no personal value in this feature, so i definitely won't do it.
p.s.: otherwise, it's not hard. a matter of creating new quick widget «lineedit with autocompletion», based on existing lineedit widget and autocompletion part from urlbar. mostly «copy-paste-fix-obvious-crap» work.
> «copy-paste-fix-obvious-crap» workно от того не менее нужная :-) Желающих использовать пофиксеную версию валом, а людей со знаниями чтобы это сделать нуту :(
>> «copy-paste-fix-obvious-crap» work
> но от того не менее нужная :-) Желающих использовать пофиксеную версию валом,
> а людей со знаниями чтобы это сделать нуту :(плохо. потому что мои интересы специфичны, и я делаю только то, что надо лично мне. как только меня будет всё устраивать (очень скоро) — патчфест закончится.
> но от того не менее нужная :-) Желающих использовать пофиксеную версию валом,
> а людей со знаниями чтобы это сделать нуту :(зато есть целеполагатели. опять, видите ли, «не с того начали». передайте кто‐нибудь этому дауну, что его «12.18» — это та самая 12.15, с патчем на ECC. и что версии меряют по версии opera core.
хотя нет, не передавайте, у него винда пустого черепа.
> another minipatch, for content blocker UI: don't add «http://» for patterns like
> «||example.com/*», and replace simple «example.com»
> to «||example.com/*».Люди на ру-боарде интересуются:
1. Чем отличается данный патч от записи «*example.com/*», которая у народа используется в urlfilter повсеместно?
2. Как использовать этот вышеуказанный код?
>> another minipatch, for content blocker UI: don't add «http://» for patterns like
>> «||example.com/*», and replace simple «example.com»
>> to «||example.com/*».
> Люди на ру-боарде интересуются:
> 1. Чем отличается данный патч от записи «*example.com/*», которая у народа используется
> в urlfilter повсеместно?
> 2. Как использовать этот вышеуказанный код?Наверное тем, что под шаблон *example.com/* попадает и trueexample.com и gaykeksexample.com, а || подменяет точно протокол.
Даже *//example.com/* не гарантирует
> Наверное тем, что под шаблон *example.com/* попадает и trueexample.com и gaykeksexample.com,
> а || подменяет точно протокол.
> Даже *//example.com/* не гарантируетверно. «*example.com/*» — это один долбоклюй придумал, а другие используют. под это попадёт даже: «https://localhost/dumb.php?example.com/a»
«||» обозначает: «протокол *и* любые поддомены, включая пустой». потому «example.com», «abc.example.com» — но не «sexample.com».
более‐менее рабочая замена «||example.com/*» возможна только двумя выражениями:
^*://example.com/*
^*://*.example.com/*
и то это некорректно, потому что во втором вторая звезда может отматчить что угодно.а что с кодом делать… иметь его. если кому‐то не ясно, что делать с патчем — то это надо с начала времён пояснять. а кому ясно — тому не надо.
p.s.: «||xxx» вдобавок ещё и быстрее. совсем немного, но быстрее.
> another minipatch, for content blocker UI...
> http://dpaste.com/21AF0F9Его бы тоже на timsky перенести с описанием и примерами (очень хорошее оно здесь).
И всю историю по каракану; это же интересно! :)
> Его бы тоже на timsky перенести с описанием и примерами (очень хорошее
> оно здесь).
> И всю историю по каракану; это же интересно! :)ну так пусть перенесёт кто‐нибудь: я что, швец‐жнец‐на‐дуде‐капец? мне на своё авторство наплевать, если что.
Не вопрос, перенесу)
По urlfilter перенёс. По каракану чуть позже, на это надо гораздо больше времени.
> another minipatch, for content blocker UI: don't add «http://» for patterns like
> «||example.com/*», and replace simple «example.com»
> to «||example.com/*».
> http://dpaste.com/21AF0F9Better to make it "||example.com^*" to match "example.com:80" too.
Please note, that it will match "http://foo.com/example.com/" even though it is not supposed to.
> Please note, that it will match "http://foo.com/example.com/" even though it is not
> supposed to.yeah, you are right. tnx, this is something i will fix eventually. i didn't read the code deep enough. my bad.
"*^" is bugged too. "*/foo" and "http://example.com^foo" match "http://example.com/foo", but "*^foo" does not.
> "*^" is bugged too. "*/foo" and "http://example.com^foo" match "http://example.com/foo",
> but "*^foo" does not.yeah. they did matching optimization by searching for the first character from the pattern (after the «*»), and failed to consider that «^» has a special meaning there.
actually, the whole wildcard matching code is crappy (althru not a cosmic horror ;-), and should be rewritten.
|| and ^ were added late, so they might cause bugs anywhere.I've checked the code, and it looks like the pipe can break the hashing code, because it's not in the IsCharacterWildCard(). For example, "||com/" does not match "http://example.com/".
The content_filter could be improved a lot in many interesting ways.
All the extensions with ad-block subscriptions take a very long time to load and update filters. I haven't tried to debug them, but I suspect that it is the API being very slow to load filters one-by-one and not the extensions themselves.
I also suspect that the matching algorithm can be improved, especially for the huge lists. /content_filter/tests/data/hugelist.ini has 4k lines... fanboy-ultimate.txt is over 90k (~50k without CSS rules). Currently they seem to check every filter's hash for the given URL in the FilterURLList::Find(). One beautiful optimization would be to store most rules starting with || in a hash table with the domain as a key (with 2-level domain minimum and, say, 4-level maximum). That should make matching over that set faster, especially since you often have to check multiple URLs with the same domain. More general rules could also use something of [ url_length * log(filter_list_length) ] complexity, although I'm not sure what's possible there and how would it compare to the current approach.
The API and format could be improved too. Caching hashes between browser restarts and differential list updates come to mind.
yeah, you are absolutely right. the extension API for content blocker is freakin' slow, and the matching itself can be improved alot. it is also possible to build some «preselect» tables to quickly reject most filters, and painlessly process megabytes of data from urlfilter.ini. ;-) something like boyer-moore, but for filters. i believe that adblock+ and uBo both are doing something like that; and we have somewhat easier task at hand, 'cause we don't need to analyze full regexps.
> something like boyer-moore, but for filters.Well, before implementing custom substring search algorithm for URLFilter::MatchUrlPattern(), I would try to convert the pattern to a RegExp. It should be faster than current naive checker and as fast as any other custom algorithm. RegExps could be compiled on demand and cached.
For the preselection something that utilizes common filtering patterns could be used. The "domain as a dictionary lookup key" should take care of about 3/4 rules.
Additionally, some lookup by path parts as keys could be devised. Google does something similar: https://developers.google.com/safe-browsing/v4/urls-hashing#... .
Both of these lookups could be enabled based on the number of qualifying patterns.
For the rest, the current FilterURLList::Find() can be used. I don't think it differs significantly from the "shortcuts comparison" described here: https://adblockplus.org/en/faq_internal#filters . But either algorithm could be further improved, for example, by sorting those hashes/shortcuts.
i'd better avoid using regexps in content blocker: they aren't *that* good in early rejecting, but slower and more memory-demanding. i think it is better to calculate b-m-like «substring presence» tables for patterns, and b-m table for url before checking. b-m table for urls can be cached in the content blocking module, btw, but i don't think that it is really worth the efforts: «domain as key» will take care of most rejects, i believe.
It's worth a shot. To be clear, I mean that the pattern should be converted into regexp inside the URLFilter::MatchUrlPattern(), after all the preselection steps. I have no idea how much overhead would regexp creation introduce. And its speed would depend hugely on the regexp engine. But don't forget that Boyer-Moore doesn't come for free either.
> It's worth a shot.yeah. it is never too late to revert all the changes anyway. ;-) i'm not trying to stop you from implementing that, just thinking out loudly.
> To be clear, I mean that the pattern
> should be converted into regexp inside the URLFilter::MatchUrlPattern(), after all the
> preselection steps. I have no idea how much overhead would regexp
> creation introduce.quite a lot. any decent regexp engine compiles expression into internal bytecode of some kind (possibly building kickstart and quick reject tables too), so it is better to at least cache created regexps.
> And its speed would depend hugely on the regexp engine.
here i think we should use the one that is used by Opera Core itself (modules/regexp). it is even JITed, as far as i can see.
> But don't forget that Boyer-Moore doesn't come for free either.
yea, but it is fast enough for small strings. and we can switch to b-m codepath only if we have some «big enough» amount of matches to check (after all possible early rejections).
This discussion is going on there: http://forum.timsky.ru/viewtopic.php?f=7&t=35&sid=709e173737...
Can someone please make a version of http://boards.4chan.org/g/thread/58567400#p58568131 that has debug symbols included?
> Can someone please make a version of http://boards.4chan.org/g/thread/58567400#p58568131
> that has debug symbols included?sorry. i have no arm devices, and totally uninterested in arm support.
how about a patch to make it where keyboard shortcuts used on a section of a page do not trigger JavaScript commands?
it is doable with extension/userjs API (any script blocking is doable with that API, actually), so no: not in the core.
> it is doable with extension/userjs API (any script blocking is doable with
> that API, actually), so no: not in the core.I don't want to block the script. I want it to ignore it.
> I don't want to block the script. I want it to ignore
> it.what is the difference between «block, don't execute» and «ignore, don't execute»? ;-)
>> I don't want to block the script. I want it to ignore
>> it.
> what is the difference between «block, don't execute» and «ignore, don't
> execute»? ;-)Blocking gets rid of the script on the page while ignoring still allows for a mouse click to run the script.
> Blocking gets rid of the script on the page while ignoring still
> allows for a mouse click to run the script.it doesn't really differ from the API standpoint.
Can anyone please try compiling ERAM (https://github.com/Zero3K/ERAM) on Windows 10 x64 to see if it fixes the BSOD I have been getting with it (which had the error code of FAT_FILE_SYSTEM)?
do you know that «SOCKS» mode in PAC is not working? i bet you all do. well, it is fixed now! the bug is somewhat funny: core devs forgot to restore port number after resolving SOCKS server name, so it always tried port 0 — which is obviously wrong. ;-)
Напишу и я чуток про SSL.
Впилить ECC "с наскока" не получилось, т.к. Opera не использует функции OpenSSL для работы с TLS, а делает "закат солнца вручную".
В итоге пришлось разбираться, как это всё работает.Моё впечатление как неспециалиста в C/C++ - код довольно запутанный, впрочем чего и следовало ожидать. Периодически попадаются magic numbers что как-бы не сильно хорошо.
libssl отвечает за, собственно, обработку SSL - хранение ключей, handshake, ...
libopeay - это патченый OpenSSL. Тут довольно интересно. Во-первых, OpenSSL написан на C, а тут он компилируется как C++, что приводит к необходимости добавления приведения типов местами + есть ещё патчи по преобразованию глобальных переменных в функции. Ещё - часть функций/структур заiddefлены, соответственно компилируется только нужная часть библиотеки. Это и уменьшает итоговый размер, ну и уменьшает количество патчей :)
ECC, кстати, видно что начинали впиливать - т.к. часть кода уже патчена. Но - всё выключено.Чтение/запись данных организовано через модуль datastream, и работает примерно так - мы готовим структуры данных, можно вложенные. И дальше просто читаем/пишем их из/в поток. Если что-то не так - выдаем ошибку. Есть неплохое логирование в самом модуле, помогает в отладке.
Текущее состояние: ECC, ECDH, ECDSA в OpenSSL допатчены и включены в компиляцию. Дальше работаю понемногу над libssl - уже, по крайней мере, добился того что серверные параметры ECDH корректно читаются. Заодно вообще разбираюсь что такое ECDH и как оно работает :)
отличные новости! ты герой. без сарказма, натуральный герой. это самая грязная и сложная часть кодовой базы, по‐моему. главное — не сдавайся теперь! (скрещивает пальцы)
> отличные новости! ты герой. без сарказма, натуральный герой. это самая грязная и
> сложная часть кодовой базы, по‐моему. главное — не сдавайся теперь! (скрещивает
> пальцы)Ну, пока сдаваться не собираюсь. Как бы уже больше недели на это всё убил, наконец хоть прогресс есть какой-то - чего уж тут бросать :)
Жаль только времени мало могу уделять этому... спать иногда тоже надо.
зато морально с тобой почти все пользователи оперы, которых интересует утёкшее. ;-) ECC, по‐моему, самый больной запрос.не надорвись только, зомби вместо ECC — не совсем то. ;-)
> зато морально с тобой почти все пользователи оперы, которых интересует утёкшее. ;-)
> ECC, по‐моему, самый больной запрос.Ну, меня на самом деле сильно интересует оптимизация прокрутки при position:fixed... но туда я не полезу точно.
> не надорвись только, зомби вместо ECC — не совсем то. ;-)
:)
Приветствую! Радостные новости! :)Переходите на http://forum.timsky.ru/ где собираются и пишут все неравнодушные сабжу люди.
По ECC сделано 2 темы:
http://forum.timsky.ru/viewtopic.php?f=9&t=59 - чисто технические вопросы-ответы.
http://forum.timsky.ru/viewtopic.php?f=7&t=30&p=365#p365 - просто общение по теме.
> Напишу и я чуток про SSL.
> Впилить ECC "с наскока" не получилось, т.к. Opera не использует функции OpenSSL
> для работы с TLS, а делает "закат солнца вручную".Как там прогресс в написании, работает хоть что-то?
> Напишу и я чуток про SSL.Алсо, планируется ли добавление GCM в патче?
Блин, столько облазил, пока нашел место, где этот вопрос продуктивно обсуждается...arisu, iSage, mag, вам отдельная благодарность.
arisu, твои репорты вообще читаются как детектив (= а ведь как всё начиналось "где ж коды были раньше" "когда у меня был интерес"...конечно грустно, сколько не перелазил, насчитал с пяток прогеров, которые оперой занимаются. но это лучше чем ничего. на вас вся надежда. отписывайтесь, тут многие за этим следят, если на другой ресурс переходите - тоже давайте знать.
p.s.: и вопрос чисто ради интереса: кто бы и на каких условиях готов был поработать целенаправленно, плотно и продуктивно над сорцами, в команде, так сказать? конечно, разговор может и пустой, но вдруг кто из фанов знает/найдет толстосума который без задней мысли будет готов пару лямов от жопы оторвать - так будем знать куда применить.
p.p.s.: и вдогонку мысли в слух. если переписать проприетарную часть сорцов на другом языке, результат будет считаться кражей или нет?
> arisu, твои репорты вообще читаются как детектив (= а ведь как всё
> начиналось "где ж коды были раньше" "когда у меня был интерес"...проект больно уж красивый, жалко просто так бросать. и да, я ещё не стух. мне просто ужасно не нравится то, что получилось: стыдно выкидывать такой хлам. джинн думает.
> многие за этим следят, если на другой ресурс переходите - тоже
> давайте знать.тут ссылку на форум давали — там пишем, например.
> фанов знает/найдет толстосума который без задней мысли будет готов пару лямов
> от жопы оторвать - так будем знать куда применить.это нелегально и неэтично. а если проще, то никто не даст денег на то, из чего нельзя извлечь прибыль. в текущем состоянии извлечь можно только проблемы.
> p.p.s.: и вдогонку мысли в слух. если переписать проприетарную часть сорцов на
> другом языке, результат будет считаться кражей или нет?если убрать слово «кража», которое вообще неприменимо к тому, что можно скопировать без потерь, то остальное — «всё ещё да».
но спокойно делать патчи к воображаемым исходникам несуществующего продукта никто не мешает. присоединяйся, например, там есть чем заняться на разных уровнях. достаточно несложных запросов хватает, а пока их делаешь — постепенно вникаешь в то, как всё организовано.
> тут ссылку на форум давали — там пишем, например.я так понимаю, ты там как гость фигурируешь?
> это нелегально и неэтично. а если проще, то никто не даст денег
> на то, из чего нельзя извлечь прибыль. в текущем состоянии извлечь
> можно только проблемы.я про вариант, если толстосуму будет побоку, куда идут деньги, будет ли отдача, будет ли он упоминаться как спонсор и пр. да и вообще на сам вопрос хотелось бы ответа, так как ты все вокруг да около писал о том, как бы организовать взаимодействие, но я из этого ничего так и не почерпнул (и другие, думаю, тоже ничего не почерпнули).
>> тут ссылку на форум давали — там пишем, например.
> я так понимаю, ты там как гость фигурируешь?угу. но в принципе — какая разница.
> вообще на сам вопрос хотелось бы ответа, так как ты все
> вокруг да около писал о том, как бы организовать взаимодействие, но
> я из этого ничего так и не почерпнул (и другие, думаю,
> тоже ничего не почерпнули).я писал только о том, как не надо делать. ну, и немножко о том, что особо взаимодействовать некому и не с кем. вон форум есть — в принципе, достаточно пока. есть irc-канал. для начала (и надолго потом) этого хватит. есть, опять же, Tox. хипстеры о нём не знают, поэтому он хороший. ;-)
*** Оффтопик ***
> Tox. хипстеры о нём не знают, поэтому он хороший. ;-)о блин, и как я на него не натыкался, уже 2 года ищу альтернативу скайпу, и пока только на жицы натыкался. возлагал надежды на него, но пока безуспешно, что не мудрено, ведь написан на яве, надж было додуматься...
как несведующему подскажи, в чем разница меж utox и qtox? что предпочтительней? а то я не могу найти таких данных...p.s.: это https://habrahabr.ru/post/276665/ не твоя статься случаем (((=
***
> как несведующему подскажи, в чем разница меж utox и qtox? что предпочтительней?ни малейшего понятия не имею. я, как полагается велосипедисту, сделал себе своего клиента.
в целом же — разница в уях. потому что все клиенты всё равно используют одну и ту же библиотеку toxcore, которая сделана так, что накосячить там можно, конечно, но надо стараться. насколько помню, «ю» использует свой тулкит, а «q» — соответственно, qt. это примерно всё, что я о них знаю.
> а то я не могу найти таких данных...
ну дык собери обоих да посмотри. ;-)
> p.s.: это https://habrahabr.ru/post/276665/ не твоя статься случаем (((=
фи. я в такие помойки хожу только если мне ссылку дадут, и то в противогазе.
статья, естественно, фигня, как и дохлый недофорк. собственно, сначала: «…я, человек, несведущий в криптографии…», а потом «Можете присоединиться к нашему проекту … на замену toxcore». это всё, что имеет смысл помнить из статьи. очередной альтернативно гениальный хипстер, который нашёл несколько мелочей, попытался на этом раскрутиться (попутно — как полагается у хипстеров — обгадив оригинальный проект), а потом бесславно врезал дуба.
> ну дык собери обоих да посмотри. ;-)уже посмотрел, понял в чем разница.
в целом прога лучше жиц на первый взгляд, хотя надо ещё видеосвязь проверить. связывался сам с собой, так картинка сыпится, причем чем меньше разрешение, тем больше сыпится. вижу что походу нет понятия адаптирования качества под скорость интернета, это грустно. раз есть выбор разрешения, то думаю эту опцию нужно дополнительно вынести на панель с чатом во время звонка. в остальном:
- оперативы жрет как скайп
- интерфейс кривоват, хотя может это только на винде. да и вообще интерфейс не очень продуман, по крайней мере что касается звонков - неудобно.
ладно, хватит про неоперу.про оперу. меня уже сильно начинает бесить всё, что связано с юзер агентом и тому подобным, то есть с идентификацие опреы. некоторые сайты просто борзеют по этому поводу. более того, такое ощущение, что фрэймворки и/или шаблонизаторы заведомо встраивают в свой код фичи против престо, суть которых - создать пустые блоки поверх всего сайта, дабы содержимое было видно, но взаимодействовать с ним было невозможно (если в инспекторе не потереть эти блоки). думаю патч для настроек представления/маскировки нужен уже не в последнюю очередь. это так, мысли в слух. я то сам врядли до этого дойду.
> в целом прога лучше жиц на первый взгляд, хотя надо ещё видеосвязь
> проверить. связывался сам с собой, так картинка сыпится, причем чем меньше
> разрешение, тем больше сыпится. вижу что походу нет понятия адаптирования качества
> под скорость интернета, это грустно.честно говоря, видео и аудио меня в токсе не интересует совершенно, так что я даже не пытался смотреть, как оно там работает, и работает ли вообще.
> думаю патч для настроек представления/маскировки нужен уже не
> в последнюю очередь.оно там есть, но отключено. мне, в общем, опять без разницы, потому что если сайт писан криворукими идиотами, то я просто добавляю его в urlfilter — и на этом мы с ним полюбовно расстаёмся навсегда.
так вот. возможность смены юзерагента на любого своего (но глобально, а не per-site) в исходниках есть. это можно включить твиком. возможно, понадобится где-то починить ifdef. маски забиваются в коде жёстко, меняются только при сборке. по-моему, опции для них лишние: кому надо — тот поменяет и соберёт.
> честно говоря, видео и аудио меня в токсе не интересует совершенно, так
> что я даже не пытался смотреть, как оно там работает, и
> работает ли вообще.ради одной переписки есть яся, хоте тяже не идеал с определенного времени
> так вот. возможность смены юзерагента на любого своего (но глобально, а не
> per-site) в исходниках есть. это можно включить твиком. возможно, понадобится где-то
> починить ifdef. маски забиваются в коде жёстко, меняются только при сборке.
> по-моему, опции для них лишние: кому надо — тот поменяет и
> соберёт.я то за восстановление оперы целиком, то есть за развитие его полностью, потому и упоминаю про опции. а то режимы маскировки в опере безбожно устарели, их стоит обновить/дополнить. а так - я пока просто сотрясаю воздух, вдруг кто-что. вон на рубоарде бинарник ради это умудрились попилить, вдруг смекнут в исходники ради того же сунуться, ведь после сборки всей оперы от нее то и нужен будет лишь 1 файл (насколько я понимаю), который можно успешно юзать в официальных билдах 12,14-12,18.
а что там «как», делов-то:#undef TWEAK_URL_UA_MOZILLA_FIREFOX
#define TWEAK_URL_UA_MOZILLA_FIREFOX YES
#define SOFTCORE_UA_FIREFOX_VERSION "39"#undef TWEAK_URL_UA_MOZILLA_GECKO
#define TWEAK_URL_UA_MOZILLA_GECKO YES
#define SOFTCORE_UA_MOZILLA_GECKO_DATE "20170101"и вот у нас уже совсем 39-й фаерлис, например. и дальше по тексту.
Сообщения перенесены; продолжаем здесь: http://forum.timsky.ru/viewtopic.php?f=7&t=97
p.s.: кстати, этот портал капчу в старой опере просит не всегда, а в других браузерах - запостой (=
Кстати ради интереса прошерстил ворстат, вот что вышло.
http://s008.radikal.ru/i306/1702/ff/e7fc44ff534e.png
Не знаю, оптимистично это или нет, но радует что непосредственно сорцами интересуется около 20%. К слову для сравнения: вивальди интересует не большее число людей, может и меньшее. если кто считает, что я учел не все запросы - учел, просто там по нулям. разве что не все англоязычные запросы были проверены.
Адвордс не люблю, потому там ничего не проверял.
p.s.: бибикоды, если кому интересно, скинуть не могу, сайт почему то их за маты воспринимает, потому:
ссылка на превью http://s008.radikal.ru/i306/1702/ff/e7fc44ff534et.jpg
клепайте связку превью-оригинал сами, если захотите.
Кто-нибудь вкурсе, что стало с timsky? Доступ к ресурсу пропал вчера. не связано ли это со смелыми выкатываниями новых билдов оперы?
Сегодня тоже доступа нет.
> Сегодня тоже доступа нет.Чел забил. Увы.