objeck / objeck-lang

Objeck is a modern object-oriented programming language with functional features tailored for machine learning. It emphasizes expression, simplicity, portability, and scalability. The programming environment consists of a compiler, virtual machine, REPL shell, and command line debugger with IDE plugins.
https://objeck.org
Other
154 stars 11 forks source link

Compilation speed concerns #295

Closed ghost closed 1 year ago

ghost commented 1 year ago

Discussed in https://github.com/objeck/objeck-lang/discussions/294

Originally posted by **iahung2** August 10, 2023 Objeck has expanded greatly compared to when I knew it. The compilation speed is also worsening. This is normal for any large C++ project. The problem is that the build system of Objeck is not fully paralleled. If you pay a bit more attention to what is printed on the screen, you will see that `make` tells you: `make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.` The way you designed your makefiles makes it impossible to fully utilize the parallelization feature of `make`, and a lot of code has to be built again and again. I think it's time to change it. Either redesign your makefiles or switch to `cmake` or `meson`. This will also help reduce the compilation time on Github Actions.
objeck commented 1 year ago

Make updates to makefiles. Note that linking is still time-consuming.

ghost commented 1 year ago

Make updates to makefiles. Note that linking is still time-consuming.

On UCRT64 you could install the package mingw-w64-ucrt-x86_64-lld and pass -fuse-ld=lld to g++ and see if the linking speed is improved. I'm currently unable to build Objeck from source to check it myself.