summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/eval.c15
-rw-r--r--libguile/futures.c8
-rw-r--r--libguile/futures.h14
-rw-r--r--libguile/init.c4
4 files changed, 39 insertions, 2 deletions
diff --git a/libguile/eval.c b/libguile/eval.c
index 50e30f2e4..e7484376a 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -2102,6 +2102,10 @@ unmemoize_at_call_with_values (const SCM expr, const SCM env)
unmemoize_exprs (SCM_CDR (expr), env));
}
+#if 0
+
+/* See futures.h for a comment why futures are not enabled.
+ */
SCM_SYNTAX (s_future, "future", scm_i_makbimacro, scm_m_future);
SCM_GLOBAL_SYMBOL (scm_sym_future, s_future);
@@ -2126,6 +2130,7 @@ unmemoize_future (const SCM expr, const SCM env)
return scm_list_2 (scm_sym_future, unmemoize_expression (thunk_expr, env));
}
+#endif
SCM_SYNTAX (s_gset_x, "set!", scm_i_makbimacro, scm_m_generalized_set_x);
SCM_SYMBOL (scm_sym_setter, "setter");
@@ -2393,8 +2398,12 @@ unmemoize_builtin_macro (const SCM expr, const SCM env)
case (ISYMNUM (SCM_IM_CALL_WITH_VALUES)):
return unmemoize_at_call_with_values (expr, env);
+#if 0
+ /* See futures.h for a comment why futures are not enabled.
+ */
case (ISYMNUM (SCM_IM_FUTURE)):
return unmemoize_future (expr, env);
+#endif
case (ISYMNUM (SCM_IM_SLOT_REF)):
return unmemoize_atslot_ref (expr, env);
@@ -3748,10 +3757,12 @@ dispatch:
case (ISYMNUM (SCM_IM_DELAY)):
RETURN (scm_makprom (scm_closure (SCM_CDR (x), env)));
-
+#if 0
+ /* See futures.h for a comment why futures are not enabled.
+ */
case (ISYMNUM (SCM_IM_FUTURE)):
RETURN (scm_i_make_future (scm_closure (SCM_CDR (x), env)));
-
+#endif
/* PLACEHOLDER for case (ISYMNUM (SCM_IM_DISPATCH)): The following
code (type_dispatch) is intended to be the tail of the case
diff --git a/libguile/futures.c b/libguile/futures.c
index f7d53a6aa..f465cfcfd 100644
--- a/libguile/futures.c
+++ b/libguile/futures.c
@@ -18,6 +18,12 @@
+#if 0
+
+/* This whole file is not being compiled. See futures.h for the
+ reason.
+*/
+
#include "libguile/_scm.h"
#include "libguile/eval.h"
#include "libguile/ports.h"
@@ -360,6 +366,8 @@ scm_init_futures ()
#include "libguile/futures.x"
}
+#endif
+
/*
Local Variables:
c-file-style: "gnu"
diff --git a/libguile/futures.h b/libguile/futures.h
index 9b6b6a15b..6b8ee2339 100644
--- a/libguile/futures.h
+++ b/libguile/futures.h
@@ -22,6 +22,18 @@
+#if 0
+
+/* Futures have the following known bugs, which should be fixed before
+ including them in Guile:
+
+ - The implementation of the thread cache needs to be better so that
+ it behaves reasonable under heavy use.
+
+ - The dynamic state of a thread needs to be properly initialized
+ when it is retrieved from the cache.
+*/
+
#include "libguile/__scm.h"
#include "libguile/threads.h"
@@ -67,6 +79,8 @@ SCM_API SCM scm_future_ref (SCM future);
void scm_init_futures (void);
+#endif /* Futures are disabled for now. */
+
#endif /* SCM_FUTURES_H */
/*
diff --git a/libguile/init.c b/libguile/init.c
index 9746a90ce..6ca30f0b1 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -455,7 +455,11 @@ scm_i_init_guile (SCM_STACKITEM *base)
scm_init_dynwind ();
scm_init_eq ();
scm_init_error ();
+#if 0
+ /* See futures.h for a comment why futures are not enabled.
+ */
scm_init_futures ();
+#endif
scm_init_fluids ();
scm_init_feature (); /* Requires fluids */
scm_init_backtrace (); /* Requires fluids */