1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-06 15:40:29 +02:00
Commit graph

13578 commits

Author SHA1 Message Date
Andy Wingo
eaefabee34 add scm_c_abort, wire it up to the abort opcode
* libguile/control.h:
* libguile/control.c (scm_c_abort): Add an implementation of `abort',
  but it doesn't reify the continuation yet.

* libguile/vm-i-system.c (abort):
* libguile/vm.c (vm_abort): Wire up the call to `abort', avoiding
  consing the args into a list.

* module/language/tree-il/compile-glil.scm (flatten): Add some compily
  bits that can allow the abort to be resumed.
2010-02-19 16:55:36 +01:00
Andy Wingo
ea6b18e82f prompt handlers are always inline
* libguile/control.h (SCM_F_PROMPT_INLINE, SCM_PROMPT_INLINE_P): Remove;
  prompts always have "inline" handlers now.
* libguile/control.c (scm_c_make_prompt): Remove inline_handler_p arg.

* libguile/vm-i-system.c (prompt):
* module/language/assembly/decompile-bytecode.scm (decode-load-program):
* module/language/assembly/compile-bytecode.scm (write-bytecode):
 Adapt to prompt changes.

* module/language/glil.scm (make-glil-prompt, glil-prompt-inline?):
  Remove inline? flag.
  (parse-glil, unparse-glil):
* module/language/glil/compile-assembly.scm (glil->assembly): Adapt to
  <glil-prompt> change.

* module/language/tree-il/compile-glil.scm (flatten): Require the
  handler of a <prompt> to be a lambda-case.

* module/language/tree-il/primitives.scm (*primitive-expand-table*):
  Ensure that the handler of a <prompt> is a lambda-case.

* module/language/tree-il/inline.scm (inline!): Simplify a degenerate
  case: (lambda args (apply (lambda ...) args)) => (lambda ...).
2010-02-19 15:30:34 +01:00
Andy Wingo
f5b1f76af4 fluid-ref / fluid-set! compile to dynref/dynset
* module/language/tree-il/primitives.scm: Resolve fluid-ref and
  fluid-set! as primitives, and thence to dynref/dynset.
2010-02-19 12:10:12 +01:00
Andy Wingo
706a705eca add <dynref> and <dynset> to tree-il
* module/language/tree-il.scm (<dynref>, <dynset>): New tree-il language
  elements, corresponding to fluid-ref and fluid-set.
* module/language/tree-il/analyze.scm:
* module/language/tree-il/compile-glil.scm: Wire them up in the usual
  manner.
2010-02-19 12:10:12 +01:00
Andy Wingo
1e7a0337f1 new VM operations: fluid-ref, fluid-set
* libguile/vm-i-system.c (fluid-ref, fluid-set): New VM ops.
2010-02-19 12:10:11 +01:00
Andy Wingo
5ef71027e4 fluids.h exposes more of its interface, internally at least
* libguile/fluids.h (SCM_I_FLUID_P, SCM_I_FLUID_NUM)
  (SCM_I_DYNAMIC_STATE_P, SCM_I_DYNAMIC_STATE_FLUIDS): Expose these
  predicates and accessors, internally at least.
* libguile/fluids.c (IS_FLUID, FLUID_NUM, IS_DYNAMIC_STATE)
  (DYNAMIC_STATE_FLUIDS): Implement in terms of the exposed macros.
2010-02-19 12:10:11 +01:00
Andy Wingo
26e6f99fc3 vm caches the dynamic state in a local var
* libguile/vm-engine.c (vm_engine): Cache the dynamic state in a local
  var when we enter the VM.
* libguile/vm-i-system.c (wind-fluids, unwind-fluids): Use the cached
  dynamic state instead of going through SCM_I_CURRENT_THREAD.
