Git Product home page Git Product logo

chezscheme's People

Contributors

abmclin avatar akeep avatar alshopov avatar bogdanp avatar burgerrg avatar cjfrisz avatar combinatorylogic avatar dybvig avatar fitzgen avatar gavwhela avatar gus-massa avatar gwatt avatar jarhmander avatar jltaylor-us avatar jryans avatar kleinpa avatar krrrcks avatar liberalartist avatar maoif avatar melted avatar mflatt avatar michaellenaghan avatar mohd-akram avatar owaddell avatar owaddell-beckman avatar payneca avatar samth avatar symingz avatar yjqww6 avatar yunlingz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chezscheme's Issues

The #chez channel now exists on Freenode; please bless it

IRC users now have a channel #chez on Freenode, which technically should be called ##chez because it is unofficial. Please leave a comment blessing it as official so that we can point to this if Freenode staff ask us. Thanks.

unable to compile in centos 7 with gcc 5.3.1

Hello
After execute commands listed below
git clone --recursive https://github.com/cisco/ChezScheme.git
cd ChezScheme
./configure
make install

I got following messages:
Mf-base:447: recipe for target 'bootall' failed Mf-base:146: recipe for target 'allx' failed Mf-base:157: recipe for target 'bootstrap' failed Makefile:20: recipe for target 'build' failed Makefile:22: recipe for target 'install' failed
my gcc version is 5.3.1, it is a virtual machine with centos 7 installed.

I don't know what's wrong here, is it dependencies missing or some other issue?

please find attached full version of make install output
error_log.txt

mats/summary vs ta6le/mats/summary

Currently make test prints the following as its last line:

test run complete.  check mats/summary for error

However, mats/summary does not exist. The user actually needs to check something like ta6le/mats/summary. While it is a small usability improvement, it would be nice if make test printed the actual filename or at the very least hinted that there is an extra directory layer.

Can't build csug

It seems that Makefile of csug uses an author specified path ~/stex/Mf-stex, which is improper for some users. I always put source code to ~/Project. Couldn't stex be a submodule in the Chez repo?

while building: executable cannot find nanopass in source tree (a6le)

Still no joy building on my x86_64-slackware-linux-gnu.

$ git branch
* master
$ git log | head -3
commit 65df1d1f7c37f5b5a93cd7e5b475dda9dbafe03c
Author: dybvig <[email protected]>
Date:   Fri May 6 23:04:44 2016 -0400
$ make clean
...
$ make distclean
...
$ cat ~/var/tmp/build-chez-scheme.sh 
#!/bin/bash
#
# Informal build script for Chez Scheme

./configure --installprefix=/opt/chez-scheme --installowner=root --installgroup=root
make

