Bigloo homepage -- Features





Bigloo implements an extended version of the Scheme programming language:
  • Compliance:
    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:

  • Module support
    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.
    Source code.

  • 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.
    Source code.

  • 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.
    Source code.

  • 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.
    Source code.

  • Threads
    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.
    Source code.

  • SQL
    Bigloo supports SQL databases queries. The C back-end now offers an SQLite SQLite binding.
  • Simple exception
    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).
    Source code.

  • Practical IOs
    Bigloo proposes practical IOs by the means of lexing and parsing tools in the spirit of the well known lex and yacc tools.
    Source code.

  • Posix support
    Bigloo now supports Posix processes and pipes.
    Source codes.

  • Library support
    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.

  • Dsssl support
    Bigloo handles DSSSL keywords, DSSSL named constants and it compiles DSSSL keyword functions.

  • Unicode support
    Bigloo now supports Unicode characters and strings but it maintains traditional ISO-LATIN1 characters and strings support.


This Html page has been produced by Skribe.
Last update Thu Feb 27 08:01:21 2020.