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)
       {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.