### end of file
$ ~/var/tmp/build-chez-scheme.sh 
(cd a6le && make build)
(cd c ; make)
ln -s ../../c/statics.c statics.c
ln -s ../../c/system.h system.h
ln -s ../../c/types.h types.h
ln -s ../../c/version.h version.h
ln -s ../../c/externs.h externs.h
ln -s ../../c/globals.h globals.h
ln -s ../../c/segment.h segment.h
ln -s ../../c/thread.h thread.h
ln -s ../../c/sort.h sort.h
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib statics.c
ln -s ../../c/segment.c segment.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib segment.c
ln -s ../../c/alloc.c alloc.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib alloc.c
ln -s ../../c/symbol.c symbol.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib symbol.c
ln -s ../../c/intern.c intern.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib intern.c
ln -s ../../c/gcwrapper.c gcwrapper.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib gcwrapper.c
ln -s ../../c/gc-ocd.c gc-ocd.c
ln -s ../../c/gc.c gc.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib gc-ocd.c
ln -s ../../c/gc-oce.c gc-oce.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib gc-oce.c
ln -s ../../c/number.c number.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib number.c
ln -s ../../c/schsig.c schsig.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib schsig.c
ln -s ../../c/io.c io.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib io.c
ln -s ../../c/new-io.c new-io.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib new-io.c
ln -s ../../c/print.c print.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib print.c
ln -s ../../c/fasl.c fasl.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib fasl.c
ln -s ../../c/stats.c stats.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib stats.c
ln -s ../../c/foreign.c foreign.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib foreign.c
ln -s ../../c/prim.c prim.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib prim.c
ln -s ../../c/prim5.c prim5.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib prim5.c
ln -s ../../c/flushcache.c flushcache.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib flushcache.c
ln -s ../../c/schlib.c schlib.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib schlib.c
ln -s ../../c/thread.c thread.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib thread.c
ln -s ../../c/expeditor.c expeditor.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib expeditor.c
ln -s ../../c/scheme.c scheme.c
ln -s ../../c/itest.c itest.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib scheme.c
ln -s ../../c/i3le.c i3le.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib i3le.c
(cd ../zlib; CFLAGS=-m64 ./configure --64)
Checking for gcc...
Checking for shared library support...
Building shared library libz.so.1.2.8 with gcc.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
(cd ../zlib; make)
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o adler32.o adler32.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o crc32.o crc32.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o deflate.o deflate.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o infback.o infback.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inffast.o inffast.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inflate.o inflate.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inftrees.o inftrees.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o trees.o trees.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o zutil.o zutil.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o compress.o compress.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o uncompr.o uncompr.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzclose.o gzclose.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzlib.o gzlib.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzread.o gzread.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzwrite.o gzwrite.c
ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o 
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o -L. libz.a
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o minigzip.o test/minigzip.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip minigzip.o -L. libz.a
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/adler32.o adler32.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/crc32.o crc32.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/deflate.o deflate.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/infback.o infback.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inffast.o inffast.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inflate.o inflate.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inftrees.o inftrees.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/trees.o trees.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/zutil.o zutil.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/compress.o compress.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/uncompr.o uncompr.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzclose.o gzclose.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzlib.o gzlib.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzread.o gzread.c
gcc -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzwrite.o gzwrite.c
gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -m64  -fPIC -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.8 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc 
rm -f libz.so libz.so.1
ln -s libz.so.1.2.8 libz.so
ln -s libz.so.1.2.8 libz.so.1
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o -L. libz.so.1.2.8
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o -L. libz.so.1.2.8
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o -L. libz.a
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c
gcc -m64  -m64 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o -L. libz.a
ld -melf_x86_64 -r -X -o ../boot/a6le/kernel.o statics.o segment.o alloc.o symbol.o intern.o gcwrapper.o gc-ocd.o gc-oce.o number.o schsig.o io.o new-io.o print.o fasl.o stats.o foreign.o prim.o prim5.o flushcache.o schlib.o thread.o expeditor.o scheme.o i3le.o ../zlib/libz.a
ln -s ../../c/main.c main.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -c -DX86_64 -I../boot/a6le -I../zlib main.c
cp -p main.o ../boot/a6le/main.o
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -rdynamic -o ../bin/a6le/scheme ../boot/a6le/kernel.o ../boot/a6le/main.o -lm -ldl -lncurses -lrt -liconv
(cd s ; make bootstrap)
ln -s ../../s/library.ss library.ss
ln -s ../../s/prims.ss prims.ss
ln -s ../../s/mathprims.ss mathprims.ss
ln -s ../../s/record.ss record.ss
ln -s ../../s/5_1.ss 5_1.ss
ln -s ../../s/5_2.ss 5_2.ss
ln -s ../../s/5_3.ss 5_3.ss
ln -s ../../s/strnum.ss strnum.ss
ln -s ../../s/bytevector.ss bytevector.ss
ln -s ../../s/5_4.ss 5_4.ss
ln -s ../../s/5_6.ss 5_6.ss
ln -s ../../s/5_7.ss 5_7.ss
ln -s ../../s/event.ss event.ss
ln -s ../../s/4.ss 4.ss
ln -s ../../s/front.ss front.ss
ln -s ../../s/foreign.ss foreign.ss
ln -s ../../s/6.ss 6.ss
ln -s ../../s/print.ss print.ss
ln -s ../../s/newhash.ss newhash.ss
ln -s ../../s/format.ss format.ss
ln -s ../../s/date.ss date.ss
ln -s ../../s/7.ss 7.ss
ln -s ../../s/cafe.ss cafe.ss
ln -s ../../s/trace.ss trace.ss
ln -s ../../s/engine.ss engine.ss
ln -s ../../s/interpret.ss interpret.ss
ln -s ../../s/cprep.ss cprep.ss
ln -s ../../s/cpcheck.ss cpcheck.ss
ln -s ../../s/cp0.ss cp0.ss
ln -s ../../s/cpvalid.ss cpvalid.ss
ln -s ../../s/cpletrec.ss cpletrec.ss
ln -s ../../s/inspect.ss inspect.ss
ln -s ../../s/enum.ss enum.ss
ln -s ../../s/io.ss io.ss
ln -s ../../s/read.ss read.ss
ln -s ../../s/primvars.ss primvars.ss
ln -s ../../s/syntax.ss syntax.ss
ln -s ../../s/costctr.ss costctr.ss
ln -s ../../s/expeditor.ss expeditor.ss
ln -s ../../s/exceptions.ss exceptions.ss
ln -s ../../s/pretty.ss pretty.ss
ln -s ../../s/env.ss env.ss
ln -s ../../s/fasl.ss fasl.ss
ln -s ../../s/reloc.ss reloc.ss
ln -s ../../s/pdhtml.ss pdhtml.ss
ln -s ../../s/strip.ss strip.ss
ln -s ../../s/ftype.ss ftype.ss
ln -s ../../s/back.ss back.ss
ln -s ../../s/cpnanopass.ss cpnanopass.ss
ln -s ../../s/compile.ss compile.ss
ln -s ../../s/cback.ss cback.ss
ln -s ../../s/cmacros.ss cmacros.ss
ln -s ../../s/x86_64.ss x86_64.ss
ln -s ../../s/setup.ss setup.ss
ln -s ../../s/debug.ss debug.ss
ln -s ../../s/priminfo.ss priminfo.ss
ln -s ../../s/primdata.ss primdata.ss
ln -s ../../s/layout.ss layout.ss
ln -s ../../s/base-lang.ss base-lang.ss
ln -s ../../s/expand-lang.ss expand-lang.ss
ln -s ../../s/primref.ss primref.ss
ln -s ../../s/types.ss types.ss
ln -s ../../s/io-types.ss io-types.ss
ln -s ../../s/fasl-helpers.ss fasl-helpers.ss
ln -s ../../s/hashtable-types.ss hashtable-types.ss
ln -s ../../s/np-languages.ss np-languages.ss
make allx
rm -f *.a6le xpatch patch *.patch *.so *.asm script.all header.tmp *.html
rm -rf nanopass
cp -p -f ../boot/a6le/petite.boot ../boot/a6le/sbb
cp -p -f ../boot/a6le/scheme.boot ../boot/a6le/scb
make all
echo '(reset-handler abort)'\
             '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
             '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
             '(optimize-level 3)'\
             '(debug-level 0)'\
             '(generate-inspector-information #f)'\
             '(subset-mode (quote system))'\
             '(compile-file "cmacros.ss" "cmacros.so")'\
             | ../bin/a6le/scheme -q
