Как стать автором
Обновить

Комментарии 26

А вы не сильно верьте в то, что написала корпорация Микрософт внизу функций.

Например, берём такую функцию как CreateWindowExA — там нет упоминания Win95, хотя всем очевидно что в Win95 такая функция есть. Похоже, что могущественная корпорация вычищает упоминание о старых системах.

Не стоит доверять словам «Minimum supported client» на современном сайте, нужно или самостоятельно проверять наличие функции в библиотеке, или достать старые SDK.

Скорее постепенно убирает слои совместимости, от версии к версии уменьшая возможности по работе устаревшего ПО.

На сегодняшний день для софта уровня DOS/Win3.1/Win95 уже чуть ли не официально рекомендуют использовать Wine или Dosbox вместо того чтобы пытаться запускать в основной ОС.

Поставить в Windows 7 Virtual Box, создать в нем виртуальную машину Debian 12 и поставить туда Node.js нужной версии (и даже несколько версий) с помощью современных пакетных менеджеров, а также Visual Studio Code последней версии (а не как в Windows 7, где крайняя версия 1.78.2) для разработки на JavaScript и Python заняло бы куда меньше времени. 2 Гб ОЗУ для виртуалки вполне хватает для простой разработки. На диске такая виртуалка занимает место меньше 10 Гб . Отклик от GUI виртуалки комфортен - старый i3 с 2-мя ядрами для виртуалки справляется нормально для комфортной работой. И нет проблем с надежностью собранного "поделия". А так, конечно можно и на Windows XP что-нить из современного пересобрать. Но "стоит ли овчинка выделки?" - вот в чем вопрос.

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

  1. Поскольку речь идет не о обычном домашнем PC а о программно‑аппаратном комплексе, то там помимо устаревшей ОС еще и устаревшее железо, например CPU из 2007го года, где либо нет поддержки аппаратной виртуализации либо она еще недоработанная — с багами.

  2. Сама ОС в таком комплексе может быть без обновлений, например Windows7 и Windows7 SP1 — это очень сильно разные системы, хотя и называются одинаково. Современный VirtualBox да и просто любой свежий софт легко может запросить именно SP1 и не заработать вообще на старой версии.

Так что увы но нет, если речь заходит об устаревшем окружении — это всегда «цемент», который нельзя ни двигать ни править, но с которым надо как‑то жить.

Шуткой скажу, но просто подключить к аппаратно-программному комплексу raspberry pi и на нем уже запускать веб-сервис, а на windows 7 только проксировать - это как по мне более безопасный и легкий способ при неработающей виртуализации.

Допускаю что могу ошибаться, но со стороны бэкпортирование кажется излишне бесполезным занятием. Да и к тому же раз уж не обновляется аппаратно-программный комплекс и он находится в строго изолированной среде, то и смысл обновлять средства разработки нет. Да, может babel будет не новым или angular. Но ведь разрабатывать можно

подключить к аппаратно-программному комплексу raspberry pi

Есть очень большая разница между бытовой электроникой и промышленной. Проще говоря ваш raspberry pi в цеху при серьезной и постоянной нагрузке просто сгорит.

Как и большинство бытовых компьютеров — попробуйте например соорудить домашний сервер из ноутбука и воочию увидите как он выходит из строя в страшных муках. Не надо так делать в общем.

но со стороны бэкпортирование кажется излишне бесполезным занятием

А если скажу, что до сих пор выпускаются 3.5 дискеты (см. дату выпуска партии) — сильно удивитесь?

Недавняя история с поиском сисадмина для сети на базе Windows 3.1 в немецкую железнодорожную компанию на самом деле не является уникальной, очень много где используются еще более древние системы.

И под них до сих пор пишут и поддерживают софт.

И делают бекпорты, хотя разумеется речь не про портирование чего-то вроде Node.js на Windows 3.1.

Но ведь разрабатывать можно

С заметно большим трудом. И чем более устаревшее окружение — тем сложнее и дороже.

Таким вот бекпортом мы cильно удешевили и ускорили разработку, позволив обычным современным Node.js разработчикам с 3–5 лет опыта разрабатывать без оглядки на реалии системы которой на минуточку уже 15 лет.

