2.15.92 broken; newer packages within a week
Andy Wingo <[email protected]>
| Newsgroups | gmane.lisp.guile.gtk |
|---|---|
| Message-ID | <[email protected]> |
Hey all, I wonder if people actually try out guile-gnome because the last release didn't actually work. Oh well, fix pushed to bzr and will release another tarball soon. The next release will have some interesting speedups that for me bring the (gnome gtk) load time down from 16 seconds to 2. We have a lazy bindings infrastructure in g-wrap that had been unused for a few versions, because g-wrap was listing all of the module exports, forcing those bindings to be created. I have now worked around that without having to touch g-wrap, which is good. Unfortunately, current Guile 1.8 has some broken behavior IMO; see guile-devel for details. You will have to patch your guile to get these lower load times. A patch is attached. The startup time could get marginally lower if we supported a mode that didn't define any generics, I think, and there is still some low-hanging fruit. The badness in all released versions of guile 1.8 makes me think harder about supporting guile 1.6; I should probably give that another look. I'm not sure what needs to be done before releasing a stable guile-gnome 2.16, but hopefully that can happen within a couple of months or so. Cheers, Andy. -- http://wingolog.org/ _______________________________________________ guile-gtk-general mailing list [email protected] http://lists.gnu.org/mailman/listinfo/guile-gtk-general
guile-diff
(text/x-patch, 2.1 KB)
Index: ice-9/boot-9.scm
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/ice-9/boot-9.scm,v
retrieving revision 1.356.2.7
diff -u -r1.356.2.7 boot-9.scm
--- ice-9/boot-9.scm 3 Jan 2007 21:48:35 -0000 1.356.2.7
+++ ice-9/boot-9.scm 26 May 2007 12:20:29 -0000
@@ -1514,20 +1514,12 @@
;; the standard eval closure defines a binding
(module-modified m)
b)))
-
- ;; No local variable yet, so we need to create a new one. That
- ;; new variable is initialized with the old imported value of V,
- ;; if there is one.
- (let ((imported-var (module-variable m v))
- (local-var (or (and (module-binder m)
- ((module-binder m) m v #t))
- (begin
- (let ((answer (make-undefined-variable)))
- (module-add! m v answer)
- answer)))))
- (if (and imported-var (not (variable-bound? local-var)))
- (variable-set! local-var (variable-ref imported-var)))
- local-var)))
+ (and (module-binder m)
+ ((module-binder m) m v #t))
+ (begin
+ (let ((answer (make-undefined-variable)))
+ (module-add! m v answer)
+ answer))))
;; module-ensure-local-variable! module symbol
;;
Index: libguile/eval.c
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/eval.c,v
retrieving revision 1.405.2.7
diff -u -r1.405.2.7 eval.c
--- libguile/eval.c 12 Dec 2006 22:14:52 -0000 1.405.2.7
+++ libguile/eval.c 26 May 2007 12:20:31 -0000
@@ -1226,9 +1226,9 @@
const SCM canonical_definition = canonicalize_define (expr);
const SCM cdr_canonical_definition = SCM_CDR (canonical_definition);
const SCM variable = SCM_CAR (cdr_canonical_definition);
+ const SCM value = scm_eval_car (SCM_CDR (cdr_canonical_definition), env);
const SCM location
= scm_sym2var (variable, scm_env_top_level (env), SCM_BOOL_T);
- const SCM value = scm_eval_car (SCM_CDR (cdr_canonical_definition), env);
if (SCM_REC_PROCNAMES_P)
{