II Inside Racket BC (3m and CGC)

The Racket BC API was originally designed for a tight integration with C code. As a result, the BC API is considerably larger than the Racket CS API.

    8 Overview

      8.1 “Scheme” versus “Racket”

      8.2 CGC versus 3m

      8.3 Embedding and Extending Racket

      8.4 Racket BC and Places

      8.5 Racket BC and Threads

      8.6 Racket BC, Unicode, Characters, and Strings

      8.7 Racket BC Integers

    9 Embedding into a Program

      9.1 CGC Embedding

      9.2 3m Embedding

      9.3 Flags and Hooks

    10 Writing Racket Extensions

      10.1 CGC Extensions

      10.2 3m Extensions

      10.3 Declaring a Module in an Extension

    11 Values and Types

      11.1 Standard Types

      11.2 Global Constants

      11.3 Strings

      11.4 Value Functions

    12 Memory Allocation

      12.1 Cooperating with 3m

        12.1.1 Tagged Objects

        12.1.2 Local Pointers

        12.1.3 Local Pointers and raco ctool --xform

        12.1.4 Guiding raco ctool --xform

        12.1.5 Places and Garbage Collector Instances

      12.2 Memory Functions

    13 Namespaces and Modules

    14 Procedures

    15 Evaluation

      15.1 Top-level Evaluation Functions

      15.2 Tail Evaluation

      15.3 Multiple Values

      15.4 Evaluation Functions

    16 Exceptions and Escape Continuations

      16.1 Temporarily Catching Error Escapes

      16.2 Enabling and Disabling Breaks

      16.3 Exception Functions

    17 Threads

      17.1 Integration with Threads

      17.2 Allowing Thread Switches

      17.3 Blocking the Current Thread

      17.4 Threads in Embedded Racket with Event Loops

        17.4.1 Callbacks for Blocked Threads

      17.5 Sleeping by Embedded Racket

      17.6 Thread Functions

    18 Parameterizations

    19 Continuation Marks

    20 String Encodings

    21 Bignums, Rationals, and Complex Numbers

    22 Ports and the Filesystem

    23 Structures

    24 Security Guards

    25 Custodians

    26 Subprocesses

    27 Miscellaneous Utilities