Разработчики Mozilla приступили к воплощению на практике озвученного (https://www.opennet.ru/opennews/art.shtml?num=43486) в прошлом году плана по задействованию в Firefox кода на языке Rust. В ближайшем выпуске Firefox 48, который ожидается 2 августа, кроме включения (https://www.opennet.ru/opennews/art.shtml?num=44564) многопроцессного режима для ограниченного круга пользователей, в состав настольной редакции браузера впервые будет (https://hacks.mozilla.org/2016/07/shipping-rust-in-firefox/) добавлен компонент на языке Rust. В версии для Android включение компонентов на языке Rust ожидается позднее.
Первый код на Rust задействован в подсистемах, связанных с обработкой мультимедийной информации. В частности, в состав включен написанный на языке Rust парсер для распаковки (https://github.com/mozilla/mp4parse-rust) медиаконтейнеров в формате mp4. Поддержка компиляции компонентов на языке Rust встроена в систему сборки и сборочный инструментарий Firefox, и доступна для всех поддерживаемых платформ.Язык Rust был основан в 2006 году Грейдоном Хоаре (Graydon Hoare (https://github.com/graydon)) как альтернатива языку C++, предоставляющая средства для безопасной работы с памятью, избавляющие разработчика от необходимости манипулирования указателями и защищающие от таких уязвимостей, как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. При этом, несмотря на автоматическое управление памятью, в Rust не применяется сборщик мусора и runtime, что позволяет использовать язык для системного программирования. Другим важным достоинством Rust является изначальная ориентация на организацию высокого параллелизма выполнения заданий.
В 2009 году к разработке Rust подключилась компания Mozilla, благодаря ресурсам которой язык доведён до состояния пригодного для применения в реальных проектах. Интерес Mozilla к Rust вызван в первую очередь желанием повысить безопасность Firefox и уйти об бесконечной череды исправления всё новых и новых уязвимостей (https://www.mozilla.org/en-US/security/known-vulnerabilities.../). Кроме того, при помощи Rust можно решить задачу распараллеливания операций с DOM (Document Object Model) и JavaScript - если для ускорения одновременной обработки разных страниц на многоядерных системах можно использовать многопроцессную модель, то обработка одной страницы остаётся однопоточной. Rust позволяет разбить код DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU.URL: https://hacks.mozilla.org/2016/07/shipping-rust-in-firefox/
Новость: https://www.opennet.ru/opennews/art.shtml?num=44776
Chrome R.I.P.
Проблему с многоядерностью Rust решает на раз.
Если ваша проблема в том, что браузер полностью сжирает только одно ядро - многоядерность, конечно, ее решает...
"Броузер сжирает ядро" - это будни линукс-реальности что-ли? У меня сейчас три броузера запущено плюс мюТоррент жрёт сеть на 100% - 3-4% цп.
И?
ФФ однотредовый, значит что он всё или почти всё в один поток делает.
Когда вкладок много начинаются тормоза.У меня rTorrent, если качать на полную - 50-60 мегаБАЙТ/сек то загрузка проца АМД 5350 где то 20%, при это он ещё и сохраняет на программный рейд с AES шифрованием.
И?
У меня uTorrent на Windows 10, если качать на полную через 10 гигабитный интернет то загрузка проца Intel 80286 где то 200000%, при это ещё и сохраняется на программный рейд с 256 AES шифрованием и при этом еще крутится 4K 120fps гейпорно и брутятся сервера АНБ.
OK! Салфетку? Кофе? Сигарету?
Салфетку
Однотредовый? Вы ничего не попутали?
> мюТоррент жрёт сеть на 100% - 3-4% цп.+ еще у вас майнятся бипкоины
>> мюТоррент жрёт сеть на 100% - 3-4% цп.
> + еще у вас майнятся бипкоиныНо биткоинмайнер благоразумно мониторит запуск диспетчера задач и временно отключается. А если более продвинутый, то правит SSDT и вообще становится "невидимкой".
oh shi...
Не решает ничего. Движок браузера изначально не запилен под многопоток. Вот Servo от той же мозиллы сделан с учетом этого, но его только-только релизнули 1 июля. Нет пока что идеального браузера, но servo может поменять ситуацию.
Однозначно приятная новость. Ждём servo by-default.
И без XUL. Результат немного предсказуем.
В XUL вся фишка лисы. Без него это будет клон хрома на другом движке. И только.
Сама задумка, когда сам браузер это просто расширение, с возможностью кастомизировать его другим расширением, весьма хороша. Сам XUL сменить можно. Но идеологию нужно оставить.
XUL - это не только кастомизация, это целая подсистема кроссплатформенного UI. Для своего времени - довольно прорывная штука, но с нынешним развитием веб-технологий ее вполне можно заменить на web components, никак не затронув саму идею расширений. Вон в том же Vivaldi примерно это и делают.При такой миграции всегда получается, что сначала фичи пропадают, а уже потом появляются в новой реализации, так что недовольных будет масса. Но со временем все будет хорошо, я в них верю :-)
Теоретически, может быть и можно. Но ведь затронут. Пропасть фичи пропадут, а появятся только нескучные темы оформления.
То то я смотрю как в Опере все фичи появились в новой реализации что в результате большинство на др браузеры свалили.
> То то я смотрю как в Опере все фичи появились в новой реализации что в результате большинство на др браузеры свалили.Ну не ври, по доли использования браузера не видно
Вернули многое (но ещё больше выкинули безвозвратно, это правда).
Многопроцессорку в последний момент отложат как пить дать
Интересно как все же такое развитие Rust повлияет на мир C, стоит ли уже готовиться к тому, что через лет 5 рынок для системного программирования будет активно использовать ржавчину?
Если уж Go не взлетел пока толком (а он куда менее экзотичен, чем Rust) - то очень вряд ли.
Go только для узких админских задач. Поэтому он и не взлетел. А у админов и Python есть, bash и т.д. Google же говорили, им нужен был инструмент для джуниоров, которые даже Python освоить не смогли. И выкатили Go.
Взять LuaJIT при этом было недостаточно по-хипстерски.
Зато сравнивать встраиваемый скриптовый язык с системным строго типизированным - это достаточно по-хипстерски. Вы зачем светлое имя порочите? Возьмите себе другой псевдним.
Легкость встраиваемости в данном случае к сравнению с Go если и относится, то лишь как дополнительное преимущество Lua.
По поводу имен, насчет Go - это больше к Тейлору, к тому самому который UUCP.
>Легкость встраиваемости в данном случае к сравнению с Go если и относится,
>то лишь как дополнительное преимущество LuaПреимущество, плавно перетекающее в недостаток. Встраиваемость влияет на количество возможностей и на предназначение. Динамическая типизация и структурные типы, полностью построенные на таблицах, которые суть ассоциативные массивы - это огого какой недостаток для крупных систем. Одно дело - надёжные системы с длительным сроком поддержки, другое дело - всего лишь продвинутые файлы конфигурации да скрипты, настраивающие поведение системы.
Для чего го - это рыночек порешает. Джава тоже не для серверсайда была.
Для языка - 7 лет не срок. Пошел в первый класс можно сказать. Хотя опять все изобретают С#.
>Go ... куда менее экзотичен, чем RustЭто смотря с какой стороны. Go - вообще странный язык. Ступенькой безопаснее Си, более лаконичен и позволяет проще писать параллельный код, но в остальном решения дизайна непонятны. "Системный", но с GC. Безопасность на параллельный код не распространяется: хочешь состояние гонки - на здоровье. Аскетичен до абсурда.
>"Системный"даже в кавычках, системный и GC несовместимы.
>>"Системный"
> даже в кавычках, системный и GC несовместимы.Иногда системный язык означает язык для построения систем. В случае Go - именно так.
Каких систем? Ядра - нет. Системные библиотеки - нет. Какие-нибудь демоны - да, говорят там более-менее справляется.
Непосредственно Go создавался в первую очередь для серверных систем. Да, это тоже системы.Тем не менее, даже для создания ядра ОС язык со сборщиком мусора можно использовать. Это было убедительно доказано в 1988(!) году при создании Oberon OS. Производные этой системы XOberon и XO/2 вообще являются системыми настоящего времени.
Где используются в настоящее время Oberon-производные ОС? В Top-500 их нет, на десктопе нет, у хостингпровайдеров их тоже нет.
> Где используются в настоящее время Oberon-производные ОС? В Top-500 их нет, на
> десктопе нет, у хостингпровайдеров их тоже нет.Речь же идёт не о популярности операционной системы, а о совместимости языка со сборщиком мусора с системными задачами. Как показывает опыт - совместима на самом жёстком уровне, вплоть до жёсткого реального времени.
Касательно же популярности, Oberon проникает в промышленность в первую очередь в виде идей. Go и Rust(в значительно меньшей степени) подтверждают это.
> Иногда системный язык означает язык для построения систем.Тогда и JavaScript системный язык.
go - это такой узкоспециальный язык для написания IO-bound демонов. Писать на нем что-то другое так же неразумно, как писать тех же демонов на, скажем, PHP.
Go весьма экзотичен, нет Exception, нет толкового ООП.Для меня это экзотика.
Exception в нём есть, но из-за того, что люди, зачастую, судят поверхностно, не могут этого понять, не найдя знакомого слова в описании.
Это panic? "Замечательная" альтернатива, как и всё в этом языке.
> Это panic? "Замечательная" альтернатива, как и всё в этом языке.Есть или нет - это один вопрос, нравится или нет - это другой.
Как ни странно, но отлов исключений в Go поддерживается даже лучше, чем в "традиционном" С++. В Go можно восстановить нормальное поведения даже при делении на 0 и разыменовании нулевого указателя, а в стандартном С++ - нет. Впрочем, не исключаю, что я не знаю всех возможностей С++, но в
try {
a = b / 0;// условно
} catch (...) {
}catch не отрабатывает, и приложение всегда завершается аварийно
Си он точно никак не повредит, потому что сложность несопоставима.
Замах был в сторону С++, но тот практически сразу после этого начал бурно развиваться. А для того чтобы значительная часть С++ разработчиков перешла на Rust, быть немного лучше недостаточно, нужно быть на порядок лучше. За С++ огромное количество кода, огромная экосистема, качественные компиляторы и тулзы.
>нужно быть на порядок лучшеОн на порядок лучше и есть: алгебраические типы, паттерн матчинг, макросы и самое главное -- нормальный механизм владения, нормальная модель памяти, а не тот тихий ужас, что есть в крестах.
Откровенно говоря, мне, как новичку, больше понравилась документация всего и вся. Можно просто выделить тип из стандартной библиотеки, нажать в Eclipse F3, и читать комментарии. Все сразу становится понятно. А есть еще целый сайт с поиском по библиотеке. Который к тому же идет вместе с компилятором для оффлайн-прочтения (тоже с поиском).
Эта поддержка пользователей что-то на уровне QT.
Вот это, пожалуй, самый глубокий и ёмкий комментарий про C++ и Rust. Да и вообще информация из первых рук, так сказать.Начинающий программист, у которого нет кучи кода, готовых наработок и привычек, он еще не успел стать субъективным и, по-сути, почти всё равно, какой язык использовать для решения задач. Если у человека есть под рукой документация, IDE, и всякие помогающие плюшки ему и язык понравится, хотя никакого отношения к конкретно языковым плюсам и минусам это не имеет. А если где-то в каких-то репозиториях валяется код или либы с уже решенными типовыми задачами, которые можно утянуть себе... ммм...
>С++ разработчиков перешла на Rust, быть немного лучше недостаточно, нужно быть на порядок лучше.Memory safety, race freedom, нормальные generics, нормальные макросы, - действительно, "немного" лучше.
И что это там на C++ за "качественные тулзы"? Что там "бурно развивается"? Вы вообще видели, что появится в C++17? Появилось в последнее время несколько штучек на основе clang, да Guidelines Support Library что-то там копошится. В остальном - тоска и уныние. Модули, концепты, сопрограммы? Не, давайте как-нибудь потом. Соответственно и инструменты толковые не создать - ни системы сборки, ни управления зависимостями. Из перечисленных "достоинств" только огромное количество кода и можно отметить, но это больше благодаря истории, нежели качеству языка.
> Memory safety, race freedom, нормальные generics, нормальные макросы, - действительно, "немного" лучше.Это всё, для типового жуниора с лихвой перекрывается 2 моментами: упoрoтейший синтаксис руста, и отсутствие в том же отделе, или хотя бы в пределах предприятия, гуру, который покажет где кoсяк в этом куске кода.
Тут поможет ещё одна фича RUST, сообщения об ошибках пишут что нужно сделать, и что возможно предполагалось ввиду! Иначе нескомпилируется!
В хелловорде - несомненно.
А что уже не так с си-подобным синтаксисом в контексте сравнения с крестами?
Тем что это синтаксис паскаля, а не С.
Как и ожидалось в комментах перепись мамкиных борщехакеров.
> За С++ огромное количество кода, огромная экосистема,Да. И мы в заложниках вот этого по большей части хлама.
> качественные компиляторы и тулзы.
Которые по несколько секунд компилируют пару сотен строк кода, а весь проект собирается часами!? Нет, качественных нет.
> а весь проект собирается часамиМодульность? Выделение библиотек? Не, не слышал. А любители nero и личкрафта должны гореть в аду на меедленном огне.
>> а весь проект собирается часами
> Модульность? Выделение библиотек? Не, не слышал. А любители nero и личкрафта должны
> гореть в аду на меедленном огне.модульность на основе динамич. библиотек? которые не проверялись статическими анализаторами кода? или конкат в один файл всех "модулей" как обычно? о чем речь?
> модульность на основе динамич. библиотекПредставь себе. Можно и по другому - путём построения чёткой иерархии в проекте. Только это сложно - этож думать надо!
> которые не проверялись статическими анализаторами кода
> конкат в один файл всех "модулей" как обычноСам придумал, сам обoсpал. Далеко пойдёшь.
Шаблоны в библиотеку не засунешь.А модульности в С++ из-коробки нет: приватные члены класса сидят... в публичном заголовке! Поменял - перекомпилируй пол проекта. PIMPL должен был бы быть в самом языке, иначе весь этот public/private какая-то показуха. У него есть серьёзные недостатки? Ну, тогда выходит, что язык не поддерживает модульность, о чём я и говорил.
То-то поцкалю его модули страсть как помогли. Если ты ещё не понял - идеального языка нет, не было и не будет.Но ты можешь ещё потратить десяток лет жизни, выучив три-четыре очередных "убийц с++". :-)
Наконец-то!
Отличная новость!>Грейдоном Хоаре
QuickSort тоже Тони "Хоаре" изобрёл? Откуда такие странная транслитерация?
Почему не Haskell? У него с распаралеливанием все в порядке.
Как минимум - непредсказуемость "ленивости". Ну и парадигма другая. Rust хотя и содержит элементы ФП, но в целом более императивен.
Почему не Erlang?
Он говорят не хуже
Erlang все таки крутой, вот обсуждение на форуме - https://www.reddit.com/r/rust/comments/2qzyfb/erlang_vs_rust.../
> включения многопроцессного режима для ограниченного круга пользователейшел 2016 год
> шел 2016 год... а количество ядер на средней десктопной (уж о мобильных я не говорю) системе можно сосчитать по пальцам одной, максимум двух рук.
И?
То есть тормозящий браузер, при простое "немногочисленных ядер" это номарльно? Мусье случайно не украинский зомби?
> тормозящий браузерВо-первых, он тормозит не из-за того, что занял одно ядро вместо четырёх.
> при простое "немногочисленных ядер"
Во-вторых, в статье не сказано про "простой" ядер. Я уверенно предполагаю, что в мозилле сделают как и все остальные - будут грузить все ядра НЕЗАВИСИМО от того, в простое они или нет.
> это нормально
В-третьих, да, это нормально. Я предпочту чтоб тормозил только браузер и у меня была в запасе пара ядер, чтобы натравить на него xkill, вместо того, чтоб тормозила вся система а я был вынужден ждать, пока же мне творение мозиллы отрисует очередной эффект по сдвигу на полэкрана картинки в 4K разрешении.
И вообще, стоит ли доверять загрузку ядер компании, которая просто не в состоянии написать что-то нетормозящее?
Лучше б починили наглухо разломанную поддержку GTK-шных тем.
Сломали ещё в 46, на багтрекеры болт, обещают к 49 исправить.
Приложение не работоспособно с темами кроме дефолтной, никого не скребёт. «Зато у нас будет Раст!» — кому б он сдался в браузере.
Просто вы не входите в их ЦА. Если бы было сломано что-то на винде или андроиде, починили бы быстро. А gtk... их это, в целом, не слишком интересует.
Вот-бида. А мне и на венде то ни разу не приходило в голову дефолтную тему менять. Ну а на линуксе оно ж даа. Там же что-то анимешачное по канону же должно стоять. Какие-нить сисястые покепони.
> Там же что-то анимешачное по канону же должно стоять. Какие-нить сисястые
> покепони.И много в Kaiji вот этого самого вы увидели?
> Вот-бида. А мне и на венде то ни разу не приходило в
> голову дефолтную тему менять.А что, в форточках уже сделали нормальную (т.е. не только цвет и градиенты декораций) замену темы? И даже гвоздями не прибили?
> Ну а на линуксе оно ж даа.
> Там же что-то анимешачное по канону же должно стоять. Какие-нить сисястые
> покепони.Т.е. вы не в курсе, что в теме прописаны не только цвет обрамления окон, как у вас в окошках, но и целая куча других вещей, включая цвет и размеры менюшек, табов, скролл-баров, кнопок, пиктограмм, шрифтов и т.д. А поняшки на обоине вообще ставятся отдельно от темы!
Так что завидуйте молча.
Руки прочь от темы, аниме и поней.
> Просто вы не входите в их ЦА. Если бы было сломано что-то
> на винде или андроиде, починили бы быстро. А gtk... их это,
> в целом, не слишком интересует.Судя по общему вектору развития FF, в их ЦА пользователи не входят в принципе.
Пока мозилловцев спасают два обстоятельство: слишком много было сделано раньше, так сразу всё не загубишь; у прочих дела дела пока что ещё хуже. Но это временно: мозилловцы стараются как могут, чтоб исправить ситуацию.
Это заговор M$. Они проплачивают Гуглю и Мозилле за саботаж, чтобы пересадить всех на свой Edge. Вы скажете, как это проплачивают Самому Гуглю!? Не может этого быть! Я вам по секрету скажу, что индус с индусом завсегда договорится. Вот так.
Давай ещё круче: это Гугль проплачивает MS, чтобы MS проплачивал Гуглю
> Давай ещё круче: это Гугль проплачивает MS, чтобы MS проплачивал Гуглю...ощутил себя в комнате с зеркальными стенами...
>> Давай ещё круче: это Гугль проплачивает MS, чтобы MS проплачивал Гуглю
> ...ощутил себя в комнате с зеркальными стенами...вылазь из лазера ))
> Судя по общему вектору развития FF, в их ЦА пользователи не входят в принципе.При любом развитии пользователи вываливаются из ЦА. Любое развитие -- это изменения. Пользователи принимают любые изменения в штыки, но мало того, как только начинаешь что-нибудь менять, как сразу что-нибудь ломается. И этого пользователи тоже не готовы понять.
Но ваш случай мне нравится больше, чем случай заурядного пользователя: вы пользуетесь последними версиями, вместо LTS/ESR и плачете, что что-то там у вас не работает? Вы из git не пробовали собрать? Попробуйте обязательно. Может быть там gtk-шные темы заработают? Ах да, не забудьте при этом поставить системным компилятором llvm, который тоже надо обязательно взять со всеми новейшими патчами из git. Да, а вообще, чего там мелочиться -- пересоберите всю систему, вытянув все сорцы из git или ещё каких vcs. После этого приходите сюда порыдать о том, что линуск не для пользователей сделан, а для красноглазых гиков, которые трахаются с пересборкой софта неделями, и несмотря на это у них ничего не работает.
У меня в 47 версии - всё нормально стало работать.
>У меня в 47 версии - всё нормально стало работать.Весьма информативное сообщение.
В 47 версии это пофиксили. Во всяком случае, у меня всё стало нормально. Так информативнее стало?
Информативней. Только вот на багтрекерах Мозиллы этот баг отмечен как неисправленный. И в 47 версии я его наблюдаю.
> Лучше б починили наглухо разломанную поддержку GTK-шных тем.
> Сломали ещё в 46, на багтрекеры болт, обещают к 49 исправить.
> Приложение не работоспособно с темами кроме дефолтной, никого не скребёт. «Зато у
> нас будет Раст!» — кому б он сдался в браузере.FIY, у RUST отличная поддержка GTK, биндинги пишут разработчики/мейнтейнеры GTK, некоторые пишут на форумах RUST
> биндинги пишут разработчики/мейнтейнеры GTKэто-то и пугает...
Firefox 50.0a1 (2016-07-11) раст уже там?
естественно :)
Многопоточность не так уж прямо и нужна. На моем смартфоне за 3к сайты не тормозят...
Это неправильные сайты.
> Многопоточность не так уж прямо и нужна. На моем смартфоне за 3к
> сайты не тормозят...Где-то не подключены.. То есть, у вас не тормозят, а на срасунге с тизенем будут тормозить! Да и без тизеня они там тормозят.
Неплохо. Интересно а потребление памяти уменьшится, или увеличится? Всё таки гугл подход к написанию программного обеспечения, который жрет ОЗУ тоннами, дал хрому выйти вперед, но на 2016 год это не так нужно.
И да есть варианты в пару кликов перейти на мозиллу с хрома? перенести пароли ?
Кстати, что за extensions лежит под названием
{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi ?
xpi - это zip. открой да посмотри что там внутри
> Кстати, что за extensions лежит под названием {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi?Если не ошибаюсь там лежит "The default theme"
чем далее, тем более понимаю, что не так уж и плох Chromium
Прямые руки решают все вышеперечисленные проблемы. А ЯП тут вообще не при чём!
Святой П-трек, адекват в треде, все в машину!
> При этом, несмотря на автоматическое управление памятью, в Rust не применяется сборщик
> мусора и runtimeТак это же чудо. Было бы. А так-то там подсчёт ссылок. Внезапно. В программы встраивается. Незаметно судя по всему...
Подсчёт ссылок в Swift работает, в Rust - только если явно указать. Прекратите уже газифицировать.
Интересует только одно, Firebug сможет работать на серво? Теоретически возможно ли это и ведутся ли работы над этим?
Кто в теме, расскажите пожалуйста.
Вообще, пользоваться отдельным инструментом для разработки, когда и так в браузер понапихано его ого-го, по моему попахивает позерством.Старый Firebug выкинут на помойку. Ибо сильная завязанность на XUL.
Будет новый/модный/стильный на основе встроенных средств отладки браузера. Разработчики об этом писали.
https://blog.getfirebug.com/2016/06/07/unifying-firebug-fire.../
> Вообще, пользоваться отдельным инструментом для разработки, когда и так в браузер понапихано
> его ого-го, по моему попахивает позерством.Привычка - вторая натура. Хотя, увы, файрбаг как самостоятельный инструмент - умер.
Веб разрабатывался для распостранения научных статей, они понапихали туда кучу всякой дряни и удивляются, что оно тормозит. Браузеры также, глупо разжирели. Забыт принцип KISS да UNIX-way.А Rust-то не сильно поможет, ведь сами принципы современного ПО хромают. Да и Rust не слишком хорош. Можно же было взять лисп, смоллток.. Но идеал непостижим. К чему я пишу? Я уже подготовил свое мыло, ведь информатика такая нерациональная, математику я не понял, а квантовая физика привела меня в психушку