On 02/22/11 20:15, Ken Raeburn wrote: > On Feb 22, 2011, at 07:00, Hans Aberg wrote: >>>> Perhaps 2.0 should have some check that it gets the right header. > > It wouldn't be that tough to do something like: > #define scm_init_guile scm_init_guile_v2_0 // encode version in symbol [...] > and tell people to use the macro. Ugly, maybe, but not tough. :-) > >> If you use `guile-config compile` (and `guile-config link`) >> in your Makefile it will come out right. > > Unless you're also using some other "foo-config" script.....
Fail early and fail hard. Please find a way to fail a test program, once "configure" has arranged the -I list. Also: * guile should provide autoconf macros to do checking, like for wrong version headers. * Developers should be clearly warned that -I/usr/local/include needs to be after all other -I options, due to guile header naming conflicts. * I have to vary various interfaces because of the obsolescence that happens from release to release. Consistency would be really nice: There should be a macro that has the value 0x200000 or some such that includes the revision number, too. "scm_init_guile_with_version_check" would just ignore the last 12 bits (or divide by 1000, whatever works...) I have to if-def code due to the interface migration. BSD has moved on to 1.6, so I expect they won't be going to 2.0 any time soon. Speaking of moving interfaces, since this call: scm_list_1(SCM_EOL); yields a value that gets garbage collected and since it is equivalent to the accidentally removed scm_listofnull, I am interested in a stable "do it this way" equivalent. >> > By replacing "scm_listofnull" with "ag_scm_listofnull" and initializing it: >> > SCM ag_scm_listofnull = scm_list_1 (SCM_EOL); > In Guile < 1.9.3, you have to scm_gc_protect_object this value > (info "(guile) Garbage Collection Functions"). and it sounds like scm_gc_protect_object(ag_scm_listofnull) won't work in 2.0. Would you-all please put scm_listofnull back? Thank you. Regards, Bruce P.S. the listofnull piece of my guile interface glue now looks like this: > #if GUILE_VERSION < 107000 > [.....] > # define AG_SCM_LISTOFNULL() scm_listofnull > > #elif GUILE_VERSION < 108000 > [.....] > # define AG_SCM_LISTOFNULL() scm_listofnull > > #elif GUILE_VERSION < 109000 > [.....] > # define AG_SCM_LISTOFNULL() scm_listofnull > > #elif GUILE_VERSION < 201000 > [.....] > # define AG_SCM_LISTOFNULL() scm_list_1(SCM_EOL) > > # define scm_sizet size_t > > #else > #error unknown GUILE_VERSION > #endif and I use AG_SCM_LISTOFNULL() instead of scm_listofnull. Does this look right?