Bigloo Publisher's description
Bigloo is a Scheme implementation devoted to one goal
Bigloo is a Scheme implementation devoted to one goal: enabling Scheme based programming style where C(++) is usually required. Bigloo attempts to make Scheme practical by offering features usually presented by traditional programming languages but not offered by Scheme and functional programming. Bigloo compiles Scheme modules. It delivers small and fast stand alone binary executables. Bigloo enables full connections Between Scheme and C programs, between Scheme and Java programs, and between Scheme and C# programs.
Bigloo is mostly R5RS compliant. It supports multiple values by the means of call-with-values, values and the extra form multiple-value-bind, hygienic macros let-syntax, syntax-rules, ..., eval with environment, and dynamic protections (dynamic-wind).
Bigloo supports the following Scheme Request for Implementation (SRFI):
SRFI-0: Conditional execution
SRFI-1: list-processing library
SRFI-2: AND-LET*: an AND with local bindings, a guarded LET* special form
SRFI-4: Homogenous Vectors
SRFI-6: Basic String Ports
SRFI-8: Binding to multiple values
SRFI-9: Records specification
SRFI-18: Multithreading support
SRFI-22: Script interpreter invocation
SRFI-28: Basic format strings
Some SRFIs are not builtin but supported by the means of additional Bigloo libraries. These are:
SRFI-14: Character-Set Library
Bigloo compiles modules. Bigloo is a batch compiler. Even though the Bigloo runtime library offers one, it does not rely on a read-eval-print loop.
An extended Java interface
Java code and Bigloo code can be merged together. Bigloo functions can call Java functions and vice-versa, Bigloo code can use and instantiate Java classes. Bigloo functions and variables can hold Java values (Java classes values). Bigloo data structures can point to Java data structures and vice-versa.
An extended C interface
C code and Bigloo code can be merged together. Bigloo functions can call C functions and vice-versa, Bigloo code can use C global variables and vice-versa. Bigloo functions and variables can hold C values (C types values). C values can be allocated from Bigloo program and vice-versa, Bigloo data structures can point to C data structures and vice-versa.
An object oriented layer
Bigloo proposes an extension to Scheme by adding simplified Clos-like generic functions. Bigloo uses single inheritance and mono-dispatch. Futhermore, the Bigloo's object system includes introspection facilities. Classes are able to deliver access and mutation functions to their instance's fields.
Bigloo now supports Fair threads that are cooperative threads run by a fair scheduler which gives them equal access to the processor. Fair threads can communicate using broadcast events. Their semantics does not depends on the executing platform. Fine control over fair threads execution is possible allowing the programming of specific user-defined scheduling strategies.
Bigloo supports SQL databases queries. The C back-end now offers an SQLite SQLite binding.
Bigloo discourages the use of call/cc. Instead it proposes dynamic exceptions a la Common Lisp (by the means of three constructions: try that catches errors, bind-exit that binds an exception and unwind-protect that protects a piece of code from exceptions).
Bigloo proposes practical IOs by the means of lexing and parsing tools in the spirit of the well known lex and yacc tools.
Bigloo now supports Posix processes and pipes.
Bigloo now supports libraries. A library is a collection of Bigloo pre-compiled modules.
An explicit type system and compile time type mismatch detections
Bigloo programs may contain type annotations. Bigloo programs are encouraged to contain type annotations. Type annotations hold on variables, function parameters and function results. Type annotations help the compiler in the task of the static type mismatch detection and help it at producing more efficient code.
Bigloo handles DSSSL keywords, DSSSL named constants and it compiles DSSSL keyword functions.
Bigloo now supports Unicode characters and strings but it maintains traditional ISO-LATIN1 characters and strings support.
System Requirements:No special requirements.
Program Release Status: Major Update
Program Install Support: Install and Uninstall