compiling cmacros.ss with output to cmacros.so
echo '(reset-handler abort)'\
             '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
             '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
             '(optimize-level 3)'\
             '(debug-level 0)'\
             '(generate-inspector-information #f)'\
             '(subset-mode (quote system))'\
             '(compile-file "priminfo.ss" "priminfo.so")'\
             | ../bin/a6le/scheme -q cmacros.so
compiling priminfo.ss with output to priminfo.so
echo '(reset-handler abort)'\
             '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
     '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
             '(optimize-level 3)'\
             '(debug-level 0)'\
             '(generate-inspector-information #f)'\
             '(subset-mode (quote system))'\
             '(compile-file "primvars.ss" "primvars.so")'\
             | ../bin/a6le/scheme -q cmacros.so priminfo.so
compiling primvars.ss with output to primvars.so
echo '(reset-handler abort)'\
             '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
     '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
             '(optimize-level 3)'\
             '(debug-level 0)'\
             '(generate-inspector-information #f)'\
             '(subset-mode (quote system))'\
             '(compile-file "env.ss" "env.so")'\
             | ../bin/a6le/scheme -q cmacros.so priminfo.so
compiling env.ss with output to env.so
echo '(reset-handler abort)'\
             '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
     '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
             '(optimize-level 3)'\
             '(debug-level 0)'\
             '(generate-inspector-information #f)'\
             '(subset-mode (quote system))'\
             '(compile-file "setup.ss" "setup.so")'\
             | ../bin/a6le/scheme -q cmacros.so priminfo.so
compiling setup.ss with output to setup.so
echo '(reset-handler abort)'\
             '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
             '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
             '(optimize-level 3)'\
             '(debug-level 0)'\
             '(generate-inspector-information #f)'\
             '(collect-trip-bytes (expt 2 24))'\
             '(collect-request-handler (lambda () (collect 0 1)))'\
             '(collect 1 2)'\
             '(compile-library "../nanopass/nanopass.ss" "nanopass.so")'\
             | ../bin/a6le/scheme -q --libdirs "../nanopass::." --compile-imported-libraries
compiling ../nanopass/nanopass.ss with output to nanopass.so
Exception: library (nanopass language) not found
make[4]: *** [nanopass.so] Error 255
make[3]: *** [allx] Error 2
make[2]: *** [bootstrap] Error 2
make[1]: *** [build] Error 2
make: *** [build] Error 2
$ ls nanopass
Acknowledgements  Copyright  LOG  ReadMe.md  TODO  bin  doc  lib  nanopass  nanopass.chezscheme.sls  nanopass.ss  test-all.ss  tests
$ ls nanopass/nanopass
helpers.ss                             implementation-helpers.vicare.sls  language.ss              nano-syntax-dispatch.ss  records.ss
implementation-helpers.chezscheme.sls  language-helpers.ss                meta-parser.ss           parser.ss                syntaxconvert.ss
implementation-helpers.ikarus.ss       language-node-counter.ss           meta-syntax-dispatch.ss  pass.ss                  unparser.ss
$ 