2010-02-19 12:10:11 +01:00
Andy Wingo
6e84cb95b1 rename <control> to <abort>
* libguile/vm-i-system.c (abort): Rename instruction from `throw'.
* libguile/vm.c (vm_abort): Rename from vm_throw.
* module/language/tree-il.scm (<abort>, make-abort, abort-src,
  abort-tag, abort-args: Rename from <control> & company.

* module/language/tree-il/analyze.scm:
* module/language/tree-il/compile-glil.scm:
* module/language/tree-il/primitives.scm: Fix all callers.
2010-02-19 12:10:11 +01:00
Andy Wingo
07a0c7d5d9 <prompt> has no pre-unwind-handler, it's unnecessary
* libguile/control.h:
* libguile/control.c (scm_c_make_prompt, SCM_PROMPT_PRE_UNWIND_HANDLER):
* libguile/vm-i-system.c (prompt)
* module/language/tree-il.scm (<prompt> prompt-pre-unwind-handler):
* module/language/tree-il/analyze.scm:
* module/language/tree-il/compile-glil.scm:
* module/language/tree-il/inline.scm:
* module/language/tree-il/primitives.scm: Remove the "pre-unwind"
  handler from prompt; it turns out not to be necessary. Adapt all
  references.
2010-02-19 12:10:11 +01:00
Andy Wingo
bcbbba866b re-expand psyntax-pp
* module/ice-9/psyntax-pp.scm: Expand again so we actually use
  with-fluids.
2010-02-19 12:10:11 +01:00
Andy Wingo
67a78ddd83 fix tree-il->scheme bug for <dynlet>
* module/language/tree-il.scm (tree-il->scheme): Bugfix for dynlet.
2010-02-19 12:10:11 +01:00
Andy Wingo
6360c1d4c1 psyntax support for with-fluids
* module/ice-9/psyntax.scm (build-dynlet, with-fluids): Use psyntax to
  recognize `with-fluids' as a core form, producing <dynlet> if we are
  compiling.
  (sc-expand): To spice up the mix, use with-fluids here in the
  implementation.

* module/ice-9/psyntax-pp.scm: Bootstrapped twice (!).

* module/ice-9/boot-9.scm: Remove with-fluids definition, it's in the
  core now.
2010-02-18 22:46:31 +01:00
Andy Wingo
b50511b475 add tree-il->glil compilation for dynlet
* module/language/tree-il/compile-glil.scm (flatten): Compile <dynlet>.
2010-02-18 22:46:25 +01:00
Andy Wingo
e084b27e79 add wind-fluids, unwind-fluids VM ops
* libguile/vm-i-system.c (wind-fluids, unwind-fluids): New instructions,
  for dynamic binding.
