URI: 
   DIR Home
       
            ...     ..                                              .x+=:.   
         .=*8888x <"?88h.                                          z`    ^%  
        X>  '8888H> '8888          u.      u.    u.                   .   <k 
       '88h. `8888   8888    ...ue888b   x@88k u@88c.      .u       .@8Ned8" 
       '8888 '8888    "88>   888R Y888r ^"8888""8888"   ud8888.   .@^%8888"  
        `888 '8888.xH888x.   888R I888>   8888  888R  :888'8888. x88:  `)8b. 
          X" :88*~  `*8888>  888R I888>   8888  888R  d888 '88%" 8888N=*8888 
        ~"   !"`      "888>  888R I888>   8888  888R  8888.+"     %8"    R88 
         .H8888h.      ?88  u8888cJ888    8888  888R  8888L        @8Wou 9%  
        :"^"88888h.    '!    "*888*P"    "*88*" 8888" '8888c. .+ .888888P`   
        ^    "88888hx.+"       'Y"         ""   'Y"    "88888%   `   ^"F     
               ^"**""                                    "YP'                
                                                                             
       
         This is BONES, a compiler for R5RS Scheme that generates x86_64
         assembly code. BONES is designed to be simple and easy to understand,
         both to reduce the effort to learn and extend the system and to keep
         the complexity of the compiler at a minimum.
       
         BONES is a batch-compiler, it takes a Scheme source file and produces
         an assembler file to be subsequently translated into object code. It
         is also a whole-program compiler, which means it does not support
         separate compilation of multiple modules. The runtime system is by
         default added to your program before it is compiled, so there are no
         external libraries, with the exception of a few bits from the C library
         ("libc") (this is optional).
       
         BONES is mostly R5RS-compliant, but intentionally cuts some corners
         to reduce code-size, increase performance and simplify the compiler
         and runtime system. Type-checks are generally omitted, for example.
         Very little error checking is done and arithmetic overflow of small
         integers ("fixnums") is not detected. Some R7RS procedures are available
         in addition to the primitives required for R5RS.
       
         Since BONES produces assembly-code, build-times are quite short. The
         produced code is CPU- and OS-specific and currently supports x86_64 on
         Linux, *BSD, Mac or Windows. Porting the system to other architectures
         and operating systems should be (relatively) straightforward, as the
         platform-specific parts of the compiler are small and the runtime-system
         is just a single file of about two thousand lines of assembly code.
       
         The compiler is self-compiling and uses just a few functions from the
         C-library. Alternatively, programs can be compiled on Linux without
         using a C library, by just invoking raw system calls, but support
         for this is currently incomplete (mostly related to number<->string
         conversion).  Code compiled with BONES can be easily embedded into
         programs written in other languages as long as they allow calling
         C functions.
       
         There are very little debugging facilities. The compiler expects correct
         code and no attempt is made to provide more than the most basic error
         messages. It is recommended to develop and test code first in an
         interactive Scheme implementation and use BONES only for generating
         executables when the code can be assumed to work.
       
         The compiler itself is developed with a currently unreleased Scheme
         system, but as BONES compiles itself, no additional implementation is
         needed to make changes and extend the system.
       
   DOS Distribution archive
  TEXT The manual