Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
GNU Guile
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Guile Scheme== Guile Scheme is a [[General-purpose programming language|general-purpose]], [[high-level programming language]] whose flexibility allows expressing concepts in fewer [[lines of code]] than would be possible in languages such as [[C (programming language)|C]]. For example, its [[Macro (computer science)#Hygienic macros|hygienic macro system]] allows adding domain specific syntax-elements without modifying Guile. Guile implements the Scheme standard R5RS, most of R6RS and R7RS,<ref name=R7RS/> several [[Scheme Requests for Implementation]] (SRFI), and many extensions of its own. The core idea of Guile Scheme is that "the developer implements critical algorithms and data structures in C or C++ and exports the functions and types for use by interpreted code. The application becomes a library of primitives orchestrated by the interpreter, combining the efficiency of compiled code with the flexibility of interpretation."<ref>Blandy 1997, p. 87.</ref> Thus Guile Scheme (and other languages implemented by Guile) can be extended with new [[data type]]s and [[subroutine]]s implemented through the C API. The standard distribution offers modules for Portable Operating System Interface ([[POSIX]]) system calls, [[Scheduling (computing)|scheduling]], a [[foreign function interface]], [[S-expression]] based [[XML]] processing through [[SXML]], SXPath, and SXSLT, [[HTTP]] and other [[World Wide Web]] APIs, [[delimited continuation]]s, [[array programming]],<ref name="Manual, Arrays" /> and other functionality.<ref name="Manual, API Reference" /><ref name="Manual, Guile Modules" /> Guile programs can use facilities from [[SLIB]], the portable Scheme library.<ref name="Manual, SLIB" /> ===Implementation details=== When using [[continuation]]s with [[call/cc]], a requirement of the Scheme standard, Guile copies the execution [[Call stack|stack]] into the [[Dynamic memory allocation|heap]] and back.<ref name="Blandy quote call/cc" /> Its manual suggests using delimited continuations instead, because they have a more efficient implementation.<ref name="Guile Reference Manual Continuations Section" /> Because foreign code may have [[Pointer (computer programming)|pointer]]s to Scheme objects, Guile uses the conservative [[Boehm garbage collector|Boehm–Demers–Weiser]] (BDW) [[Garbage collection (computer science)|garbage collector]].<ref name="Guile Reference Manual Conservative GC Section" />
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)