cisco / chezscheme Goto Github PK
View Code? Open in Web Editor NEWChez Scheme
License: Apache License 2.0
Chez Scheme
License: Apache License 2.0
Should the link to the Nanopass Framework (in CONTRIBUTING.md) be to the appropriate link for the current repository (https://github.com/nanopass/nanopass-framework-scheme or https://github.com/nanopass/ or http://nanopass.org/ or https://nanopass.github.io/)?
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.
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
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
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.)
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.
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:
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.
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
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
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?
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 ?
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.
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?
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.
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.
It seems fork-thread doesn't export, I have to use low-level make-engine
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
It seems that this project can be configured and built with a Visual Studio shell running a POSIX compatible shell:
./configure -m=$M
.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:
bash
environment provided by Windows 10 (currently still in preview).libiconv
(and even gcc
for i686/x86-64 targets) can be installed automatically by the build script.The makefile doesn't have an uninstall target.
See dybvig/stex#2 for details.
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.
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)?
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
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.
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
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.
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!
thus, for example, can not use this pattern matcher :: synthcode.com/scheme/match.scm
`
; 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.
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?
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)
Configure script does not add $(INSTALLPREFIX)/lib/csv%v/%m to the heap search path, making any non-default install prefix useless.
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.
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?
At the moment this issues list is the only way people can talk about Chez. (There's an IRC channel, but that's only for real-time communication.)
I have no idea if ChezScheme's REPL support unicode. Is there any good way to solve this problem now?
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
$
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.
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.
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.
Should be 0.0
First detected on Windows with 8.4, and retested on Linux with 9.4.
Related: racket/racket#1140
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")
;; 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))
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
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
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.
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.
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.
I have to create bin/$m
folder 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?
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).
(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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.