thread is blocked unexpectly

I tried to embed chez scheme to a program and created a thread running a loop. But after a short while, the thread was blocked unexpectly and left the work unfinished.

I try simplified code in repl, and similar things happened.
As follow, after the first time I check a's value, I found it increase similar numbers each time I check it no matter how long I wait. More exactly, it depends on how many times I input things to the repl. The CPU usage is always 0%.

> (fork-thread (lambda () (let loop ([i 0]) (set! a i) (loop (+ i 1)))))
#<thread 1>
> a
537411480
> a
537900424
> a
538421584
> a
538945213
> a
539470650
> a
539994892

Is there a way to avoid this?

I use a 32-bit threaded version In Windows 7.

Boot path doesn't account for non-standard install locations

First off, 🎉 ! I'm so excited to see this repo and this license.

Once I silenced warnings just enough to get built, I ran into the issue when using a non-standard install path:

% ./configure --installprefix=/usr/local/ChezScheme
% make install
...
% /usr/local/ChezScheme/bin/scheme
% /usr/local/ChezScheme/bin/scheme
cannot find compatible scheme.boot in search path
  "/Users/acfoltzer/lib/csv%v/%m:/usr/lib/csv%v/%m:/usr/local/lib/csv%v/%m"

If I specify the boot path manually, the compiler starts fine.

#e1@1 returns inexact result

Returns 0.5403023058681398+0.8414709848078965i instead of
1216652631687587/2251799813685248+3789648413623927/4503599627370496i

First detected on Windows with 8.4, and retested on Linux with 9.4.

may not want Xlib

After configure and make, I'm getting this error complaining that I don't have Xlib on my mac. I needed to install XQuartz for it to build.

Chez Scheme is a compiler. It may be confusing that the build includes graphics stuff by default. Many people may not want to have X11 on the mac, so maybe it's good to have an option to skip the build of X11 related things?

Or even better, the configure script can check whether the user have X11 and skip the build for that part if they don't have it.

gcc -m64 -Wpointer-arith -Wall -Wextra -O2 -I/opt/X11/include/ -c -DX86_64 -I../boot/a6osx -I../zlib expeditor.c
expeditor.c:846:10: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
         ^
1 error generated.

import in REPL

Hi,

I'm trying to use SRFI-26 from https://github.com/arcfide/chez-srfi. Using import in the REPL doesn't work as I would expect from the documentation:

(import (srfi :26))
((cut + 1 <>) 1)
Exception: incorrect argument count in call ((lambda () (+ 1 <>)) 1)
Type (debug) to enter the debugger.

However, if I wrap it in a top-level-program form it does work.

(top-level-program
(import (rnrs) (srfi :26))
(display ((cut + 1 <>) 1))
(newline))
2

Is something special required to use import in the REPL?

Thanks,
Fede

Poor performance when dealing with multi-precision numbers

  • The test Program:

;; the fib iterative
(import (rnrs))

