ctarbide / lisp9 Goto Github PK
View Code? Open in Web Editor NEWFork of LISP9 from Nils M Holm, based on lisp9-20200220.tgz
Fork of LISP9 from Nils M Holm, based on lisp9-20200220.tgz
Dunno if you care about making this macOS compatible... but compiling with clang on macOS 12.2 with Apple Xcode command line tools I get this:
lisp9-ctarbide e% make
gcc -m32 -ggdb3 -O2 -std=c99 -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion -Wdeclaration-after-statement -Wno-unused-parameter -pedantic -Werror -c ls9.c
size_t_aux.nw:71:9: error: 'SSIZE_MAX' macro redefined [-Werror,-Wmacro-redefined]
#define SSIZE_MAX INT_MAX
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/i386/limits.h:96:9: note: previous definition is here
#define SSIZE_MAX LONG_MAX /* max value for a ssize_t */
^
ls9-reader.nw:274:17: error: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wsign-conversion]
while (isdigit(c)) {
~~~~~~~ ^
ls9-vm.nw:425:17: error: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wsign-conversion]
Acc = isalpha(charval(Acc))? TRUE: NIL;
~~~~~~~ ^~~~~~~~~~~~
ls9-types.nw:51:21: note: expanded from macro 'charval'
#define charval(n) (cadr(n))
^~~~~~~
ls9-macros.nw:8:26: note: expanded from macro 'cadr'
#define cadr(x) (Car[Cdr[x]])
^~~~~~~~~~~
ls9-vm.nw:566:17: error: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wsign-conversion]
Acc = islower(charval(Acc))? TRUE: NIL;
~~~~~~~ ^~~~~~~~~~~~
ls9-types.nw:51:21: note: expanded from macro 'charval'
#define charval(n) (cadr(n))
^~~~~~~
ls9-macros.nw:8:26: note: expanded from macro 'cadr'
#define cadr(x) (Car[Cdr[x]])
^~~~~~~~~~~
ls9-vm.nw:598:17: error: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wsign-conversion]
Acc = isdigit(charval(Acc))? TRUE: NIL;
~~~~~~~ ^~~~~~~~~~~~
ls9-types.nw:51:21: note: expanded from macro 'charval'
#define charval(n) (cadr(n))
^~~~~~~
ls9-macros.nw:8:26: note: expanded from macro 'cadr'
#define cadr(x) (Car[Cdr[x]])
^~~~~~~~~~~
ls9-vm.nw:710:17: error: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wsign-conversion]
Acc = isupper(charval(Acc))? TRUE: NIL;
~~~~~~~ ^~~~~~~~~~~~
ls9-types.nw:51:21: note: expanded from macro 'charval'
#define charval(n) (cadr(n))
^~~~~~~
ls9-macros.nw:8:26: note: expanded from macro 'cadr'
#define cadr(x) (Car[Cdr[x]])
^~~~~~~~~~~
6 errors generated.
make: *** [ls9.o] Error 1
There are also over 100 warnings(?) from cproto when trying to parse macOS header files, tripping over intrinsics like __asm
and __compar
. These might be harmless since the files ls9_protos.h
and ls9.c
are generated.
It looks like SSIZE_MAX
comes from size_t_aux.nw
where perhaps an#ifndef SSIZE_MAX
would help. I added these in ls9.c to test that, and added some (int )
casts for charval
used with is....
character functions and the compile succeeded.
The link failed since macOS no longer supports i386 mode. So I modified the Makefile
to use WIDTH = -m64
and the build completed.
lisp9-ctarbide e% make
gcc -m64 -ggdb3 -O2 -std=c99 -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion -Wdeclaration-after-statement -Wno-unused-parameter -pedantic -Werror -c ls9.c
gcc -m64 -ggdb3 -O2 -std=c99 -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion -Wdeclaration-after-statement -Wno-unused-parameter -pedantic -Werror -o ls9 ls9.o
CHMOD='chmod 0555' NOFAKE='tools/nofake' tools/nofake.sh -Rdump-image.sh \
ls9.nw ls9-scripts.nw -odump-image.sh
Generate "dump-image.sh".
./dump-image.sh
All basic assertions passed!
t
lisp9-ctarbide e%
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.