1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-19 19:20:23 +02:00
Commit graph

13590 commits

Author SHA1 Message Date
Andy Wingo
78bae3d6fa fix mismerge on srfi-19.scm
* module/srfi/srfi-19.scm (priv:locale-abbr-weekday->index): Whoops, fix
  broken manual merge on srfi-19.scm.
2009-01-12 21:45:37 +01:00
Andy Wingo
7bd5f2913d fix typo when compiling receive forms
* module/language/glil/compile-objcode.scm (codegen): Fix an embarassing
  typo, introduced in c2c82b62f4
2009-01-12 21:37:44 +01:00
Andy Wingo
c32929d14d Merge commit 'origin/master' into vm
Conflicts:

	.gitignore
	guile-tools.in
	srfi/srfi-19.scm
2009-01-12 21:36:39 +01:00
Andy Wingo
c41350777d fold in neil's feedback to history.texi
* doc/ref/history.texi: Fold in Neil's feedback
2009-01-11 18:30:11 +01:00
Andy Wingo
0b8f3ac521 word tweaks
* doc/ref/guile.texi: Finish some wording.

* doc/ref/compiler.texi: Fix some goofiness.
2009-01-11 18:21:27 +01:00
Andy Wingo
e33e3aeefd tweaks to compiler.texi
* doc/ref/compiler.texi: Minor tweaks.
2009-01-11 18:00:21 +01:00
Andy Wingo
ff73ae34c3 finish compiler.texi, woo
* libguile/objcodes.c (do-pair): Removed unused debuging hack.

* module/language/glil/spec.scm (glil): Simplify a bit.

* module/system/repl/repl.scm (default-catch-handler): Don't catch
  vm-error, as vm-backtrace doesn't exist any more.

* doc/ref/compiler.texi: Finish documenting GLIL and object code.
2009-01-11 14:23:48 +01:00
Andy Wingo
c850030fdd rename <glil-asm> to <glil-program>
* module/language/glil.scm (<glil-program>): Rename from <glil-asm>.

* module/language/ghil/compile-glil.scm (codegen):
* module/language/glil.scm (parse-glil, unparse-glil):
* module/language/glil/compile-objcode.scm (preprocess, codegen): Adapt
  to naming change.
2009-01-11 12:14:07 +01:00
Andy Wingo
c2c82b62f4 remove useless <glil-vars> helper type, serialize GHIL more strictly
* module/language/ghil.scm (parse-ghil, unparse-ghil): Rework to make the
  parse format correspond more closely with the object representation, so
  that I only have to document it once in the manual. The salient change
  is that no expression is self-quoting, and that variable references
  should go through `(ref FOO)'. Rename `set!' to `set'.

* module/language/ghil/compile-glil.scm: Add a couple of compilers for
  unquote and unquote-splicing, that just raise an error. This way I can
  document unquote and unquote-splicing as normal ghil expressions,
  except that it's the compiler that catches them if they're outside a
  quasiquote.
  (codegen): Adapt to change in <glil-asm>.

* module/language/ghil/spec.scm (parse): Fix parser typo bug.

