Skip to content

Latest commit

 

History

History

node-js-8-big-improvements-for-the-debugging-and-native-module-ecosystem

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Node.js 8: Большие улучшения для экосистемы нативных модулей и процесса отладки

Перевод статьи из официального блога Node.js. Node.js 8: Big Improvements for the Debugging and Native Module Ecosystem.

Мы рады представить сегодня Node.js 8.0.0. Улучшения и новые возможности этой версии направлены также на улучшение рабочего процесса разработчиков Node.js. Важные обновления и функции включают в себя добавление Node.js API для разработчиков нативных модулей, async_hooks, JS-биндинги для инспектора, Buffer с заполнением нулями, util.promisify и так далее.

Бросаем конфетти, теперь у нас есть Node.js 8!

В нашем текущем релизном цикле восьмая версия Node.js заменяет седьмую. Версия с долговременной поддержкой (LTS) выйдет в октябре 2017 года (более подробная информация о стратегии LTS здесь). LTS-версия ориентирована на стабильность и безопасность и лучше всего подходит тем, кто хочет гарантировать стабильность при обновлении и/или использовании Node.js в энтерпрайзе.

Те, кто нуждается в стабильности и имеют сложное продакшен-окружение (например, средний и крупный энтерпрайз), должны подождать, пока Node.js 8 отправится в LTS, прежде чем обновляться на эту версию.

Теперь, когда мы уведомили вас об этом, давайте погрузимся в интересные обновления в этой версии.

Экосистема нативных модулей получает ускорение

Столь ожидаемый Node.js API (N-API) будет добавлен в качестве экспериментальной функции в этой версии за флагом. Это невероятно важная технология, так как она устраняет проблемы с нативными модулями, которые возникают при мажорных релизах.

Хотя нативные модули (модули, написанные на C или C++ и непосредственно связанные с Chrome V8) представляют собой небольшую часть массивной модульной экосистемы, 30% всех модулей косвенно ссылаются на нативные модули. Каждый раз, когда Node.js получает мажорное обновление, разработчикам пакетов приходится обновлять эти зависимости.

Эти усилия были бы невозможны без значительного вклада от Google, IBM, Intel, Microsoft, nearForm, NodeSource и отдельных разработчиков. Прочитать полную информацию об этих усилиях и этой технологии можно здесь.

Любой, кто создаёт или использует нативные модули, должен проверить функцию N-API.

Добро пожаловать, V8 5.8

Node.js 8 поставляется с V8 5.8, значительным обновлением среды выполнения JavaScript, включающей в себя серьёзные улучшения в производительности и разработке API-интерфейсов для разработчиков. V8 5.8 гарантированно поддерживает ABI совместимость с V8 5.9 и предстоящим V8 6.0, что поможет обеспечить стабильность экосистемы нативных дополнений Node.js. Во время жизни Node.js 8 проект Node.js планирует перейти на V8 5.9 и, возможно, V8 6.0.

Движок V8 5.8 также помогает подготовиться к переходу на новый конвейер Turbofan и Ignition, что приведёт к снижению потребления памяти и более быстрому запуску Node.js-приложений. Хотя они уже присутствовали в предыдущих версиях V8, TurboFan и Ignition в первый раз будут включены по умолчанию в V8 5.9. Новый конвейер компилятора представляет собой настолько значительное изменение, что Технический комитет Node.js Core (CTC) решил отложить выпуск Node.js 8, чтобы реализовать его лучше.

Улучшения буфера

В Node.js 8 Buffer(num) и new Buffer(num) с заполнением нулями добавлены по умолчанию. Преимущество буфера с заполнением нулями — предотвращение утечки информации для обеспечения безопасности и конфиденциальности. Однако недостаток этого буфера в том, что люди, использующие его, будут иметь просадки производительности, но этого можно избежать, перейдя на buffer.allocUnsafe(). Предполагается, что пользователи Node.js используют эту функцию только в том случае, если они представляют все риски и знают, как избежать проблем.

Парсер WHATWG URL теперь в стабильной версии

Парсер WHATWG URL переходит в этой версии от экспериментального статуса к полностью поддерживаемому, позволяя людям использовать парсер URL, соответствующий спецификации и более совместимый с браузером. Эта новая реализация URL соответствует реализациям URL и API, доступным в современных веб-браузерах, таких как Chrome, Firefox, Edge и Safari, что позволяет использовать общий доступ к URL, не зависящий от окружения.

Производительность, безопасность и улучшения интерфейса в npm@5

Npm, Inc. недавно объявила о выпуске версии 5.0.0 клиента npm, и мы рады включить эту новую версию в Node.js 8.

Такие типичные задачи управления пакетами, как установка пакетов и обновление версий, теперь в пять раз быстрее. Lockfiles обеспечивают консистентную установку в среде разработки. Самовосстанавливающийся кеш с автоматической коррекцией ошибок защищает от повреждённых загрузок. Npm@5 также вводит проверку кода с помощью SHA-512 хеширования.

«Начиная с превого релиза в составе Node.js в 2011 году, наша миссия заключается в том, чтобы уменьшить сложности для Node.js-разработчиков и помочь людям создавать потрясающие вещи. Использование Node.js 8 с npm@5 позволит сделать модульную разработку программного обеспечения значительно быстрее и проще — это самое большое повышение производительности за все время. Мы гордимся нашими обязательствами перед Node.js-сообществом и сотрудничеством для продвижения инновационных продуктов на рынок. Я невероятно мечтаю увидеть, что же будет дальше», — Исаак Шлютер, генеральный директор npm, Inc.

Инсайты об экосистеме профилирования и отладки

Текущий релиз обеспечит глубокое понимание работы кода с помощью новых функций отслеживания и асинхронного отслеживания. Экспериментальный модуль «async_hooks» (ранее «async_wrap») получил большое обновление в Node.js 8. Этот диагностический API позволяет разработчикам контролировать работу цикла событий Node.js, отслеживать асинхронные запросы и их полный жизненный цикл и включает лучшие диагностические инструменты и другие утилиты.

Эти дополнения вместе с удалением старого отладчика (заменяется новым CLI отладчиком, появившимся в версии 7) облегчают отладку и отслеживание изменений в Node.js, что позволяет разработчикам коммерческих и опенсорсных инструментальных средств выявлять снижение производительности в Node.js-приложениях.

Другая экспериментальная функция, добавленная к этому выпуску, включает JS-биндинги для инспектора. Новый модуль ядра инспектора позволяет разработчикам использовать протокол отладки, используемый инспектором Chrome для проверки запущенного JavaScript-кода.

Улучшенная поддержка промисов

Node.js включает новый API util.promisify(), позволяющий разработчикам обёртывать API с колбеками, чтобы возвращать промисы с небольшими накладными расходами, используя стандартный API.

Чтобы узнать обо всех наших основных обновлениях, пожалуйста, перейдите в наш технический блог.


Слушайте наш подкаст в iTunes и SoundCloud, читайте нас на Medium, контрибьютьте на GitHub, общайтесь в группе Telegram, следите в Twitter и канале Telegram, рекомендуйте в VK и Facebook.

Ссылка на medium