2010-02-18 22:15:44 +01:00
Andy Wingo
d7c53a8695 add dynlet to tree-il
* module/language/tree-il.scm (<dynlet>, dynlet?, make-dynlet)
  (dynlet-src, dynlet-fluids, dynlet-vals, dynlet-body): New tree-il
  construct, mapping to `with-fluids'.
  (parse-tree-il, unparse-tree-il, tree-il->scheme, tree-il-fold):
  (make-tree-il-folder, post-order!, pre-order!): Wire it up.
* module/language/tree-il/analyze.scm (analyze-lexicals): Add dynlet
  support.
2010-02-18 22:15:43 +01:00
Andy Wingo
bb0229b51d add with-fluids objects and primitive syntax
* libguile/tags.h (scm_tc7_with_fluids): Allocate a tc7 for
  "with-fluids" objects, which will only live on the dynamic stack (wind
  list), not in normal scheme-land.

* libguile/fluids.h (SCM_WITH_FLUIDS_P, SCM_WITH_FLUIDS_LEN)
  (SCM_WITH_FLUIDS_NTH_FLUID, SCM_WITH_FLUIDS_NTH_VAL)
  (SCM_WITH_FLUIDS_SET_NTH_VAL): Add some accessors.
* libguile/fluids.c (scm_i_make_with_fluids, scm_i_swap_with_fluids):
  New internal functions.
  (scm_c_with_fluids, scm_c_with_fluid): Push with-fluids objects on the
  dynwind list, not winders.

* libguile/dynwind.c (scm_i_dowinds): Add cases for winding and
  unwinding with-fluids objects.

* libguile/memoize.h (scm_sym_with_fluids, SCM_M_BEGIN): New public
  data.
* libguile/memoize.c (scm_m_with_fluids): Define with-fluids as a
  primitive syntax.
  (unmemoize): Add with-fluids case.

* libguile/eval.c (eval):
* module/ice-9/eval.scm (primitive-eval): Add with-fluids cases.

* test-suite/tests/fluids.test
  ("fluids not modified if nonfluid passed to with-fluids"): Enable a
  now-passing test.
2010-02-18 22:15:43 +01:00
Andy Wingo
27bd1deced add fluid tests
* test-suite/Makefile.am:
* test-suite/tests/fluids.test: Add some fluid tests. One is an XFAIL
  right now.
2010-02-18 22:15:43 +01:00
Andy Wingo
8da6ab34bd rename <dynamic-wind> to <dynwind>
* module/language/tree-il.scm (<dynwind>): Rename from <dynamic-wind>.
* module/language/tree-il/analyze.scm:
* module/language/tree-il/primitives.scm:
* module/language/tree-il/compile-glil.scm: All accessors and callers
  changed.
2010-02-18 22:15:43 +01:00
Andy Wingo
c08899ff24 fix unmemoization bug
* libguile/memoize.c (unmemoize): Fix unmemoization of memoized
  toplevel-ref and module-ref forms.
2010-02-18 22:15:43 +01:00
Andy Wingo
f3a8d1b745 eval.c tweaks
* libguile/eval.c (eval): Fix a couple of uses of scm_cdr that should
  use CDR.
2010-02-18 22:15:43 +01:00
Andy Wingo
2ac16429ab fix comment in continuations.c
* libguile/continuations.c: Fix a comment.
2010-02-18 22:15:43 +01:00
Andy Wingo
b5e9f3f97e memoize (begin foo) to foo
* libguile/memoize.c (memoize_sequence): Don't make a `begin' if there's
  only one form.
2010-02-18 22:15:43 +01:00
Andy Wingo
21ec0bd907 reorder eval clauses
* module/ice-9/eval.scm: Add a comment explaining the frequencies of the
  various memoized expression types.
  (eval): Reorder the cases based the profile.
2010-02-18 22:15:43 +01:00
Andy Wingo
d69531e213 dynwind is now a part of guile's primitive language
* libguile/memoize.h (scm_sym_at_dynamic_wind, SCM_M_DYNWIND)
* libguile/memoize.c (memoized_tags, MAKMEMO_DYNWIND)
  (scm_m_at_dynamic_wind, unmemoize): Add dynwind as a primitive
  expression type.

* libguile/dynwind.c (scm_dynamic_wind): Downgrade to a normal C
  function.

* libguile/eval.c (eval):
* module/ice-9/eval.scm (primitive-eval): Add dynwind support.

* module/ice-9/r4rs.scm: More relevant docs.
  (apply): Define in a more regular way.
  (dynamic-wind): Add to this file, with docs, dispatching to
  @dynamic-wind.

* module/language/tree-il/primitives.scm: Parse @dynamic-wind into a
  tree-il dynamic-wind.