(define (fib n)
(define (iter a b c)
(cond ((= c 0) b)
(#t (iter (+ a b) a (- c 1)))))
(iter 1 0 n)
)

(display (fib 1000000))

  • Run with Chez:

Chez Scheme Version 9.4
Copyright 1984-2016 Cisco Systems, Inc.

$ time scheme --program fib.scm >/dev/null

real 0m23.007s
user 0m22.956s
sys 0m0.076s

  • Run with vicare
    Vicare Scheme version 0.4d0, 64-bit
    Build 2015-10-19

Copyright (c) 2006-2010 Abdulaziz Ghuloum and contributors
Copyright (c) 2011-2015 Marco Maggi and contributors

$ time vicare fib.scm >/dev/null

real 0m6.372s
user 0m5.900s
sys 0m0.468s

cannot open file 'csv94.dll'

I have to create bin/$mfolder under ChezScheme,if not I'll get this error:
LINK : fatal error LNK1104: cannot open file 'csv94.dll' NMAKE : fatal error U1077: 'link.exe' : return code '0x450'
build under windows10 x64, $m=a6nt
Am I did it in a wrong way?

load-shared-object has (no?) effect in library definition

`
; the library code "linux/abc.ss"
(library (linux abc)
(export getenv1)
(import (chezscheme)
(rnrs bytevectors))

(define getenv1
(foreign-procedure "getenv" (string) string)
)

(begin
(load-shared-object "libc.so.6")) ;; seems putting load-shared-object here has no effect
)
`

the test code:
;; the test code
`
(import (linux abc))

(display (getenv1 "HOME"))

`
;; the error message:
Exception in foreign-procedure: no entry for "getenv"

The behavior of Chez is (maybe) different to r6rs :

http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-10.html#node_sec_7.1

The is the library body, consisting of a sequence of definitions followed by a sequence of expressions. The definitions may be both for local (unexported) and exported bindings, and the expressions are initialization expressions to be evaluated for their effects.

Consider hosting csug somewhere

scheme.com has docs up to version 8.4. Obviously a lot has happened since then. It would be great if the docs for the most recent version—and, ideally, any intervening versions—were hosted there or elsewhere. (The point isn't so much that the intervening versions would be of great use today, it's that going forward people may lag, and it's nice to be able to find the docs for the version you're actually using. So as general policy it would be nice if all versions were hosted, past or future.)

Mats tests fail

This is on Linux with gcc 6.0.0, the same conditions as issue #1. The contains of a6le/mats/summary is:

-------- o=0 --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 cp0=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 cp0=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 spi=t p=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 spi=t p=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 cp0=t eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 cp0=t eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 ehc=t eoc=f --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 ehc=t eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms

I can supply additional files if needed.

bootstrapping on BSD?

Hello, thank you so much for releasing this!

I am using OpenBSD and I was studying the makefiles and such to try to cross compiler or bootstrap it from a binary off http://www.scheme.com/download/

I'm not having any success though! The petite chez scheme does not run (I think it built for an older version).

Would it be possible to release files to allow bootstrap or cross compile for openbsd?

char->integer or read-char Issues

I defined a procedure read-byte and try to parsing a JPEG file in Chez.

    (define (read-byte . opt)
      (let ((c (apply read-char opt)))
        (if (eof-object? c) c (char->integer c))))

The bytes like ff d8 ff e1 always return numbers: 65533 65533 65533 65533 ....

A byte maximum is FF, equal to 255, How is 65533?

> (char->integer (integer->char 255))
255

The same code runs correctly in Larceny

> (define ip (open-input-file "1.jpg"))
> (define (read-byte . opt)
      (let ((c (apply read-char opt)))
        (if (eof-object? c) c (char->integer c))))
read-byte

> (read-byte ip)
255

> (read-byte ip)
216

> (read-byte ip)
255

> (read-byte ip)
225

Compile Error: ignoring return value of ‘write’

I get the error ignoring return value of ‘write’, declared with attribute warn_unused_result when compiling Chez Scheme.

My system information is as follows:

 $ uname -a
Linux spiritus 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (Ubuntu 5.3.1-14ubuntu2) 5.3.1 20160413
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The compilation process produces the following:

$ ./configure --threads
Submodule 'nanopass' (https://github.com/nanopass/nanopass-framework-scheme.git) registered for path 'nanopass'
Submodule 'zlib' (https://github.com/madler/zlib.git) registered for path 'zlib'
Cloning into 'nanopass'...
remote: Counting objects: 607, done.
remote: Total 607 (delta 0), reused 0 (delta 0), pack-reused 607
Receiving objects: 100% (607/607), 26.69 MiB | 4.74 MiB/s, done.
Resolving deltas: 100% (318/318), done.
Checking connectivity... done.
Submodule path 'nanopass': checked out '221eecb965d9dfacccd97d1cb73f2a31c4119d3a'
Cloning into 'zlib'...
remote: Counting objects: 4370, done.
remote: Total 4370 (delta 0), reused 0 (delta 0), pack-reused 4370
Receiving objects: 100% (4370/4370), 2.43 MiB | 1.28 MiB/s, done.
Resolving deltas: 100% (2979/2979), done.
Checking connectivity... done.
Submodule path 'zlib': checked out '50893291621658f355bc5b4d450a8d06a563053d'
$ make
(cd ta6le && make build)
(cd c ; make)
ln -s ../../c/statics.c statics.c
ln -s ../../c/system.h system.h
ln -s ../../c/types.h types.h
ln -s ../../c/version.h version.h
ln -s ../../c/externs.h externs.h
ln -s ../../c/globals.h globals.h
ln -s ../../c/segment.h segment.h
ln -s ../../c/thread.h thread.h
ln -s ../../c/sort.h sort.h
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib statics.c
ln -s ../../c/segment.c segment.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib segment.c
ln -s ../../c/alloc.c alloc.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib alloc.c
ln -s ../../c/symbol.c symbol.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib symbol.c
ln -s ../../c/intern.c intern.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib intern.c
ln -s ../../c/gcwrapper.c gcwrapper.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib gcwrapper.c
ln -s ../../c/gc-ocd.c gc-ocd.c
ln -s ../../c/gc.c gc.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib gc-ocd.c
ln -s ../../c/gc-oce.c gc-oce.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib gc-oce.c
ln -s ../../c/number.c number.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib number.c
ln -s ../../c/schsig.c schsig.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib schsig.c
ln -s ../../c/io.c io.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib io.c
ln -s ../../c/new-io.c new-io.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib new-io.c
ln -s ../../c/print.c print.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib print.c
ln -s ../../c/fasl.c fasl.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib fasl.c
ln -s ../../c/stats.c stats.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib stats.c
ln -s ../../c/foreign.c foreign.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib foreign.c
ln -s ../../c/prim.c prim.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib prim.c
ln -s ../../c/prim5.c prim5.c
gcc -m64 -msse2 -Wpointer-arith -Wall -Wextra -Werror -O2 -D_REENTRANT -pthread -c -DX86_64 -I../boot/ta6le -I../zlib prim5.c
In file included from system.h:23:0,
                 from prim5.c:17:
prim5.c: In function ‘s_backdoor_thread’:
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S)); }
                                           ^
prim5.c:1342:3: note: in expansion of macro ‘display’
   display("creating thread\n");
   ^
prim5.c: In function ‘s_backdoor_thread_start’:
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S)); }
                                           ^
