{"size": 1205, "ext": "scrbl", "max_stars_repo_path": "pkgs/racket-doc/scribblings/foreign/foreign.scrbl", "max_stars_repo_name": "lkh01/racket", "max_stars_repo_stars_event_min_datetime": "2018-07-29T04:13:52.000Z", "max_stars_repo_stars_event_max_datetime": "2022-02-14T16:11:17.000Z", "max_issues_repo_path": "pkgs/racket-doc/scribblings/foreign/foreign.scrbl", "max_issues_repo_name": "lkh01/racket", "max_issues_repo_issues_event_min_datetime": "2017-08-25T20:26:37.000Z", "max_issues_repo_issues_event_max_datetime": "2022-02-26T17:48:40.000Z", "max_forks_repo_path": "pkgs/racket-doc/scribblings/foreign/foreign.scrbl", "max_forks_repo_name": "lkh01/racket", "max_forks_repo_forks_event_min_datetime": "2016-04-25T11:47:57.000Z", "max_forks_repo_forks_event_max_datetime": "2017-05-09T14:52:48.000Z"}
{"max_stars_count": 10, "max_issues_count": 15, "max_forks_count": 3, "avg_line_length": 31.7105263158, "max_line_length": 74, "alphanum_fraction": 0.6829875519}
#lang scribble/doc
@(require "utils.rkt")

@title{The Racket Foreign Interface}

@author["Eli Barzilay"]

@defmodule[ffi/unsafe #:use-sources ('#%foreign)]

The @racketmodname[ffi/unsafe] library enables the direct use of
C-based APIs within Racket programs---without writing any new C
code. From the Racket perspective, functions and data with a C-based
API are @idefterm{foreign}, hence the term @defterm{foreign
interface}. Furthermore, since most APIs consist mostly of functions,
the foreign interface is sometimes called a @defterm{foreign function
interface}, abbreviated @deftech{FFI}.

@;------------------------------------------------------------------------

@table-of-contents[]

@include-section["intro.scrbl"]
@include-section["libs.scrbl"]
@include-section["types.scrbl"]
@include-section["pointers.scrbl"]
@include-section["derived.scrbl"]
@include-section["misc.scrbl"]
@include-section["unexported.scrbl"]

@(bibliography
  (bib-entry #:key "Barzilay04"
             #:author "Eli Barzilay and Dmitry Orlovsky"
             #:title "Foreign Interface for PLT Scheme"
             #:location "Workshop on Scheme and Functional Programming"
             #:date "2004"))

@index-section[]