2010-02-18 22:12:55 +01:00
Ludovic Courtès
ac1ef09bfe Bump version number for 1.9.8.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
2010-02-17 18:11:49 +01:00
Ludovic Courtès
dde9c5a431 Update to Gnulib v0.0-3448-g6078aa4 for its <netdb.h> fix.
Reverts commit 691b9ec196 ("getaddrinfo:
Define macros lacking in NetBSD 5.0.").

* libguile/net_db.c (AI_ALL, AI_V4MAPPED, AI_ADDRCONFIG): Remove
  placeholder definitions, how provided by Gnulib's <netdb.h>.
2010-02-17 17:50:43 +01:00
Andy Wingo
44d70904a6 slight NEWS tweaks
* NEWS: Slight tweaks.
2010-02-17 17:34:58 +01:00
Ludovic Courtès
691b9ec196 getaddrinfo: Define macros lacking in NetBSD 5.0.
* libguile/net_db.c (AI_ALL, AI_V4MAPPED, AI_ADDRCONFIG): New
  macros, when not already defined.
2010-02-17 01:14:26 +01:00
Ludovic Courtès
dbd9532e89 Update `NEWS'. 2010-02-17 00:50:24 +01:00
Ludovic Courtès
127f5c624d Mention libffi dependency in `README'. 2010-02-17 00:44:56 +01:00
Ludovic Courtès
f353687c68 Include <libguile/__scm.h> in "foreign.h".
* libguile/foreign.h: Include <libguile/__scm.h>.
2010-02-17 00:44:14 +01:00
Ludovic Courtès
d2add8ae11 Remove misplaced tabs from the manual.
* doc/ref/posix.texi (Network Databases): Remove tabs from `getaddrinfo'
  example.

* .dir-locals.el: Set `indent-tabs-mode' to `t' for `texinfo-mode'.
2010-02-17 00:31:04 +01:00
Andy Wingo
a104b81cc4 a start at NEWS
* NEWS: A start at NEWS; now to sleep.
2010-02-16 23:45:36 +01:00
Andy Wingo
f75c5849cd delete the tutorial
* configure.ac:
* doc/Makefile.am:
* doc/tutorial/ChangeLog-2008:
* doc/tutorial/ChangeLog-guile-doc-tutorial:
* doc/tutorial/Makefile.am:
* doc/tutorial/guile-tut.texi: Remove the tutorial. The history was out
  of date (whereas the manual is current), the C examples are no longer
  valid (and the manual does provide C examples), it was incomplete, and
  its first person no longer hacks on Guile. So tutorial, you had a good
  run, but the manual does your job now!
2010-02-16 21:47:34 +01:00
Andy Wingo
3ef9fa53f9 fix a bug in the tutorial
* doc/tutorial/guile-tut.texi (c_builtins.c): Fix a typo with an
  undeclared variable. Thanks to Raimon Grau for the pointer. This
  tutorial is quite out of date, though...
2010-02-16 21:35:57 +01:00
Andy Wingo
04af4c4c52 `load' doesn't cause the compiler to be loaded in some cases
* module/system/base/compile.scm (compiled-file-name): Add a comment.
* module/ice-9/boot-9.scm (load): Avoid loading up (system base compile)
  just to compute an autocompiled file name. Fixes the issue whereby
  guile-tools snarf-check-and-output-texi was inadvertantly loading up
  srfi-1, and thereby a stale library, just to see if guile-tools itself
  had a compiled version.

  Not sure what the right unit test is here, other than vigilance.
2010-02-16 21:15:40 +01:00
Ludovic Courtès
2bfa4d5ccd Add missing $(LTLIBINTL), suggested by Gnulib.
* libguile/Makefile.am (libguile_la_LIBADD): Add $(LTLIBINTL).
2010-02-16 20:57:13 +01:00
Ludovic Courtès
56d288b844 i18n: Define `nl_item' when it's not available (needed for Cygwin).
* configure.ac: Add check for `nl_item'.

* libguile/i18n.c: Separate check for `HAVE_LANGINFO_H' and
  `HAVE_NL_TYPES_H'.
  [!HAVE_NL_ITEM]: Define `nl_item'.
2010-02-16 20:57:13 +01:00
Ludovic Courtès
2b386ab09f Skip "wrong service name" `getaddrinfo' test on Darwin 9.2.
* test-suite/tests/net-db.test ("getaddrinfo")["wrong service name"]:
  Skip test on Darwin 9.2.
2010-02-16 20:57:13 +01:00
Michael Gran
8a8da78d97 Faster read of semicolon comments
There is no need to do character encoding processing within
semicolon comments.

* libguile/read.c (scm_read_semicolon_comment): changed
2010-02-15 20:45:58 -08:00
Ludovic Courtès
44d3d11144 Fix builds of `i18n.c' on non-GNU systems.
* libguile/i18n.c (chr_to_case, str_to_case): Add `func_name' argument
  and `FUNC_NAME' macro.  Update callers.
2010-02-15 19:40:42 +01:00
Ludovic Courtès
3ea159afc5 Add `getaddrinfo' test.
* test-suite/tests/net-db.test ("getaddrinfo")["port 80 with family and
  socket type"]: New test.
2010-02-15 18:43:20 +01:00
Ludovic Courtès
3474222a65 Use #f' for addrinfo:canonname' when it wasn't supplied by getaddrinfo(3).
* libguile/net_db.c (scm_from_addrinfo): Use `#f' when `ai_canonname'
  isn't set.
2010-02-15 18:42:34 +01:00
Ludovic Courtès
25bc75c431 Fix `getaddrinfo' tests.
Thanks to Ken Raeburn.

* test-suite/tests/net-db.test ("getaddrinfo")["port 80"]: Fix bogus
  check of `addrinfo:flags' (POSIX says that the "contents of the
  ai_flags field of the returned structures are undefined.").
  ("wrong service name"): Accept `EAI_NONAME' as a valid error code.
2010-02-15 16:10:01 +01:00
Ludovic Courtès
2fe5eb561c Make the `getaddrinfo' "no name" test more robust.
* test-suite/tests/net-db.test ("getaddrinfo")["no name"]: Check for
  `EAI_EAGAIN' too.
2010-02-15 00:43:20 +01:00
Ludovic Courtès
40ff484d80 Add missing Gnulib files; update `.gitignore'.
This files were missing from commit
61cd9dc907 ("Use Gnulib's `getaddrinfo'
module.").
2010-02-14 22:37:39 +01:00
Ludovic Courtès
55ae00ea73 Add `getaddrinfo' and related procedures.
* libguile/net_db.c (sym_getaddrinfo_error, sym_ai_passive,
  sym_ai_canonname, sym_ai_numerichost, sym_ai_numericserv,
  sym_ai_v4mapped, sym_ai_all, sym_ai_addrconfig, sym_eai_badflags,
  sym_eai_noname, sym_eai_again, sym_eai_fail, sym_eai_family,
  sym_eai_socktype, sym_eai_service, sym_eai_memory, sym_eai_system,
  sym_eai_overflow, sym_eai_nodata, sym_eai_addrfamily,
  sym_eai_inprogress, sym_eai_canceled, sym_eai_notcanceled,
  sym_eai_alldone, sym_eai_intr, sym_eai_idn_encode): New variables.
  (scm_from_addrinfo, scm_getaddrinfo, scm_gai_strerror): New functions.

* libguile/net_db.h (scm_getaddrinfo, scm_gai_strerror): New functions.

* module/ice-9/networking.scm (addrinfo:flags, addrinfo:fam,
  addrinfo:socktype, addrinfo:protocol, addrinfo:addr,
  addrinfo:canonname): New procedures.

* test-suite/tests/net-db.test: New file.

* test-suite/Makefile.am (SCM_TESTS): Add `tests/net-db.test'.

* doc/ref/posix.texi (Network Databases)[getaddrinfo]: New subsection.
  [The Host Database]: Suggest using `getaddrinfo'.
2010-02-14 20:56:47 +01:00
Ludovic Courtès
61cd9dc907 Use Gnulib's `getaddrinfo' module.
* m4/gnulib-cache.m4: Add `getaddrinfo'.

* libguile/Makefile.am (libguile_la_LDFLAGS): Add `$(GETADDRINFO_LIB)
  $(HOSTENT_LIB) $(SERVENT_LIB)'.
2010-02-14 17:06:13 +01:00
Thien-Thi Nguyen
60b6a84f0f Document trailing whitespace policy.
* HACKING (Coding standards): Delete trailing whitespace.
Add blurb documenting trailing whitespace policy.

Signed-off-by: Thien-Thi Nguyen <ttn@gnuvola.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2010-02-13 23:51:07 +01:00
Ludovic Courtès
4adf9a7e27 Document the maximum number of arguments for a subr.
* doc/ref/api-procedures.texi (Primitive Procedures): Specify the
  maximum number of arguments.  Patch by guign@mails.selgrad.org.
2010-02-13 23:50:06 +01:00