prim5.c:1327:3: note: in expansion of macro ‘display’
   display("backdoor thread started\n")
   ^
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S)); }
                                           ^
prim5.c:1329:3: note: in expansion of macro ‘display’
   display("thread activated\n")
   ^
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S)); }
                                           ^
prim5.c:1332:3: note: in expansion of macro ‘display’
   display("thread deactivated\n")
   ^
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S)); }
                                           ^
prim5.c:1334:3: note: in expansion of macro ‘display’
   display("thread reeactivated\n")
   ^
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S)); }
                                           ^
prim5.c:1337:3: note: in expansion of macro ‘display’
   display("thread destroyed\n")
   ^
cc1: all warnings being treated as errors
Makefile:29: recipe for target 'prim5.o' failed
make[2]: *** [prim5.o] Error 1
Makefile:19: recipe for target 'build' failed
make[1]: *** [build] Error 2
Makefile:19: recipe for target 'build' failed
make: *** [build] Error 2

Make void take arguments

Hi there!

I was porting some code from chicken recently, and noticed that the void procedure doesn't take any arguments. I think it would be a small and un-intrusive change, but one that could bring some utility. In chicken, I have sometimes done things like "(make-output-port void void)" to make a null port that just ignores any input.

I find it quite handy sometimes when prototyping to just have a procedure that just ignores any argument, like (define (ignore . args) (void)).

I don't know if this is the right forum for it, or if there are any philosophical aversions to it, but I thought I might as well ask.

Best regards
Linus

Executable should not be called 'scheme'

Anyone who has MIT Scheme installed expects 'scheme' to invoke that executable. Chez should respect this historical precedent by installing under a different name. This affects the man page as well as the executable.

No scheme.boot and boot directory for FreeBSD

I'm running FreeBSD on an x86_64 processor.

Running ./configure produces:

no suitable machine type found
try rerunning as ./configure -m=<machine type>
available machine types: a6le, a6nt, a6osx, i3le, i3nt, i3osx, ta6le, ta6nt, ta6osx, ti3le, ti3nt, and ti3osx

However, in the configure file, there are settings that indicate such machine types as "i3fb" and "a6fb". But no such directories exist in boot/ and running ./configure -m=a6fb produces the same error as above. This issue applies to at least OpenBSD and perhaps more.

What is a good way to deal with this in order to build on FreeBSD (and others)?

Can I keep both mit-scheme and Chez Scheme?

I think this is a stupid question.
At ubuntu, after ./configure and sudo make install , I can use scheme or petite to start Chez Scheme.
But I found that I can't use mit-scheme to start mit-scheme anymore.
Can I keep both mit-scheme and chez-scheme?
Sometimes, I need mit-scheme to test the code of SICP.

Consider using a standard git workflow

Currently all development is being done on the master branch. That model may or may not work for Chez, but there are other options—e.g., gitflow.

In gitflow:

  • The develop branch is the trunk.
  • Features are prepared in feature branches and then merged into the develop branch.
  • Releases are prepared in release branches and then merged into the develop and master branches.
  • Releases are tagged in the master branch.

Feature branches are especially useful for big features that might otherwise disrupt ongoing development. Likewise, release branches prevent disruption of ongoing development while releases are alpha/beta tested.

