This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi! The .guile file is read when entering the repl, but not before. I suggest to load this file after all other initializations have taken place, independent of whether the repl is entered or not. In my opinion, differences between the different modes in which guile is run should be brought to a minimum. If a user wants certain things to be initialized only when entering the repl but not when running as a script, it should be possible to put the initialization for the repl into a 'enter-repl-hook'. But this is already kind of an advanced feature. I for example use the .guile file to initialize debug options. But since I also perform some initialization code before entering the repl, I have to perform the same initializations in my startup files again. Thus, the .guile file is currently _not_ useful as a means to setup general guile preferences, and I think this should be changed. To reduce the amount of confusion when using guile we should try to achieve the following points (a modified version of the following was already posted to bug-guile): * guile's default behaviour should be the same for repl/scripts. There is only one aspect which may lead to differences: If the implementation of the repl requires modules to be loaded that are not necessarily loaded for executing scripts. But I think this should be the only exception, it should be reduced to the absolute minimum, and it should be documented what the differences are. * guile should start with minimum bindings (even in the repl I sometimes have time-consuming tasks and would like a minimum overhead.) Currently, after starting guile, 1421 symbols are defined in the module guile-user. (There may even be more hidden in other modules.) Among those are posix bindings, socket bindings, bindings for uniform vectors, none of which I have ever used up to now. I eliminated the calls to scm_init_net_db and scm_init_socket from init.c without noticeable effect on my programs. Eliminating scm_init_unif lead to problems during the execution of boot-9.scm, although with some more effort it should be possible to make guile start without support for uniform vectors. The general problem with providing unnecessary features by default is that all guile users have to pay for the overhead, although only few will need these features. * Users that know that they always want certain features activated can do so in their .guile (assumed it is executed for repls _and_ scripts). To allow for customization, an enter-repl-hook should be provided. Best regards, Dirk Herrmann