* module/language/glil.scm (<glil-asm>): Remove useless <glil-vars>
  structure, which also had a confusing name. Just put the nargs, nrest,
  nlocs, and nexts in the <glil-asm> directly.
  (parse-glil, unparse-glil): Serialize `asm' more straightforwardly.

* module/language/glil/compile-objcode.scm (<bytespec>): Remove
  <glil-vars>, as with <glil-asm>.
  (preprocess, make-meta, codegen, dump-object!): Adapt to change in
  <glil-asm>.
2009-01-11 12:09:19 +01:00
Andy Wingo
ca445ba5ec rename translate.scm to compile-ghil.scm, and more work on compiler.texi
* doc/ref/api-evaluation.texi: Fix some typos and xrefs.

* doc/ref/compiler.texi (The Scheme Compiler): Document the scheme
  compiler, and start documenting the GHIL language.

* doc/ref/guile.texi (Guile Implementation): Whoops, put autoconf after
  the implementation foo. Unless we want it before?

* doc/ref/history.texi (The Emacs Thesis): Fix typo.

* doc/ref/vm.texi (Environment Control Instructions): Rename offset to
  index.

* module/language/ghil.scm (parse-ghil): Fix what I think was a bug --
  the consumer in a mv-call shouldn't be a rest arg.

* module/language/scheme/Makefile.am (SOURCES):
* module/language/scheme/compile-ghil.scm: Rename this file from
  translate.scm.

* module/oop/goops.scm:
* module/language/scheme/spec.scm: Deal with renaming.
2009-01-09 17:49:09 +01:00
Andy Wingo
e3ba263de4 fix some xrefs, flesh out compiler.texi a bit more
* doc/ref/api-debug.texi:
* doc/ref/vm.texi: Fix some cross-references.

* doc/ref/compiler.texi: Hack some more, finishing the section on the
  compiler tower.
2009-01-09 15:52:55 +01:00
Andy Wingo
46d666d4aa finish api-procedures.texi
* doc/ref/api-procedures.texi: Finish documenting bits on compiled
  procedures.
2009-01-09 13:28:43 +01:00
Andy Wingo
5a069042e7 more work on api-procedures.texi
* doc/ref/api-procedures.texi (Compiled Procedures): Stub out these docs
  some more, taking some commented-out docs from vm.texi.

* doc/ref/vm.texi: Move docs ^.
2009-01-08 23:46:48 +01:00
Andy Wingo
00ce512583 start at documenting the compiler
* doc/ref/api-evaluation.texi: Add documentation for the standard
  compilation interface, and some notes about compiled files.

* doc/ref/api-procedures.texi (Compiled Procedures): A stub at
  documenting compiled procedures.

* doc/ref/compiler.texi (Compiling to the Virtual Machine): Flesh out
  with some structure, though much of the text remains to be written.
  This stuff is hard to write!
2009-01-08 22:05:59 +01:00
Andy Wingo
9ff56d9e65 (language ghil def) becomes (language ghil)
* module/language/Makefile.am:
* module/language/ghil/Makefile.am:
* module/language/ghil.scm:
* module/language/ghil/compile-glil.scm:
* module/language/ghil/spec.scm:
* module/language/glil/Makefile.am:
* module/language/glil.scm:
* module/language/glil/compile-objcode.scm:
* module/language/glil/spec.scm:
* module/language/scheme/inline.scm:
* module/language/scheme/translate.scm:
* module/oop/goops.scm: Rename (language ghil def) and (language glil
  def) to not have the "def". They're nicer names.
2009-01-08 19:25:38 +01:00
Andy Wingo
d9042285ba move lang-specific modules, e.g. (system il compile) to (language ghil compile-glil)
* configure.in: Remove module/system/il directory.

* module/language/ghil/Makefile.am (SOURCES):
* module/language/ghil/compile-glil.scm (system):
* module/language/ghil/def.scm (language):
* module/language/ghil/spec.scm (language, ghil):
* module/language/glil/Makefile.am (SOURCES):
* module/language/glil/compile-objcode.scm (language):
* module/language/glil/def.scm (language):
* module/language/glil/spec.scm (language, compile):
* module/language/scheme/Makefile.am (SOURCES):
* module/language/scheme/inline.scm (system, define-inline):
* module/language/scheme/translate.scm (language): Move files, renaming
  the modules.

* module/oop/goops.scm (load-toplevel): Unfortunately the GHIL name
  leaked here. Patch it up.

* module/system/vm/Makefile.am (SOURCES): Remove assemble.scm.
2009-01-08 12:18:34 +01:00
Andy Wingo
6515a66638 react to comments by ludovic on history.texi
* doc/ref/history.texi: Adjust to some of Ludovic's comments.
2009-01-06 14:13:34 +01:00
Andy Wingo
bd7aa35f06 finish vm.texi except references
* doc/ref/vm.texi: Finish writing the VM reference, all correct except
  for the missing references.
2009-01-06 14:08:46 +01:00
Neil Jerram
dc686d7b0a NEWS entry for %fast-slot-ref/set! fix 2009-01-04 22:47:59 +00:00
Neil Jerram
a9931e4e1a Fix implementation of %fast-slot-ref and %fast-slot-set!
* libguile/goops.c (scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x):
  Correct incantation for getting the number of slots of the specified
  instance.

* libguile/goops.h (SCM_NUMBER_OF_SLOTS): Removed (because wrong).

* test-suite/standalone/test-fast-slot-ref.in: New standalone test.

* configure.in: Generate test-suite/standalone/test-fast-slot-ref.

* test-suite/standalone/Makefile.am (check_SCRIPTS): Add
  test-fast-slot-ref.
2009-01-04 22:46:47 +00:00
Andy Wingo
fb10a0084e allow `apply' on %nil-terminated lists
* libguile/vm-engine.h (PUSH_LIST): Add a parameter to check that the
  list was proper.

* libguile/vm-i-system.c: Adapt PUSH_LIST callsites to pass SCM_NULLP or
  SCM_NULL_OR_NIL_P, as appropriate. Add a check to return/values*.

* libguile/vm.c: Add lang.h header for SCM_NULL_OR_NIL_P.

* test-suite/tests/elisp.test: Fix XFAIL for elisp + apply.
2009-01-04 14:06:52 +01:00
Neil Jerram
53e4bd36f3 Update autogen.sh
* autogen.sh: Don't call guile-readline/autogen.sh; not needed because
  autoreconf recurses itself.  Remove copies of config.guess and
  config.sub, which are now invalid because we don't have those files
  in the top level directory.  Remove mention of
  --enable-maintainer-mode, as we don't use AM_MAINTAINER_MODE any
  more.
2009-01-02 23:07:37 +00:00
Ludovic Courtès
911d725439 Delete redundant `config.{guess,sub}'. 2009-01-02 23:06:47 +00:00
Andy Wingo
b1b942b74c remove heap links in VM frames, incorporate vm frames into normal backtraces
* doc/ref/vm.texi (Stack Layout): Update to remove references to the
  "heap link".

* gdbinit: Update for "heap link" removal.

* libguile/frames.c:
* libguile/frames.h: Update macros and diagram for removal of "heap
  link". As part of this, we also remove "heap frames", replacing them
  with "vm frames", which are much like the interpreter's debug objects,
  but for VM stacks. That is to say, they don't actually hold the stack
  themselves, just the pointers into stack that's held by a continuation
  (either captured or current).

* libguile/stacks.c (stack_depth, read_frames): Since a "stack" object is
  really a copy of information that comes from somewhere else, it makes
  sense to copy over info from the VM, just as `make-stack' does from the
  evaluator. The tricky bit is to figure out how to interleave VM and
  interpreter frames. We do that by starting in the interpreter, and
  whenever the current frame's procedure is actually a program, we switch
  to the VM stack, switching back when we reach a "bootstrap frame". The
  last bit is hacky, but it does work...
  (is_vm_bootstrap_frame): Hacky predicate to see if a VM frame is a
  bootstrap frame.
  (scm_make_stack): Accept a VM frame in addition to debug frames.
  Probably has some bugs in this case. But in the case that the arg is
  #t (a common case), do the right thing, capturing the top VM frame as
  well, and interleaving those frames appropriately on the stack.

  As an accident, we lost the ability to limit the number of frames in
  the backtrace. We could add that back, but personally I always want
  *all* frames in the trace... Narrowing still works fine, though there
  are some hiccups sometimes -- e.g. an outer cut to a procedure that
  does a tail-call in VM code will never find the cut, as it no longer
  exists in the continuation.

* libguile/vm.h (struct scm_vm): So! Now that we have switched to save
  stacks in the normal make-stack, there's no more need for `this_frame'
  or `last_frame'. On the other hand, we can take this opportunity to fix
  tracing: when we're in a trace hook, we set `trace_frame' on the VM,
  so we know not to fire hooks when we're already in a hook.
  (struct scm_vm_cont): Expose this, as make-stack needs it to make VM
  frames from VM continuations.

* libguile/vm.c (scm_vm_trace_frame): New function, gets the current
  trace frame.
  (vm_mark, make_vm): Hook up the trace frame.
  (vm_dispatch_hook): New hook dispatcher, with a dynwind so it does the
  right thing if the hook exits nonlocally.

* libguile/vm-engine.c (vm_run): No more this_frame in the wind data.

* libguile/vm-engine.h (RUN_HOOK): Run hooks through the dispatcher.
  (ALIGN_AS_NON_IMMEDIATE, POP_LIST_ON_STACK): Remove unused code.
  (NEW_FRAME): Adapt for no HL in the frame.

* libguile/vm-i-system.c (goto/args, mv-call, return, return/values):
  Adapt for no HL in the frame.

* module/system/vm/frame.scm:
* module/system/vm/vm.scm: Beginnings of some reworkings, needs more
  thought.
2008-12-26 18:07:20 +01:00
Andy Wingo
9f0e9918f4 repl.scm relies on `display-backtrace' to do everything, some naming tweaks
* module/ice-9/boot-9.scm (default-pre-unwind-handler): Rename from
  default-lazy-handler.
  (pre-unwind-handler-dispatch): Rename from lazy-hadler-dispatch.
  (error-catching-loop): Adjust caller.

* module/system/repl/repl.scm (default-pre-unwind-handler): Remove this
  definition, in favor of the default one in boot-9.
  (default-catch-handler): Don't do a vm-backtrace, as we will soon be
  relying on core machinery to do that for us.
  (call-with-backtrace): Start a new stack for the thunk.
  (with-backtrace): Macro version of call-with-backtrace.
  (start-repl): Use with-backtrace for brevity. Start a stack with #t as
  the tag instead of repl-eval, because all traces of repl-eval are gone
  after it does a tail-call.

* module/ice-9/debugger.scm:
* module/ice-9/debugging/traps.scm:
* module/ice-9/stack-catch.scm: Adapt to s/lazy/pre-unwind/ in
  boot-9.scm.
2008-12-26 18:07:20 +01:00
Andy Wingo
9a9f64874a add scm_c_program_source
* libguile/programs.h:
* libguile/programs.c (scm_c_program_source): New helper for getting
  source information from C.
2008-12-26 16:37:20 +01:00
Andy Wingo
e052d29640 backtrace.c: allow vectors for SCM_FRAME_SOURCE (frame)
* libguile/backtrace.c (display_backtrace_get_file_line): If the source
  is a vector, treat it as a #(line column file) vector, as emitted by
  the VM. Needs subsequent patches to make sense.
2008-12-26 16:35:43 +01:00
Andy Wingo
eff313ed21 fix doc typo
* doc/ref/data-rep.texi (Non-immediate objects): Fix a typo, thanks to
  Dale Smith.
2008-12-26 16:33:33 +01:00
Ludovic Courtès
3932190521 Fix typo in SRFI-19.
* srfi/srfi-19.scm (priv:string->date): Check for EOF on CH, not PORT.
2008-12-22 16:24:04 +01:00
Andy Wingo
d22fc3e4af remove the `late-bind' instruction
* doc/ref/vm.texi: Minor fixes.

* libguile/vm-i-loader.c: Remove the unused `late-bind' instruction.
2008-12-19 11:50:43 +01:00
Andy Wingo
090d51edb2 write history.texi
* doc/ref/vm.texi: Flesh out the VM documentation, adding a rationale.

* doc/ref/history.texi: Write the Guile history.

* doc/ref/guile.texi (Top): Some tweaks.
2008-12-19 11:24:44 +01:00
Ludovic Courtès
2898317d8b Update `INSTALL', from Automake 1.10.2. 2008-12-18 22:49:26 +01:00
Ludovic Courtès
36c66a07e5 Don't use deprecated functions in `debug-malloc.c'.
* libguile/debug-malloc.c (scm_malloc_stats): Use
  `scm_from_locale_string ()'.  Patch by Linas Vepstas
  <linasvepstas@gmail.com>.
2008-12-18 22:49:17 +01:00
Ludovic Courtès
8891556e50 srfi-19: Fix `string->date' weekday lookup.
* srfi/srfi-19.scm (priv:locale-abbr-weekday->index): Use
  `locale-day-short' since it expects integers in the range 1-7, unlike
  `priv:locale-abbr-weekday'.
  (priv:locale-long-weekday->index): Likewise.

* test-suite/tests/srfi-19.test ("SRFI date/time
  library")["string->date works on Sunday"]: New test.
2008-12-18 22:49:13 +01:00
Ludovic Courtès
c501d037b6 Fixlet for `run-benchmark.scm'.
* gc-benchmarks/run-benchmark.scm (%default-options): Default to the
  empty list for `input'.
2008-12-14 21:07:09 +01:00
Ludovic Courtès
46e17bd233 Fix typo in makefile.
* libguile/Makefile.am (DOT_X_FILES): Substitute `gettext.x' to
  `gettext.c'.
2008-12-14 20:54:18 +01:00
Ludovic Courtès
083f810fe9 Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
	lib/Makefile.am
	libguile/struct.c
	libguile/threads.c
	m4/gnulib-cache.m4
	m4/gnulib-comp.m4
2008-12-14 20:48:15 +01:00
Neil Jerram
c0c8dc84ea Ignore gds-test.debug and gds-test.transcript 2008-12-13 00:05:11 +00:00
Neil Jerram
72553cb0ce Support multiple concurrent instances of Emacs + GDS server
By:

- Making the Unix socket name unique (for each Emacs instance), by
  appending Emacs's PID to it.

- Changing the GDS server to listen on both Unix domain and TCP (and
  not to mind if the TCP bind fails, which will happen if another GDS
  instance has already bound to the TCP port number).

- Adding this unique Unix socket name to the environment (as
  GDS_UNIX_SOCKET_NAME), so that Guile clients started from inside
  Emacs can pick it up.

- Changing the GDS client code to look for GDS_UNIX_SOCKET_NAME in the
  environment, and to connect to the Unix socket with that name
  instead of over TCP.

  Guile clients started outside Emacs will not find
  GDS_UNIX_SOCKET_NAME and so will fall back to using TCP.  This means
  they will connect to whichever Emacs + GDS server instance started
  first.

* emacs/gds-server.el (gds-start-server): Take both Unix socket name
  and TCP port args, instead of just one (which could be either Unix
  or TCP), and pass these on to `run-server'.  Remove unused optional
  bufname arg.

* emacs/gds.el (gds-unix-socket-name, gds-tcp-port): New variables.
  (gds-socket-type-alist): Removed.
  (gds-run-debug-server): Pass gds-unix-socket-name and gds-tcp-port
  to gds-start-server.  Add the Unix socket name to the environment.
  (gds-server-socket-type): Note now obsolete.

* ice-9/gds-client.scm (connect-to-gds): Get Unix socket name from
  environment, and connect to this in preference to using TCP.

* ice-9/gds-server.scm (run-server): Take both Unix socket name and
  TCP port args.  Listen and accept connections on both.
2008-12-13 00:01:34 +00:00
Neil Jerram
a9408365f9 Thank people who provided reports or fixes for GDS
(while it was a standalone project)

* THANKS (R Clayton, John Steele Scott, Thomas Wawrzinek): Added.
2008-12-12 22:37:22 +00:00
Neil Jerram
2cbe132f07 Add more files that I wrote to the list in AUTHORS
* AUTHORS (Neil Jerram): Several files added.
2008-12-12 22:36:22 +00:00
Neil Jerram
1a2285752e Add GDS test and documentation files
(Transferred from the remains of the old standalone guile-debugging
project at gna.org.)

* emacs/gds-faq.txt, emacs/gds-test.el, emacs/gds-test.sh,
  emacs/gds-test.stdin, emacs/gds-tutorial.txt: New files.
2008-12-12 22:32:59 +00:00
Neil Jerram
8b08722023 Add a GDS protocol hook, that we can use for testing
* emacs/gds.el (gds-protocol-hook): New hook.
  (gds-debug-protocol): Run this hook for each received protocol form.
2008-12-11 21:40:03 +00:00
Neil Jerram
55aae98356 Revert "(scm_shell_usage): Note need for subscription to bug-guile@gnu.org."
This reverts commit f3e3f530c2, which is
appropriate because subscription is not now required for someone to
send a message to bug-guile@gnu.org.

Conflicts:
2008-12-10 19:11:28 +00:00
Neil Jerram
88f5ea45d5 Revert "Note need for subscription to bug-guile@gnu.org."
This reverts commit cbea802b37, which is
appropriate because subscription is not now required for someone to
send a message to bug-guile@gnu.org.

Conflicts:
2008-12-10 19:07:14 +00:00
Neil Jerram
9dfa64ca7f Revert "(Reporting Bugs): Note need for subscription to"
This reverts commit e563095988, which is
appropriate because subscription is not now required for someone to
send a message to bug-guile@gnu.org.

Conflicts:
2008-12-10 19:02:50 +00:00
Neil Jerram
1e45754493 Revert "* README: Note need for subscription to bug-guile@gnu.org."
This reverts commit 51d079ab0d, which is
appropriate because subscription is not now required for someone to
send a message to bug-guile@gnu.org.
2008-12-10 18:57:20 +00:00
Ludovic Courtès
83fda4707c i18n: Add comment about standardization of the `locale_t' API.
* libguile/i18n.c: Add pointer to the POSIX 2008 standardization of the
  API.
2008-12-10 11:05:50 +01:00
Ludovic Courtès
9320e93390 Fix erroneous differences in NEWS' compared to branch_release-1-8'. 2008-12-10 10:44:24 +01:00
Ludovic Courtès
96e3f63af0 configure: Check for <ltdl.h>.
* configure.in: Check for <ltdl.h>, to clarify misconfigurations.
2008-12-10 10:08:06 +01:00