Of course, this is just one option. It has the benefit of being documented (e.g., here, here, here) and being supported by tools (e.g., here, here, here). Whether or not this is the right option for Chez is up to the team; the main point, I think, is that this is probably a good time to think about it.

Support cross-compilation from another Scheme implementation

It would be nice to be able to cross-compile Chez Scheme using another R6RS Scheme as a host. Steel Bank Common Lisp supports this, for example. This would eliminate the need for the binary .boot files.

Feel free to close as "won't fix" if this is impractical, but I think that it would be a nice feature.

threaded version build error

Threaded version of Chez Scheme can be built via ./configure --threads, but it seems that gcc/glibc is not happy with some libc call without return value being used, such as write. With -Werror, build may fail. I guess headers of glibc declare __attribute__((warn_unused_result)).

gcc version: gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2)

glibc version: GNU C Library (Ubuntu GLIBC 2.23-0ubuntu3) stable release version 2.23, by Roland McGrath et al.

one of the build errors(commit 7427dda):

prim5.c: In function ‘s_backdoor_thread_start’:
version.h:424:16: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
 # define WRITE write
                ^
prim5.c:1325:43: note: in expansion of macro ‘WRITE’
 #define display(s) { const char *S = (s); WRITE(1, S, (unsigned int)strlen(S));
                                           ^
prim5.c:1327:3: note: in expansion of macro ‘display’
   display("backdoor thread started\n")

Compile on Windows: cannot find "winver.h"

When I try to build it on Windows, I met the following error.

rc -r /fo ..\boot\ta6nt\scheme.res -DWIN32 scheme.rc
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation.  All rights reserved.

scheme.rc(1) : fatal error RC1015: cannot open include file 'winver.h'.
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\rc.EXE"”:
 return “0x1”
Stop.

It seems that some header files cannot be found.

My environment:
Windows 10 1511 Professional
Microsoft Visual Studio 2015 Update 1

No fork-thread?

It seems fork-thread doesn't export, I have to use low-level make-engine

Is there any high quality 3rd libraries for Chez?

I used to use Python because it's more convenient in finding some libraries, such as json library, networking library.

Besides the stdlib, I was wondering if there are some high quality 3rd libraries for Chez Scheme?

I personally still prefer Chez Scheme, but missing libraries is a real problem.

search path for libraries

I have my fine 64-bit libraries under $prefix/lib64; the build system does not find them and I do not see a way to specify a custom search path. What do I do? I do not want to touch the makefiles.

Can‘t make chez on FreeBSD machine

I have found a piece of code in 'configure' file about FreeBSD

if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
    m32=i3fb
    m64=a6fb
    tm32=ti3fb
    tm64=ta6fb
fi 
installprefix=/usr/local
nstallmansuffix=man

but when I run the './configure' command , it tell me 'available machine types: a6le, a6nt, a6osx, i3le, i3nt, i3osx, ta6le, ta6nt, ta6osx, ti3le, ti3nt, and ti3osx' and my question is: what is the right machine type for FreeBSD amd 64. And what is i3fb, a6fb, ti3fb, ta6fb that mentioned in that piece of code ?

syntax definition with extra keyword not exported from library

Example::

(library (test1)
  (export some-macro)
  (import (rnrs (6))
          (rnrs syntax-case (6)))

  (define-syntax some-macro
    (lambda (x)
      (syntax-case x (extra-keyword)
        [(_ a extra-keyword b) (syntax (+ a b))])))
)

When I use this code with (import (test1)), it fails, while the same code works when used inside the same module.

> (import (rnrs (6)))
> (import (test1))
> (some-macro 3 extra-keyword 4)
Exception: invalid syntax (some-macro 3 extra-keyword 4)

What's the correct way to cross compile

I saw there's arm32 backend in s/ directory. Does it mean Chez can generated arm native code at present? But I failed to configure it for arm platform with ./configure -m=arm32, it says:

available machine types: a6le, a6nt, a6osx, i3le, i3nt, i3osx, ta6le, ta6nt, ta6osx, ti3le, ti3nt, and ti3osx

It seems that all of machine types are PC(i386/x86_64), so how to take advantage of arm backend?

underscore in auxiliary literals of syntax-rules

I'm trying to use the popular matcher by Alex Shinn
https://github.com/LemonBoy/matchable-egg/blob/master/match.scm

I'm facing the problem that the above match syntax uses an underscore (_) as an auxiliary literal in a syntax-rules form. I know that R6RS explicitly forbids this in Sec. 11.19. However, in R7RS peoples changed their mind and there it is allowed (Sec. 4.3.2).

I'm wondering if there is any workaround in Chez Scheme to allow its use (apart from using another, non-"standard" symbol), or if there is any plan for that.

