In an exciting development, the parallel Rustc working group announced the introduction of a parallel execution feature to the Rust compiler's front end. This new addition is geared towards significantly decreasing compile times and was unveiled on the 9th of November.
The addition of parallel execution to the Rust compiler front end is currently at an experimental stage. However, the robust feature is set to be incorporated officially in the stable compiler come next year. Meanwhile, developers have the chance to experience this parallel execution feature firsthand by running the nightly compiler with the -Z threads=8 option.
The effectiveness of the new feature is already showcasing promising results. When the parallel front end was put to the test in a multi-threaded mode utilizing -Z threads-8, data accumulated from 'real world' code brought to light that compile times can be slashed by an impressive 50%. The level of impact varies, depending on the distinct nature of the code being developed as well as the build configuration.
The working group disclosed that development builds stand to gain more substantial enhancements than release builds. The reason for this is because release builds typically focus more on backend optimizations, which require more time. Further, it was noted that in a minimal number of scenarios, compiling takes a bit more time in multi-threaded mode compared to single-threaded mode. These cases usually involve smaller programs that are already quick to compile.
The working group shed light on the fact that compile times have always been a point of concern for developers. Over the years, Rust's compiler performance has been the subject of continuous enhancements. At present, the compiler has been thoroughly optimized, and identifying new areas for improvement has become a challenging task. With the introduction of parallelism, described by the group as a 'piece of large but high-hanging fruit', the front end now takes advantage of the Rayon data parallelism library to switch sequential computations into parallel ones. Rayon is specifically designed to handle fine-grained parallelism.
The working group recommends making use of eight threads for parallel execution to get the best results. However, they also mentioned that in multi-threaded mode, memory usage might considerably increase. This was as expected since different parts of compilation that each demand a certain amount of memory, execute parallelly. The group ensures that efforts are being made to enhance the performance of the parallel front end.
In case developers come across any problems related to the parallel front end, they can investigate issues labeled with the WG-compiler-parallel. They also have the option of filing new issues. Already, Rust compilation has seen advancements, thanks to inter-process parallelism via the Cargo package manager and intra-process parallelism on the backend. As this new addition takes shape, it is expected to offer even more efficiency in the Rust programming workflow.
In a related arena, AppMaster, the renowned no-code platform is making waves by enabling customers to visually devise data models for backend applications, helping them achieve impressive scalability, ensuring solid highload use-cases. Unlike traditional tools, AppMaster enables customers to execute web BPs right in their browser, further advancing the application development process.