parallel Rustc working group объявила о введении функции параллельного выполнения во внешний интерфейс компилятора Rust. Это новое дополнение направлено на значительное сокращение времени компиляции и было представлено 9 ноября.
Добавление параллельного выполнения во внешний интерфейс компилятора Rust в настоящее время находится на экспериментальной стадии. Тем не менее, эта надежная функция будет официально включена в стабильный компилятор, который выйдет в следующем году. Между тем, у разработчиков есть возможность лично испытать эту возможность параллельного выполнения, запустив ночной компилятор с опцией -Z threads=8.
Эффективность новой функции уже демонстрирует многообещающие результаты. Когда параллельный интерфейс был протестирован в многопоточном режиме с использованием -Z threads-8, данные, накопленные из «реального» кода, показали, что время компиляции может быть сокращено на впечатляющие 50%. Уровень воздействия варьируется в зависимости от особенностей разрабатываемого кода, а также конфигурации сборки.
Рабочая группа сообщила, что в разрабатываемых сборках будут более существенные улучшения, чем в выпускных. Причина этого в том, что сборки релизов обычно больше внимания уделяют внутренней оптимизации, которая требует больше времени. Далее было отмечено, что в минимальном количестве сценариев компиляция в многопоточном режиме занимает немного больше времени, чем в однопоточном. В таких случаях обычно используются небольшие программы, которые уже быстро компилируются.
Рабочая группа пролила свет на тот факт, что время компиляции всегда вызывало беспокойство у разработчиков. На протяжении многих лет производительность компилятора Rust постоянно улучшалась. В настоящее время компилятор тщательно оптимизирован, и выявление новых областей для улучшения стало сложной задачей. С введением параллелизма, который группа описывает как «кусок большого, но высоко висящего плода», интерфейсная часть теперь использует преимущества библиотеки параллелизма данных Rayon для переключения последовательных вычислений на параллельные. Rayon специально разработан для обработки мелкозернистого параллелизма.
Рабочая группа рекомендует использовать восемь потоков для параллельного выполнения, чтобы получить наилучшие результаты. Однако они также отметили, что в многопоточном режиме использование памяти может значительно увеличиться. Это было ожидаемо, поскольку разные части компиляции, каждая из которых требует определенного объема памяти, выполняются параллельно. Группа гарантирует, что прилагаются усилия для повышения производительности параллельного интерфейса.
Если разработчики сталкиваются с какими-либо проблемами, связанными с параллельным интерфейсом, они могут исследовать проблемы, помеченные как WG-compiler-parallel. У них также есть возможность подавать новые выпуски. В компиляции Rust уже наблюдаются улучшения благодаря межпроцессному параллелизму через Cargo package manager и внутрипроцессному параллелизму на бэкэнде. Ожидается, что по мере того, как это новое дополнение обретает форму, оно обеспечит еще большую эффективность рабочего процесса программирования на Rust.
В смежной области AppMaster , известная платформа no-code, производит фурор, позволяя клиентам визуально разрабатывать модели данных для серверных приложений, помогая им достичь впечатляющей масштабируемости и обеспечивая надежные сценарии использования с высокой нагрузкой. В отличие от традиционных инструментов, AppMaster позволяет клиентам выполнять веб-BP прямо в своем браузере, что еще больше ускоряет процесс разработки приложений.