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

*** empty log message ***

This commit is contained in:
Keisuke Nishida 2001-04-07 12:29:06 +00:00
parent c4c8c433b9
commit 0b5437c988
7 changed files with 50 additions and 52 deletions

View file

@ -1,3 +1,7 @@
2001-04-07 Keisuke Nishida <kxn30@po.cwru.edu>
* Version 0.4 is released.
2000-08-20 Keisuke Nishida <kxn30@po.cwru.edu> 2000-08-20 Keisuke Nishida <kxn30@po.cwru.edu>
* Version 0.2 is released. * Version 0.2 is released.

86
README
View file

@ -1,77 +1,67 @@
Installation Installation
------------ ------------
% ./autogen.sh 1. Install the latest Guile from CVS.
2. Install slib.
3. Install Guile VM:
% configure % configure
% make % make install
% su % ln -s module/{system,language} /usr/local/share/guile/site/
# make install
# ln -s module/{system,language} /usr/local/share/guile/site/
Add the following lines to your ~/.guile: 4. Add the following lines to your ~/.guile:
(if (string=? (car (command-line)) "guile-vm") (cond ((string=? (car (command-line)) "guile-vm")
(begin (use-modules (system repl repl))
(use-modules (system repl repl)) (start-repl 'gscheme)
(start-repl 'r5rs) (quit)))
(quit)))
Example Session Example Session
--------------- ---------------
% guile-vm % guile-vm
Standard Scheme (R5RS + syntax-case) interpreter 0.3 on Guile 1.4.1 Guile Scheme interpreter 0.4 on Guile 1.4.1
Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 2001 Free Software Foundation, Inc.
Enter `,help' for help. Enter `,help' for help.
r5rs@guile> (+ 1 2) gscheme@guile> (+ 1 2)
$1 = 3 $1 = 3
r5rs@guile> ,c -c (+ 1 2) ;; Compile into GLIL gscheme@guile> ,c -c (+ 1 2) ;; Compile into GLIL
(@asm (0 0 0 0) (@asm (0 0 0 0)
(const 1) (const 1)
(const 2) (const 2)
(add) (add 2)
(return)) (return 0))
r5rs@guile> ,c -l (+ 1 2) ;; Compile into loadable code gscheme@guile> ,c (+ 1 2) ;; Compile into bootcode
0 make-int8:0 ;; 0 Disassembly of bootcode:
1 load-program #0
8 return
Bytecode #0: Compiled for Guile VM 0.4
0 make-int8:1 ;; 1 nlocs = 0 nexts = 0
1 make-int8 2 ;; 2
0 make-int8:1 ;; 1
1 make-int8 2 ;; 2
3 add 3 add
4 return 4 return
r5rs@guile> ,c (+ 1 2) ;; Compile and disassemble gscheme@guile>
Disassembly of #<program 0x810f75b>: gscheme@guile> (add 1 2)
args = 0 rest = 0 locals = 0
Bytecode:
0 make-int8:1 ;; 1
1 make-int8 2 ;; 2
3 add
4 return
r5rs@guile> (define (add x y) (+ x y))
r5rs@guile> (add 1 2)
$2 = 3 $2 = 3
r5rs@guile> ,x add ;; Disassemble gscheme@guile> ,x add ;; Disassemble
Disassembly of #<program 0x8125f70>: Disassembly of #<program add>:
args = 2 rest = 0 locals = 0 nargs = 2 nrest = 0 nlocs = 0 nexts = 0
Bytecode: Bytecode:
0 local-ref 1 0 local-ref 0
2 local-ref:0 2 local-ref 1
3 add 4 add
4 return 5 return
r5rs@guile> gscheme@guile>
Write Modules Write Modules
------------- -------------
@ -81,10 +71,10 @@ Write Modules
:use-module (system vm load) :use-module (system vm load)
:export (fib)) :export (fib))
(load/compile "fib.gsm") (load/compile "fib.gs")
---------------------------------------- ----------------------------------------
---- fib.gsm --------------------------- ---- fib.gs ----------------------------
(define (fib n) (define (fib n)
(if (< n 2) (if (< n 2)
1 1
@ -98,7 +88,7 @@ executed by the Guile VM:
guile> (use-modules (fib)) guile> (use-modules (fib))
guile> (time (fib 30)) guile> (time (fib 30))
clock utime stime cutime cstime gctime clock utime stime cutime cstime gctime
2.89 2.88 0.00 0.00 0.00 0.00 2.80 2.79 0.00 0.00 0.00 0.00
$1 = 1346269 $1 = 1346269
guile> (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2))))) guile> (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
guile> (time (fib 30)) guile> (time (fib 30))

2
THANKS
View file

@ -1 +1 @@
Guile VM was motivated by QScheme and librep. Guile VM was inspired by QScheme, librep, and Objective Caml.

View file

@ -1,5 +1,5 @@
AC_INIT(src/guile-vm.c) AC_INIT(src/guile-vm.c)
AM_INIT_AUTOMAKE(guile-vm, 0.3) AM_INIT_AUTOMAKE(guile-vm, 0.4)
AM_CONFIG_HEADER(src/config.h) AM_CONFIG_HEADER(src/config.h)
GUILE_FLAGS GUILE_FLAGS

View file

@ -0,0 +1,4 @@
dist-hook:
mkdir $(distdir)/module
$(TAR) cf - --exclude=CVS $(srcdir)/language $(srcdir)/system \
| (cd $(distdir)/module; $(TAR) xf -)

View file

@ -123,7 +123,7 @@
(define-language gscheme (define-language gscheme
:title "Guile Scheme" :title "Guile Scheme"
:version "0.3" :version "0.4"
:reader read :reader read
:expander expand :expander expand
:translator translate :translator translate

View file

@ -30,7 +30,7 @@
(compiled (object-file-name file))) (compiled (object-file-name file)))
(if (or (not (file-exists? compiled)) (if (or (not (file-exists? compiled))
(> (stat:mtime (stat file)) (stat:mtime (stat compiled)))) (> (stat:mtime (stat file)) (stat:mtime (stat compiled))))
(compile-file-in file #f (lookup-language 'gscheme) :O)) (compile-file-in file #f (lookup-language 'gscheme) #:O))
(let ((bytes (make-uniform-vector (stat:size (stat compiled)) #\a))) (let ((bytes (make-uniform-vector (stat:size (stat compiled)) #\a)))
(call-with-input-file compiled (call-with-input-file compiled
(lambda (p) (uniform-vector-read! bytes p))) (lambda (p) (uniform-vector-read! bytes p)))