mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Mirror of the upstream GNU Guile repository on Savannah.
https://www.gnu.org/software/guile/
* module/language/scheme/translate.scm (lookup-transformer): When expanding syncase macros, use the eval closure from the ghil-env. Probably doesn't make any difference whatsoever. * module/system/base/Makefile.am (SOURCES): Compile pmatch.scm, now that it works :-)) * module/system/base/compile.scm (compile-in): Compile inside a save-module-excursion, so that side effects of evaluation don't leak out. * module/system/base/pmatch.scm: Change from :use-syntax/:export-syntax to simply :use-modules/:export. Also probably has no effect. * module/system/il/ghil.scm (fix-ghil-mod!): Suppress warnings resulting from compilation of define-module. * src/vm_loader.c (link): So, referencing variables defined but not exported from the current module didn't work. Fixed that, but it's hacky. There are still some uncaught cases. |
||
---|---|---|
benchmark | ||
doc | ||
module | ||
src | ||
testsuite | ||
.cvsignore | ||
acconfig.h | ||
acinclude.m4 | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
configure.in | ||
env | ||
Makefile.am | ||
NEWS | ||
README | ||
THANKS |
This is an attempt to revive the Guile-VM project by Keisuke Nishida written back in the years 2000 and 2001. Below are a few pointers to relevant threads on Guile's development mailing list. Enjoy! Ludovic Courtès <ludovic.courtes@laas.fr>, Apr. 2005. Pointers -------- Status of the last release, 0.5 http://lists.gnu.org/archive/html/guile-devel/2001-04/msg00266.html The very first release, 0.0 http://sources.redhat.com/ml/guile/2000-07/msg00418.html Simple benchmark http://sources.redhat.com/ml/guile/2000-07/msg00425.html Performance, portability, GNU Lightning http://lists.gnu.org/archive/html/guile-devel/2001-03/msg00132.html Playing with GNU Lightning http://lists.gnu.org/archive/html/guile-devel/2001-03/msg00185.html On things left to be done http://lists.gnu.org/archive/html/guile-devel/2001-03/msg00146.html ---8<--- Original README below. ----------------------------------------- Installation ------------ 1. Install the latest Guile from CVS. 2. Install Guile VM: % configure % make install % ln -s module/{guile,system,language} /usr/local/share/guile/ 3. Add the following lines to your ~/.guile: (use-modules (system vm core) (cond ((string=? (car (command-line)) "guile-vm") (use-modules (system repl repl)) (start-repl 'scheme) (quit))) Example Session --------------- % guile-vm Guile Scheme interpreter 0.5 on Guile 1.4.1 Copyright (C) 2001 Free Software Foundation, Inc. Enter `,help' for help. scheme@guile-user> (+ 1 2) 3 scheme@guile-user> ,c -c (+ 1 2) ;; Compile into GLIL (@asm (0 1 0 0) (module-ref #f +) (const 1) (const 2) (tail-call 2)) scheme@guile-user> ,c (+ 1 2) ;; Compile into object code Disassembly of #<objcode 403c5fb0>: nlocs = 0 nexts = 0 0 link "+" ;; (+ . ???) 3 variable-ref 4 make-int8:1 ;; 1 5 make-int8 2 ;; 2 7 tail-call 2 scheme@guile-user> (define (add x y) (+ x y)) scheme@guile-user> (add 1 2) 3 scheme@guile-user> ,x add ;; Disassemble Disassembly of #<program add>: nargs = 2 nrest = 0 nlocs = 0 nexts = 0 Bytecode: 0 object-ref 0 ;; (+ . #<primitive-procedure +>) 2 variable-ref 3 local-ref 0 5 local-ref 1 7 tail-call 2 Objects: 0 (+ . #<primitive-procedure +>) scheme@guile-user> Compile Modules --------------- Use `guilec' to compile your modules: % cat fib.scm (define-module (fib) :export (fib)) (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2))))) % guilec fib.scm Wrote fib.go % guile guile> (use-modules (fib)) guile> (fib 8) 34