+22 голоса |
«Кривое» обновление крошечной библиотеки в эту субботу погрузило значительную часть экосистемы JavaScript в состояние хаоса, нарушив работу миллионов программных проектов.
Ставшая причиной этого библиотека is-promise состоит из всего лишь двух строк исходного кода, выполняющих базовую проверку с булевым результатом (да-нет). Несмотря на крайнюю простоту, is-promise является одним из самых популярных на сегодняшний день npm-пакетов (библиотек) JavaScript. Согласно GitHub, эта библиотека входит в более чем 3,4 млн проектов и используется в качестве зависимости 766 другими библиотеками JavaScript.
На выходных is-promise была обновлена, чтобы получить поддержку для работы в качестве модуля ES (стандартизированная модульная система в языке JavaScript). Однако, как только это обновление (v2.2.0) вышло, проекты, которые использовали is-promise в своей цепочке сборки, начали давать сбои из-за неправильной поддержки модуля ES.
Эффект от этой ошибки почувствовался мгновенно не только для разработок с закрытой кодовой основой, но и для ряда величайших проектов экосистемы JavaScript, включая Create React App компании Facevpbook (стандартный шаблон для создания приложений React), Angular.js и инструментарий Firebasse от Google, Amazon AWS Serverless CLI, Nuxt.js, AVA и многие другие.
Как таковых, перебоев в работе этих проектов не было, однако из-за неполадки разработчики не могли компилировать новые версии своих продуктов.
Команда is-promise сразу же подготовила обновление, но не смогла устранить проблему, поэтому в итоге, спустя несколько часов, пришлось сделать откат, отказавшись от поддержки модуля ES в версии v2.2.2.
Нечто похожее произошло в марте 2016 г. Тогда автор другой мини-библиотеки JavaScript, состоявшей из 17 строк кода, внезапно отменил её публикацию, дезорганизовав работу тысяч проектов.
Очередной инцидент дал новую пищу для дискуссий о том, что модуляризация, возможно, зашла слишком далеко. Сторонники создания отдельных модулей для самых тривиальных операций считают это более приемлемым, чем альтернативу — когда тысячи разработчиков реализуют такие операции каждый на свой лад. Прения по модуляризации идут не один год и маловероятно, что они завершатся консенсусом в обозримом будущем.
Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365
+22 голоса |