SCM (Scheme implementation)

{{Short description|Implementation of the Scheme programming language}}

{{Infobox programming language

| name = SCM

| logo = SCM 64.png

| logo caption =

| screenshot =

| screenshot caption =

| paradigms = Multiparadigm: functional, procedural, meta

| family = Lisp

| designer = Aubrey Jaffer

| developers = Aubrey Jaffer, Radey Shouman, Tanel Tammet (Hobbit)

| released = {{Start date and age|1990}}

| latest release version = 5f4

| latest release date = {{Start date and age|2024|02|05|df=yes}}

| latest preview version =

| latest preview date =

| typing = Strong, dynamic, latent

| scope =

| programming language = C

| discontinued =

| platform = IA-32, x86-64

| operating system = Cross-platform

| license = LGPL

| file ext =

| file format =

| website = {{URL|people.csail.mit.edu/jaffer/SCM}}

| implementations =

| dialects =

| influenced by = Lisp, Scheme, SIOD

| influenced = GNU Guile

}}

SCM is a programming language, a dialect of the language Scheme.

Language

It is written in the language C, by Aubrey Jaffer, the author of the SLIB Scheme library and the JACAL interactive computer algebra (symbolic mathematics) program. It conforms to the standards R4RS, R5RS, and IEEE P1178. It is free and open-source software released under a GNU Lesser General Public License (LGPL).{{cite web |url=http://people.csail.mit.edu/jaffer/scm.pdf |title=SCM manual |last=Jaffer |first=Aubrey |date= |website=MIT Computer Science and Artificial Intelligence Laboratory |publisher=Massachusetts Institute of Technology |format=PDF |access-date=}}

SCM runs on many different operating systems such as AmigaOS (also emulation), Linux, Atari ST, Mac OS X (SCM Mac),{{cite web |url=http://people.csail.mit.edu/jaffer/scmmac |title=SCM Mac |last=Jaffer |first=Aubrey |date= |website=MIT Computer Science and Artificial Intelligence Laboratory |publisher=Massachusetts Institute of Technology |access-date=}} DOS, OS/2, NOS/VE, Unicos, VMS, Unix, and similar systems.

SCM includes Hobbit, a Scheme-to-C compiler written originally in 2002 by Tanel Tammet. It generates C files which binaries can be dynamically or statically linked with an SCM executable.{{cite web |url=http://people.csail.mit.edu/jaffer/hobbit.pdf |title=Hobbit manual |last=Jaffer |first=Aubrey |date= |website=MIT Computer Science and Artificial Intelligence Laboratory |publisher=Massachusetts Institute of Technology |format=PDF |access-date=}} SCM includes linkable modules for SLIB features like sequence comparison, arrays, records, and byte-number conversions, and modules for Portable Operating System Interface (POSIX) system calls and network sockets, Readline, curses, and Xlib.

On some platforms, SCM supports unexec (developed for Emacs and bash), which dumps an executable image from a running SCM. This results in a fast startup for SCM.

SCM developed from Scheme In One Defun (SIOD) in about 1990. GNU Guile developed from SCM in 1993.

References

{{Reflist}}