JazzScheme

Home News Features Screenshots Tutorials Community Documentation Installation FAQ

Features

Gambit Roots

JazzScheme is entirely built using the Gambit system. Building on Gambit offers many benefits:
Conformance
Gambit conforms to the R4RS, R5RS and IEEE Scheme standards and implements all optional features including the full numeric tower.

Portability
Gambit runs on many platforms and because it is mostly written in Scheme and the compiler generates portable C, the system is easy to port to any platform with a decent C compiler.

Performance
Gambit is an extremely fast Scheme implementation. With appropriate declarations, programs generated by the compiler run roughly as fast as equivalent C programs. Thanks to an efficient implementation of continuations, the thread system is very efficient and can support millions of concurrent threads. For optimal performance, Gambit also offers a low-level API with no runtime checking.

Reliability
Gambit is a very robust Scheme implementation. Stable releases typically have very few bugs. Gambit has been used to develop large-scale real-world software in academic and commercial settings.

Debugging
Gambit comes with a full-featured repl based debugger and includes both an interpreter and a compiler for fast incremental development.

Rich API
Gambit offers a rich library including:
  • C foreign-function interface
  • Lightweight thread system that can support millions of concurrent threads
  • Extended I/O (filesystem, networking, subprocesses, ...)
  • Extensive Unicode support
  • Homogeneous vectors
  • Hashtables and weak references
  • Extensible reader and printer
  • ...

Build System

JazzScheme comes with a complete build system that can:
  • Build libraries
  • Build executables
  • Build single module loadable libraries
  • Manage dependencies automatically
  • Support multiple configurations that can specify:
    • Platform
    • Safety level
    • Debugging information

Module System

Units

The first layer of the module system is a language agnostic unit and package system where:
  • Units are used to load and compile code
  • Packages are used for deployment

Modules

The functional layer can rely on a module system to manage code encapsulation.
  • Import / Export of symbols
  • Detects unresolved symbols and other problems at compile time
  • Supports reexported submodules

Hygiene

Built on top of the module system comes a rich hygienic macro system.
  • Hygienic macros using syntax-rules
  • Support for define-syntax
  • Full support for non-hygienic macros

Jazz Platform

The Jazz platform is implemented using the unit system as a collection of packages including:

Functional Programming

  • Optional parameters
  • Keyword parameters

Object-Oriented Programming

  • Classes with single inheritance and multiple interfaces implemented
  • Metaclasses
  • Single-dispatch 'a la' Java
  • Generic multi-dispatch methods 'a la' CommonLisp

Component Programming

  • Inheritance between component classes
  • Markup language for persistance

Type System

  • Fully optional
  • Type inference
  • Scheme integration
    • Supports all Scheme primitive types
    • Annotating fixnums and flonums will generate optimal numerical code

Numbers

  • Generic arithmetic

Sequences

Exceptions

Markup

Remoting

  • Remote method invocation
  • Erlang-style processes using Termite

User Interface

  • Cross-platform accross Mac OS X, Windows and X11
  • High level 2D API through the use of the Cairo library

Jedi IDE

Jedi is a fully programmable IDE built entirely in Jazz.

Languages Supported

  • Jazz
  • Scheme
  • Common Lisp
  • C++
  • Java

Project Management

  • Workbench to manage projects and files
  • Catalogs to cross-reference source code

Project Development

  • Test
  • Debug
  • Build
  • Run

Source Code

Text
  • Syntax coloring
  • Evaluate code
Exploring
  • Chapters browser
  • Definitions browser
  • Find definitions
  • Find references
  • History navigation
  • Class browser
Searching
  • Incremental search
  • Multiple simultaneous searches and replaces
  • Ability to play a textual macro on replace
Editing
  • Clipboard stack
  • Mouse copying
  • Customisable symbol completion
  • Code tabulation
  • Textual macro recording
  • Unlimited undo / redo
  • Compare to saved
  • Fully programmable

Debugging

  • Remote Debugger
  • Console to evaluate code
  • Supports multiple threads
  • Supports debugging multiple processes simultaneously
  • Stack inspector with precise callsite highlighting
  • Exact highlighting of errors
  • Object inspector
  • View explorer

Profiling

  • Includes a statistical profiler

Collaborative Work

  • Compare Directories
  • Compare Files

Web Development

  • Visually manage your servers