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
Sequences
Exceptions
Markup
Remoting
- Remoting
-
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
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