Thanks!

Load libc.so failed

When I try to load libc.so according to the CSUG:

> (load-shared-object "libc.so")
Exception: (while loading libc.so) /usr/lib/x86_64-linux-gnu/libc.so: invalid ELF header

Then I take a look at /usr/lib/x86_64-linux-gnu/libc.so, it's a LD script:

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib/x86_64-linux-gnu/libc.so.6 /usr/lib/x86_64-linux-gnu/libc_nonshared.a  AS_NEEDED ( /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ) )

The related libc info:

[nalaginrut@debian:~] /lib/x86_64-linux-gnu/libc-2.22.so 
GNU C Library (Debian GLIBC 2.22-7) stable release version 2.22, by Roland McGrath et al.
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 5.3.1 20160409.
Available extensions:
    crypt add-on version 2.1 by Michael Glad and others
    GNU Libidn by Simon Josefsson
    Native POSIX Threads Library by Ulrich Drepper et al
    BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.

Any help?

Windows build suggestions

It seems that this project can be configured and built with a Visual Studio shell running a POSIX compatible shell:

  • Enter the VS shell.
  • Enter the compatible shell.
  • Run ./configure -m=$M.
  • Exit the compatible shell.
  • Do the remained things of "Build step (Windows build machine)" in the BUILDING document.

Technically, they can be executed in the same host.

There are several distributions providing the compatible shell like bash. They should be considerable to ease the build process. They may also provide gcc, make and other POSIX-compliant tools, which makes the Microsoft toolchain (nmake, cl, link, etc) optional and results in kinds of smoother experience of migration between Windows and POSIX platforms.

I suggest two candidates to support:

  • The bash environment provided by Windows 10 (currently still in preview).
  • MSYS2. It is noticeable that with the package management mechanism, 3rdparty dependencies like libiconv (and even gcc for i686/x86-64 targets) can be installed automatically by the build script.

Mats tests fail

This is on Linux with gcc 6.0.0, the same conditions as issue #1. The contains of a6le/mats/summary is:

-------- o=0 --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 cp0=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 cp0=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 spi=t p=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 spi=t p=t --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 cp0=t eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 cp0=t eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=0 ehc=t eoc=f --------
0a1,2
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms
-------- o=3 ehc=t eval=interpret --------
6a7,8
> 6.mo:Bug in mat filesystem-operations clause 104 at line 2888, char 3 of 6.ms
> date.mo:Bug in mat time&date-printing clause 2 at line 565, char 3 of date.ms

I can supply additional files if needed.

Incorrect floating point parsing edge case

(define (get-bits fps)
  (define fp (string->number fps))
  (define bv (make-bytevector 8)) 
  (bytevector-ieee-double-native-set! bv 0 fp)
  (number->string (bytevector-u64-native-ref bv 0) 2))

(get-bits "2.2250738585072011e-308")

Prints: "10000000000000000000000000000000000000000000000000000" instead of "1111111111111111111111111111111111111111111111111111"

First detected on Windows with 8.4, and retested on Linux with 9.4.

date->time-utc does not honor date's zone-offset

While the time-utc->date procedure takes an optional argument for the timezone offset, the date->time-utc procedure does not honor the date objects zone-offset field. This means if I create two date object with different time zones from the same original UTC time, and then I covert both dates back to time-utc objects, they should be the same time, however they are not.

When this is fixed the following test return #t:

(let ([t (current-time)])
    (let ([d-est (time-utc->date t -14400)]
          [d-utc (time-utc->date t 0)])
      (time=? (date->time-utc d-est) (date->time-utc d-utc)))) ; => #f

FIX(-1) fails on gcc 6.0.0

Left shifting a negative number is undefined behavior in C. gcc 6.0.0 on x86_64 Linux prints a warning for this, even though all sane machines do the Right Thing. -Werror promotes this warning to an error, so the build fails.

I patched around this by simply removing -Werror from the Mk* files. However, recent C compilers take undefined behavior as a license to miscompile things, so the FIX macro needs to be improved to do the necessary casts to unsigned and back. Here's an example of miscompiling:

uint32_t shiftleft(uint32_t v, uint8_t n)
{
  if (n >= 32)
    v=0;
  return v<<n;
}

may wind up being compiled without the if statement, because it assumes that n >= 32 can never be true, since if it were true it would lead to undefined behavior.

Support for ARM

ARM support would be very useful. This is especially true for Android, but might be possible for iOS as well, provided that run-time code generation is not needed. Furthermore, ARM use is growing server-side (especially ARM64).

Tag a release

I'd like to package Chez for Homebrew, but Homebrew requires that the upstream project have tagged a stable version as a release before they'll accept the package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.