natethern / sxm Goto Github PK
View Code? Open in Web Editor NEWAnother implementation of Scheme - by Sergei Egorov
License: Other
Another implementation of Scheme - by Sergei Egorov
License: Other
SXM is a portable implementation of the Scheme Programming language. It conforms to IEEE/ANSI standard of Scheme and supports all features of the R5RS Report on Scheme. In addition, SXM supports numerous features of Chez Scheme v6.0 and SRFIs 0, 6, 8, 9, 11, and 16. SXM is derived from David Michael Betz's XScheme v0.28. Due to the loss of compatibility with the original (object system has been dropped) and significant amount of modifications and additions (SXM is 4 times bigger), I decided to treat it as a separate project with its own name. It still carries a lot of design decisions from the original though: - runtime system is written in portable C - minimal dependency on OS-specific features - no S-exp interpreter; Scheme code is compiled to byte code and then executed via bytecode VM - mark-sweep garbage collector - simplified numerical tower (fixnums/flonums only) - heap image save/restore During its 10-year-long history as a hobby project, SXM acquired a lot of new features: - optimizing bytecode compiler written in Scheme and C ("Frobit") - support for multiple global environments ("locales") - extra data types (boxes, hash tables, weak pairs) - full support for IEEE/ANSI and R5RS specifications, including hygienic macros, multiple return values, dynamic-wind, and eval. - optional Unicode support based on ANSI C's wide char library - convenient mechanism to extend the basic set of Scheme procedures written in C - flexible mechanism for adding new kinds of ports - almost complete set of Chez Scheme features, including syntax-case macro system (CS v5.9f), reader extensions, parameters, interactive facilities, engines, and pretty-printing. - SXM 1.1 supports Chez Scheme's and SRFI 9 structures - extensive library of string functions - exceptions (based on ideas from '98 Baltimore Workshop) - support for several SRFIs (0, 6, 8, 9, 11, and 16). This distribution is a second public release of SXM. Bug reports, comments, and suggestions can be sent to the author at [email protected]. Installation instructions in file Install. A list of top-level forms is in Formlist (built automatically). Recent changes are listed in file News (if present). Known bugs and things to do in the future are listed in Todo. SXM was tested on the following configurations: Linux/i386/gcc Linux/alpha/gcc BSD/i386/gcc Solaris/sparc/gcc Plan9/i386/pcc Cygwin/i386/gcc WinNT/i386/msvc The SXM root directory should contain the following subdirectories: doc some documentation optional optional OS-specific components scheme run-time system sources tests r5rs and miscellaneous tests win32 Win32-specific sources and projects unicode unicode support (Win32 only) contrib code contributed by various authors (optional) The SXM root directory should contain the following files: Readme this file Install installation instructions News ? recent changes Todo list of bugs and things to do Makefile makefile for GNU make mkfile makefile for Plan 9's mk sx*.c core SXM files io*.c SXM ports of various types os*.c OS-dependent procedures *.c top-level Scheme procedures sxeme.h C declarations and macros for SXM data structures *.h other headers sxm.man a Unix-style man page sxm.spec RPM spec
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.