Hi Ian, Ian Hulin <i...@hulin.org.uk> writes:
> On 30/03/10 22:52, Ludovic � wrote: >> Andy Wingo<wi...@pobox.com> writes: >> >>> On Tue 30 Mar 2010 22:56, l...@gnu.org (Ludovic Courtès) writes: >>> >>>>> I'm pretty sure that the submodule thing can be changed without any >>>>> problem. But it seems that the %module-public-interface is used >>>>> explicitly, at least by texmacs and lilypond. >>>> >>>> How do they use it? >>> >>> Linking to the evil empire: >>> >>> http://www.google.com/codesearch?hl=en&lr=&q=%25module-public-interface&sbtn=Search >>> http://www.google.com/codesearch?hl=en&lr=&q=%25module-public-interface+lang%3Ac%2B%2B&sbtn=Search >> >> Lilypond does: >> >> --8<---------------cut here---------------start------------->8--- >> mod = scm_call_0 (maker); >> scm_module_define (mod, ly_symbol2scm ("%module-public-interface"), >> mod); >> --8<---------------cut here---------------end--------------->8--- >> >> Solution: do something like: >> >> --8<---------------cut here---------------start------------->8--- >> #ifdef HAVE_SCM_SET_MODULE_PUBLIC_INTERFACE_X >> scm_set_module_public_interface_x (mod, mod); >> #else >> scm_module_define (mod, ly_symbol2scm ("%module-public-interface"), >> mod); >> #endif >> --8<---------------cut here---------------end--------------->8--- >> >> (We just need to add that function.) >> > >> TeXmacs does: > <snip> >>>> And we could add a ‘public-interface’ slot to ‘module-type’ and have >>>> ‘module-public-interface’ and ‘set-module-public-interface!’ refer to >>>> it; for backward compatibility we’d also initialize the >>>> ‘%module-public-interface’ binding. How does it sound? >> >> Actually the trick wouldn’t work in cases where the >> ‘%module-public-interface’ binding is mutated, as with Lilypond. >> >> Given this and the above examples, I’d suggest dropping that binding >> completely and sending patches to the Lilypond/TeXmacs people. >> >> What do you think? > > If you do add scm_set_module_public_interface_x, could you back-port > it to Guile V1.8.6 and V1.8.7? We could back-port it to the 1.8 series, but not to the already-released 1.8.7 and 1.8.6. We’d have to make a 1.8.8 release, but I’m not sure that would really help anyway since that would force Lilypond users to switch to that version. > Those are the lowest versions of Guile the upcoming stable release of > Lilypond will support. How about doing #ifdef HAVE_SCM_SET_MODULE_PUBLIC_INTERFACE_X in your code? We still have to agree on the change and actually implement it, the latter being easy. ;-) When is the new Lilypond release due? Thanks, Ludo’.