попробуйте например соорудить домашний сервер из ноутбука

Я пробовал. Ноутбук больше пяти лет проработал особо не выключаясь, с достаточно заметной нагрузкой на диск и процессор, сначала параллельно с нормальным использованием, потом исключительно как сервер. До сих пор периодически включаю, работает, чувствует себя неплохо.

Хорошо бы ссылку на бинарник и патч

Ссылка протухла :( За скачивание просит премиум и $10

Напишите в ТГ @alex0x08 , выдам сборку.

Непонятно вот что. Если вам норм средневековая версия винды, почему вас не устраивает питон с нодой из той же эпохи?

Потому что устаревший рантайм потянет за собой необходимость сборки с помощью устаревших инструментов, т.е. в данном случае пришлось бы всю разработку целиком проводить на старой версии Node.js.

Также не стоит забывать что речь идет о Node.js, для которой фразы «пожалуйста обновитесь» и «используйте последнюю версию» являются официальным руководством к действию от ее разработчиков, а «обратная совместимость» — грубым ругательством.

Но концептуально вы правы — в большинстве случаев при работе со «средневековыми» версиями действительно приходится разворачивать еще и «средневековую» разработку.

Потому что устаревший рантайм потянет за собой необходимость сборки с помощью устаревших инструментов, т.е. в данном случае пришлось бы всю разработку целиком проводить на старой версии Node.js.

Ну и... Ок?

Ну и будут проблемы с библиотеками, которым нужна актуальная версия, будет проблема с node‑gyp и линковкой нативных частей, которых очень много — от sass компилятора и до драйверов к СУБД.

А если будут пробелмы с безопасностью из-за дыр в ОС? Будем компилировать из исходников ReactOS?

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

Если же вы попробуете скачать и запустить более свежую версию — увидите вот такое сообщение:

Кабудта бы эту проверку до какой-то версии можно обойти добавлением переменной среды NODE_SKIP_PLATFORM_CHECK равной 1. Если точнее, нужно скачать последнюю поддерживаемую в Windows 7 версию v.13.14.0, установить её в нужную категорию стандартным инсталятором, а затем просто заменить все файлы в установленной директории из архива с бинарниками более новой версии.

Этого с горем пополам хватает для работы вплоть до 18-й версии. В гитхабе говорят, что якобы можно таким образом запустить и 20-ю, но у меня встречались некоторые глюки уже на 16-й: при попытках использовать node-gyp, он просто не работает, так что я в итоге так и остановился на 16-й, без всех этих танцев с бубном, так как остальные проекты работают.

Основная боль, конечно, это ублюдское отношение MS к старым VS и системам сборки, а также то что многие разрабы перелезают на новый питон. Из-за этого пришлось отказаться уже от нескольких приложений.

Да, я поздно понял что можно было просто переменной окружения пропускать эту проверку :) Но вот все остальное (где про замену файлов) делать не советую.

Node-gyp кстати в моей сборке очень даже работает.

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

посмотреть кто еще из открытых проектов использует этот Maglev. ...

А почему просто не посмотреть реализацию этих функций из прошлых же версий ноды?

Дело в том что этот проект maglev берется из chromium, из движка v8 и копируется в Node.js как зависимость.

Насколько я понял, сама разработка maglev на стороне Node.js не ведется вообще, его просто копируют из апстрима, поэтому например разница в этом месте между 20й и 22й Node.js очень большая — концов не найти.

Так, а где в итоге линк на сборку, которая у вас получилась? Вообще-то 20-я версия бы не помешала.

Не собирать же самому по этим гайдам...

Выложил вот тут: https://filetransfer.io/data-package/zOkMP8uP#link обе сборки.

>Не собирать же самому по этим гайдам...

Это не настолько сложно как кажется.

Спасибо!

Дело не в сложности, меня передёргивает от необходимости ставить на комп несколько гигов VSBuild'а ради этого.

А какие-то автоматизированные тесты вы не запускали? Наверняка же они есть в node.js

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории