HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Мировые новости. Обсуждения.
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 18.06.2020, 20:16
Suicide
Познавший АНТИЧАТ
Регистрация: 24.04.2009
Сообщений: 1,730
Провел на форуме:
30140275

Репутация: 3256


По умолчанию

Применяемый в Firefox JavaScript-движок SpiderMonkey переведён на использование обновлённой реализации регулярных выражений, основанной на актуальном коде Irregexp из JavaScript-движка V8, применяемого в браузерах на основе проекта Сhromium. Новая реализация RegExp будет предложена в выпуске Firefox 78, намеченном на 30 июня, и позволит реализовать в браузере все недостающие элементы ECMAScript, связанные с регулярными выражениями.

Отмечается, что движок RegExp в SpiderMonkey оформлен в виде отдельного компонента, что делает его относительно независимым и пригодным для замены без необходимости внесения значительных изменений в кодовую базу. Модульность позволила в 2014 году заменить изначально применяемый в Firefox RegExp-движок YARR на форк движка Irregexp из V8. Irregexp завязан на API V8, привязан к сборщику мусора, использует специфичные для V8 представление строк и объектную модель. В процессе адаптации к внутреннему API SpiderMonkey в 2014 году движок Irregexp частично переписали, а появляющиеся изменения, такие как флаг '\u', по возможности переносили в ответвление, поддерживаемое Mozilla.

К сожалению, поддержание синхронизированного форка является трудной задачей и его сопровождение требует больших ресурсов. С появлением в стандарте ECMAScript 2018 новых возможностей, связанных с регулярными выражениями, разработчики Mozilla задумались как можно упростить перенос изменений из Irregexp. В качестве выхода была предложена концепция обвязки, позволяющая использовать в SpiderMonkey почти неизменённый движок Irregexp (изменения сводятся только к автоматической замене блоков "#include").



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

Обновление RegExp-движка позволит обеспечить в Firefox поддержку таких возможностей, как именованные группы (named captures), экранирование классов Unicode-символов, флаг dotAll и режим Lookbehind:
  • Именованные группы позволяют связать сопоставленные регулярным выражением части строки с определёнными именами вместо порядковых номеров совпадений (например, вместо "/(\d{4})-(\d{2})-(\d{2})/" можно указать "/(?\d{4})-(?\d{2})-(?\d{2})/" и получить доступ к году не через result[1], а через result.groups.year).
  • Экранирование классов Unicode-символов добавляет конструкции \p{…} и \P{…}, например, \p{Number} определяет все возможные знаки с изображением цифр (включая символы вида ①), \p{Alphabetic} - буквы (в том числе иероглифы), \p{Math} - математические символы и т.п.
  • Флаг dotAll приводит к срабатыванию маски "." в том числе для символов перевода строки.
  • Режим Lookbehind позволяет определить в регулярном выражении, что один шаблон предшествует другому (например, сопоставить сумму в долларах без захвата знака доллара).
Проект был осуществлён при участии разработчиков V8, которые со своей стороны провели работу по сокращению зависимости Irregexp от V8, и вынесли некоторые особенности, которые невозможно реализовать на базе SpiderMonkey, в отключаемые блоки "#ifdef". Сотрудничество оказалось взаимовыгодным. Со своей стороны разработчики Mozilla передали в Irregexp изменения, устраняющие некоторые несоответствия с требованиями стандарта JavaScript и улучшающие качество кода. Также в ходе fuzzing-тестирования Firefox были выявлены и устранены ранее не замеченные ошибки в коде Irregexp, приводящие к крахам.

 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