VD2022

VD2022

На Пикабу
Дата рождения: 11 октября
в топе авторов на 318 месте
109 рейтинг 0 подписчиков 63 подписки 1 пост 0 в горячем
Награды:
Пикабу 17 лет!ИИ-помощник
10

Ускорение работы Arduino IDE 2.3.10⁠⁠

Ускорение работы Arduino IDE 2.3.10

В последнее время увлекся программированием микроконтроллеров. Ну как программированием – я формулирую задачи, а Chat GPT их реализует. Может и неидеально, но меня устраивает. Пока программы были малеькими (датчик CO2 или термостат бойлера) проблем не было, пока они не стали большими (управление инвертором - статистика, графики, веб-интерфейс и все такое). И тут я заметил, что компиляция проекта может занимать и 10 минут даже. Да, процессор у меня слабенький по нынешним временам (i7 3770), но не настролько-же! В общем выяснилось, что в Arduino IDE есть такой себе Language Server – фоновая программа, которая обеспечивает умные функции редактирования кода (подсветку, автодополнение, подсказки и поиск ошибок «на лету»). И каждый раз после загрузки проекта он какое-то время его анализирует со 100% загрузкой процессора. И если в это время запустить компиляцию - он не останавливается, и начинает бороться с компилятором за ресурсы. Я натравил на него Chat GPT и результатом стал патч, который отключает Language Server (и включает, если нужно).

В общем - вот сам патч (сохраните его под именем Disable-Arduino-LS.ps1):

param([switch]$Restore)

$ErrorActionPreference = 'Stop'

$target = Join-Path $env:LOCALAPPDATA 'Programs\Arduino IDE\resources\app\lib\frontend\bundle.js'

$backup = "$target.before-disable-language-server.bak"

if (Get-Process -Name 'Arduino IDE' -ErrorAction SilentlyContinue) { throw 'Закройте Arduino IDE перед применением или восстановлением патча.' }

if ($Restore) {

if (!(Test-Path -LiteralPath $backup)) { throw "Резервная копия не найдена: $backup" }

Copy-Item -LiteralPath $backup -Destination $target -Force

Write-Host 'Оригинальный bundle.js восстановлен.'

exit

}

if (!(Test-Path -LiteralPath $target)) { throw "Файл не найден: $target" }

$expected = '25c44c3ae3ff0b827fa550fba7427e84c94ef686df2836f46ced9e98a9665f3d'

$actual = (Get-FileHash -LiteralPath $target -Algorithm SHA256).Hash.ToLowerInvariant()

if ($actual -ne $expected) { throw "Версия bundle.js отличается от присланной. Ничего не изменено. SHA256: $actual" }

$enc = [System.Text.Encoding]::UTF8

$contents = [System.IO.File]::ReadAllText($target, $enc)

$old = 'n&&this.startLanguageServer(n,i,t)'

$new = 'n&&void 0/* LS auto-start disabled */'

if ($contents.Split([string[]]@($old),[System.StringSplitOptions]::None).Count -ne 2) { throw 'Не найден единственный ожидаемый фрагмент. Ничего не изменено.' }

if (Test-Path -LiteralPath $backup) { throw "Резервная копия уже существует: $backup. Ничего не изменено." }

Copy-Item -LiteralPath $target -Destination $backup

$contents = $contents.Replace($old,$new)

[System.IO.File]::WriteAllText($target, $contents, (New-Object System.Text.UTF8Encoding($false)))

Write-Host 'Автоматический запуск Arduino Language Server отключён. Резервная копия сохранена.'

Инструкция по применению:

1. Полностью закройте Arduino IDE.
2. Запустите PowerShell в папке с патчем:
powershell -ExecutionPolicy Bypass -File .\Disable-Arduino-LS.ps1
3. Откройте IDE и проект. Проверьте, что не запускаются arduino-language-server.exe, clangd.exe и фоновые cc1plus.exe.
4. Нажмите Verify и убедитесь, что ручная сборка работает.
Откат:
powershell -ExecutionPolicy Bypass -File .\Disable-Arduino-LS.ps1 -Restore
Патч проверяет SHA256 оригинального bundle.js, меняет только один вызов автоматического запуска Language Server. Не модифицирует Arduino CLI и обработчик Verify/Upload. Работоспособность IDE на вашем компьютере ещё не проверена. При обновлении Arduino IDE патч может потребовать пересоздания.

Результат – компиляция проекта теперь происходит за 1 минуту без 100% загрузки процессора.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества