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

129 commits

Author SHA1 Message Date
Andy Wingo
b8076ec6cc support expression-by-expression compilation
* module/language/ghil.scm (unparse-ghil): Fix unparsing of quasiquoted
  expressions.

* module/language/ghil/spec.scm (join): Define a joiner for GHIL.

* module/language/scheme/compile-ghil.scm (cenv-ghil-env): Expand the
  definition of a CENV so it can have an actual ghil-env, if available.
  (compile-ghil): Return the actual ghil env in the cenv.

* module/system/base/compile.scm (compile-file): Rewrite. `output-file'
  is now a keyword argument, along with the new kwargs `env' and `from'.
  We now allow exceptions to propagate up, and instead of printing the
  output file to the console, we return a string corresponding to its
  location.
  (compile-and-load): Use read-and-compile.
  (compile-fold): Thread around the cenv as well. Return all three
  values.
  (find-language-joint, read-and-compile): New exciting helpers. The idea
  is that compiling a file should be semantically equivalent to compiling
  each expression in it, one by one. Compilation can have side effects,
  e.g. affecting the current language or the current reader. So what we
  do is find a point in the compilation path at which different
  expressions of a given language can be joined into one. Expressions
  from the source language are compiled to the joint language, then
  joined and compiled to the target.
  (compile): Just return the first value from compile-fold.

* module/system/base/language.scm (language-joiner): New optional field.

* scripts/compile: Rework for changes to compile-file.
2009-04-16 17:49:59 +02:00
Ludovic Courtès
73f4d8d1d2 Add -o'/--output' option to "guile-tools compile".
* module/system/base/compile.scm (compile-file): Add optional
  OUTPUT-FILE argument.

* scripts/compile (fail): New procedure.
  (%options): Add `-o'/`--output' option.
  (compile): Handle `-o'.
2009-02-21 00:38:06 +01:00
Ludovic Courtès
6d77c6efa0 Add -L'/--load-path' option to "guile-tools compile".
* scripts/compile (%options): Add `-L'/`--load-path'.
  (parse-args): Have `load-path' default to '().
  (compile): Handle `--load-path' option.
2009-02-20 16:19:12 +01:00
Ludovic Courtès
2308dce1be Change "guile-tools compile" to use SRFI-37 to process options.
* scripts/compile (%options): Rewrite in SRFI-37 style.
  (parse-args): New procedure.
  (compile): Update to SRFI-37.
2009-02-20 16:11:49 +01:00
Andy Wingo
9bb8012dd6 remove conv.scm, disasm.scm; objcode->bytecode rename
* module/system/vm/Makefile.am:
* module/system/vm/conv.scm:
* module/system/vm/disasm.scm: Remove these modules, as their
  functionality is now in (language ...).

* libguile/objcodes.h:
* libguile/objcodes.c:
* module/system/vm/objcode.scm: Rename objcode->u8vector to
  objcode->bytecode.

* module/system/vm/frame.scm:
* module/language/bytecode/spec.scm: Fix for objcode->bytecode.

* scripts/disassemble:
* testsuite/run-vm-tests.scm: Fix for (system vm disasm) removal.

* module/system/repl/command.scm: Use the right disassembler.
2009-01-30 14:36:49 +01:00
Andy Wingo
3de80ed52f recompiling with compile environments, fluid languages, cleanups
* ice-9/boot-9.scm (compile-time-environment): Remove definition from
  boot-9 -- instead, autoload it and `compile' from (system base
  compile).

* libguile/objcodes.h:
* libguile/objcodes.c (scm_objcode_to_program): Add an optional argument,
  `external', the external list to set on the returned program.

* libguile/vm-i-system.c (externals): New instruction, returns the
  external list. Only used by (compile-time-environment).

* libguile/vm.c (scm_load_compiled_with_vm): Adapt to
  scm_objcode_to_program change.

* module/language/scheme/translate.scm (translate): Actually pay
  attention to the environment passed as an argument.
  (custom-transformer-table): Expand out (compile-time-environment) to
  something that can be passed to `compile'.

* module/system/base/compile.scm (*current-language*): Instead of
  hard-coding `scheme' in various places, use a current language fluid,
  initialized to `scheme'.
  (compile-file, load-source-file): Adapt to *current-language*.
  (load-source-file): Ada
  (scheme-eval): Removed, no one used this.
  (compiled-file-name): Don't hard-code "scm" and "go"; instead use the
  %load-extensions and %load-compiled-extensions.
  (cenv-module, cenv-ghil-env, cenv-externals): Some accessors for
  compile-time environments.
  (compile-time-environment): Here we define (compile-time-environment)
  to something that will return #f; the compiler however produces
  different code as noted above.
  (compile): New function, compiles an expression into a thunk, then runs
  the thunk to get the value. Useful for procedures. The optional second
  argument can be either a module or a compile-time-environment; in the
  latter case, we can recompile even with lexical bindings.
  (compile-in): If the env specifies a module, set that module for the
  duration of the compilation.

* module/system/base/syntax.scm (%compute-initargs): Fix a bug where the
  default value for a field would always replace a user-supplied value.
  Whoops.

* module/system/il/ghil.scm (ghil-env-dereify): New function, takes the
  result of ghil-env-reify and turns it back into a GHIL environment.

* scripts/compile (compile): Remove some of the tricky error handling, as
  the library procedures handle this for us.

* test-suite/tests/compiler.test: Add a test for the dynamic compilation
  bits.
2008-10-30 10:57:36 +01:00
Andy Wingo
999f1b26e7 Merge commit 'origin/master' into vm
Conflicts:

	doc/Makefile.am
	ice-9/Makefile.am
	libguile/gc.c
2008-09-30 21:12:16 +02:00
Ludovic Courtès
61db429e25 Add `ChangeLog-2008' files to the distribution. 2008-09-12 21:57:52 +02:00
Ludovic Courtès
afb59d75b8 Rename ChangeLog' files to ChangeLog-2008'. 2008-09-12 21:49:58 +02:00
Ludovic Courtès
85ca88c68b Remove `.cvsignore' files. 2008-09-11 21:28:21 +02:00
Andy Wingo
7618201efd final de-:prefixification
* scripts/compile: Don't (read-set! keywords 'prefix) here either.
2008-09-09 07:13:14 +02:00
Andy Wingo
72f7452826 move guilec and guile-disasm to be guile-tools scripts
* .gitignore: Some touchups.

* configure.in:
* src/.cvsignore:
* src/Makefile.am:
* Makefile.am: No more src/.

* scripts/compile:
* scripts/disassemble: Moved here from src/ and changed into guile-tools
  scripts.

* scripts/Makefile.am: Add the new scriptes.

* guilec.mk: Adapt to new way of invoking the compiler.
2008-08-27 17:17:30 -07:00
Kevin Ryde
6e7d5622ee merge from 1.8 branch 2006-04-16 23:37:40 +00:00
Marius Vollmer
92205699d0 The FSF has a new address. 2005-05-23 19:57:22 +00:00
Marius Vollmer
51c45eb666 *** empty log message *** 2004-11-09 13:54:32 +00:00
Marius Vollmer
a04906d98d (process-multiline-directive): Allow the fname attribute to a sequence
of strings and append them all to form the fname.  This is needed for
string literals like "u8""vector?".
2004-11-09 13:54:22 +00:00
Marius Vollmer
0b49c6452b *** empty log message *** 2004-09-08 16:20:21 +00:00
Marius Vollmer
be2540fa56 (scripts_sources): Added snarf-guile-m4-docs. 2004-09-08 16:18:29 +00:00
Kevin Ryde
6002ebaf0e *** empty log message *** 2004-08-06 00:04:14 +00:00
Kevin Ryde
6c60ac51ed (parse-message): Correction to header
continuation, loop with read-line not cdr lines.
2004-08-06 00:03:11 +00:00
Rob Browning
b2cbe8d8a2 *** empty log message *** 2002-12-09 00:51:53 +00:00
Rob Browning
c0784b410b * Makefile.am (subpkgdatadir): VERSION -> GUILE_EFFECTIVE_VERSION. 2002-12-09 00:46:01 +00:00
Neil Jerram
daeea2a9fb Make (scripts lint) announce resolved module name. 2002-10-26 18:58:17 +00:00
Marius Vollmer
5e405a6055 *** empty log message *** 2002-10-05 11:57:41 +00:00
Marius Vollmer
f4e093308a (end-multiline): Use '*function-name*' instead of nonexisting 'name'. 2002-10-05 11:57:35 +00:00
Rob Browning
9bc548798d *** empty log message *** 2002-10-05 04:21:04 +00:00
Rob Browning
201e7da791 * summarize-guile-TODO (as-leaf): make #\: a char-set. 2002-10-05 04:11:51 +00:00
Thien-Thi Nguyen
9664b7ef6e *** empty log message *** 2002-05-19 05:12:42 +00:00
Thien-Thi Nguyen
ef018514da (group-diff): Also output +N and -N adds and subs details, respectively. 2002-05-19 05:12:04 +00:00
Thien-Thi Nguyen
713526ad21 *** empty log message *** 2002-05-13 21:45:57 +00:00
Thien-Thi Nguyen
e4af2baf8e (scan-api): No longer include timestamp. 2002-05-13 21:45:12 +00:00
Thien-Thi Nguyen
faa2075ab1 *** empty log message *** 2002-05-13 10:14:42 +00:00
Thien-Thi Nguyen
3a56374157 (scripts_sources): Add api-diff and read-rfc822. 2002-05-13 10:14:06 +00:00
Thien-Thi Nguyen
a8aa1fc1a9 *** empty log message *** 2002-05-13 10:12:48 +00:00
Thien-Thi Nguyen
57737e2449 Initial revision. 2002-05-13 10:12:14 +00:00
Thien-Thi Nguyen
9a9500ad2c *** empty log message *** 2002-05-12 03:47:32 +00:00
Thien-Thi Nguyen
4ab4e780c6 Use modules (ice-9 format), (ice-9 getopt-long).
Autoload module (srfi srfi-13).
No longer export `diff-alists'.

(diff, diff-alists, display-list): Remove.
(put, get, read-api-alist-file, hang-by-the-roots, diff?,
diff+note!, group-diff): New.
(api-diff): Rewrite.
2002-05-12 03:46:26 +00:00
Thien-Thi Nguyen
717bd14812 *** empty log message *** 2002-05-11 19:46:12 +00:00
Thien-Thi Nguyen
94a972ac31 (scan-api): Fix bug: No longer omit C' and Scheme' in
groups in the presence of the grouper.
2002-05-11 19:45:27 +00:00
Thien-Thi Nguyen
54352a3464 *** empty log message *** 2002-05-10 22:18:33 +00:00
Thien-Thi Nguyen
e366d58b79 (add-props): New proc.
(make-grok-proc): Renamed from `make-grok-hook'.
(make-members-proc): Renamed from `make-members-hook'.
(make-grouper): Renamed from `make-grouping-hook'.  Update callers.
Add handling for multiple grouping-defs files.
(scan-api): Add handling for multiple grouping-defs files.
Cache `symbol->string' result; adjust `sort' usage.
2002-05-10 22:17:39 +00:00
Thien-Thi Nguyen
06dba652b0 *** empty log message *** 2002-05-09 16:28:22 +00:00
Thien-Thi Nguyen
94173d5f20 (scan-C!): Use more robust regexp. 2002-05-09 16:27:40 +00:00
Thien-Thi Nguyen
4c2657ed73 *** empty log message *** 2002-05-08 20:20:45 +00:00
Thien-Thi Nguyen
73b8d652ef Remove top-level `debug-enable' form. 2002-05-08 20:19:22 +00:00
Thien-Thi Nguyen
d1d0c7afa2 Add TODO comment; nfc. 2002-05-08 20:18:12 +00:00
Thien-Thi Nguyen
b6c7676343 *** empty log message *** 2002-05-08 13:01:29 +00:00
Thien-Thi Nguyen
d29388060b (scan-api): Handle case where `grouping-hook' is #f. 2002-05-08 13:00:57 +00:00
Thien-Thi Nguyen
2b080aed49 *** empty log message *** 2002-05-08 12:50:22 +00:00
Thien-Thi Nguyen
ac898f8dc4 (scripts_sources): Add "scan-api". 2002-05-08 12:50:01 +00:00