Comments 26
А вы не сильно верьте в то, что написала корпорация Микрософт внизу функций.
Например, берём такую функцию как CreateWindowExA
— там нет упоминания Win95, хотя всем очевидно что в Win95 такая функция есть. Похоже, что могущественная корпорация вычищает упоминание о старых системах.
Не стоит доверять словам «Minimum supported client» на современном сайте, нужно или самостоятельно проверять наличие функции в библиотеке, или достать старые SDK.
Поставить в 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.Чтобы заработала аппаратная виртуализация, нужна поддержка специальных регистров в процессоре, без которых все будет совсем уж медленно и печально.
Поскольку речь идет не о обычном домашнем PC а о программно‑аппаратном комплексе, то там помимо устаревшей ОС еще и устаревшее железо, например CPU из 2007го года, где либо нет поддержки аппаратной виртуализации либо она еще недоработанная — с багами.
Сама ОС в таком комплексе может быть без обновлений, например 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 лет.
попробуйте например соорудить домашний сервер из ноутбука
Я пробовал. Ноутбук больше пяти лет проработал особо не выключаясь, с достаточно заметной нагрузкой на диск и процессор, сначала параллельно с нормальным использованием, потом исключительно как сервер. До сих пор периодически включаю, работает, чувствует себя неплохо.
Хорошо бы ссылку на бинарник и патч
Выложил вот тут: https://filetransfer.io/data-package/zOkMP8uP#link обе сборки.
Непонятно вот что. Если вам норм средневековая версия винды, почему вас не устраивает питон с нодой из той же эпохи?
Потому что устаревший рантайм потянет за собой необходимость сборки с помощью устаревших инструментов, т.е. в данном случае пришлось бы всю разработку целиком проводить на старой версии Node.js.
Также не стоит забывать что речь идет о Node.js, для которой фразы «пожалуйста обновитесь» и «используйте последнюю версию» являются официальным руководством к действию от ее разработчиков, а «обратная совместимость» — грубым ругательством.
Но концептуально вы правы — в большинстве случаев при работе со «средневековыми» версиями действительно приходится разворачивать еще и «средневековую» разработку.
Потому что устаревший рантайм потянет за собой необходимость сборки с помощью устаревших инструментов, т.е. в данном случае пришлось бы всю разработку целиком проводить на старой версии Node.js.
Ну и... Ок?
Если же вы попробуете скачать и запустить более свежую версию — увидите вот такое сообщение:
Кабудта бы эту проверку до какой-то версии можно обойти добавлением переменной среды NODE_SKIP_PLATFORM_CHECK равной 1. Если точнее, нужно скачать последнюю поддерживаемую в Windows 7 версию v.13.14.0, установить её в нужную категорию стандартным инсталятором, а затем просто заменить все файлы в установленной директории из архива с бинарниками более новой версии.
Этого с горем пополам хватает для работы вплоть до 18-й версии. В гитхабе говорят, что якобы можно таким образом запустить и 20-ю, но у меня встречались некоторые глюки уже на 16-й: при попытках использовать node-gyp, он просто не работает, так что я в итоге так и остановился на 16-й, без всех этих танцев с бубном, так как остальные проекты работают.
Основная боль, конечно, это ублюдское отношение MS к старым VS и системам сборки, а также то что многие разрабы перелезают на новый питон. Из-за этого пришлось отказаться уже от нескольких приложений.
нашлись патчи из других открытых проектов, ...
посмотреть кто еще из открытых проектов использует этот Maglev. ...
А почему просто не посмотреть реализацию этих функций из прошлых же версий ноды?
Дело в том что этот проект maglev берется из chromium, из движка v8 и копируется в Node.js как зависимость.
Насколько я понял, сама разработка maglev на стороне Node.js не ведется вообще, его просто копируют из апстрима, поэтому например разница в этом месте между 20й и 22й Node.js очень большая — концов не найти.
Так, а где в итоге линк на сборку, которая у вас получилась? Вообще-то 20-я версия бы не помешала.
Не собирать же самому по этим гайдам...
Выложил вот тут: https://filetransfer.io/data-package/zOkMP8uP#link обе сборки.
>Не собирать же самому по этим гайдам...
Это не настолько сложно как кажется.
А какие-то автоматизированные тесты вы не запускали? Наверняка же они есть в node.js
Бекпорт на примере Node.js v22 и Windows 7