Hi, The long saga of https://gitlab.com/lilypond/lilypond/-/merge_requests/1510 continues ...
The problem I am currently tackling is startup speed. When byte-compiling the
code in .ly files, startup time increases from 0.3s to 0.8s, which is not quite acceptable. This is because the Guile byte-compiler is dog slow (even without optimizations), and it has to run on all the Scheme code there is in the init .ly files. (And this is in Guile 3. I didn't measure Guile 2 but I expect it to be even slower there.) We could invent a mechanism to cache the bytecode from .ly files, like Guile does in .go files for .scm files. This sounds complicated to me. Or we can reuse the existing mechanism: move all this code to Scheme files. So I'm considering converting all files like music-functions-init.ly to Scheme files, changing (e.g.) function = #(define-music-function (args) (type?) ...) to (define-public function (define-music-function (args) (type?) ...)) This needs to be done for lots of code in lots of files, so it will be quite a major change to the source even though it is just a straightforward translation. In particular, it will create conflicts with everyone's WIP local branches, so I thought I'd ask for thoughts here before embarking on it. If anyone has a better idea ...