JazzScheme

Home News Features Screenshots Documentation Development Download

2008-04-30 - Contract awarded to use the new Gambit based JazzScheme

I am very happy to announce that MetaScoop was awarded a contract to implement a full business application using the newly developed Gambit based JazzScheme.

Note that we will still be developing JazzScheme actively but with focus on more 'business' aspects like :
  • Robustness and Performance
  • Full database support on Windows using ADO
  • Printing support on Windows
  • Localization
  • Distribution of built code

We expect work on the open-source release to resume in about 2 months where at this point finishing X11 will be pretty much all that remains.

2008-04-30 - Progress update

Here's a summary of the most important developments in the last 2 months :

Build system

  • Now using pkg-config to simplify build dependencies processing
  • Added support for binary packages for a complete distribution solution

Gambit

Support for the following Gambit features was added :
  • TCP/IP
  • Threading
  • U8 vectors

Language

  • Added branch prediction to the type system for nillable types and the 'or' special form
  • Implemented a new 'meta' keyword that greatly simplifies metaclass programming

Multi-platform

  • Many improvements on X11
  • Carbon work started up to the point where the Jedi IDE now fully loads

Web Server

Ported the Web server / framework to the new Jazz. I must say that Gambit's TCP/IP support, threads, ports and u8vectors made this port a pure pleasure.

Two new tutorials where developed to demonstrate the new web framework :
  • Gomoku
  • Connect-4

Various

  • Views now support arbitrary scaling
  • Added printing support on windows
  • Ported many parts of the visual GUI designer

2008-02-04 - Build system now all implemented in Gambit

Here's a summary of the most important developments since the last update (apart from a very nice Christmas vacation with my son :-) :

Build system

A new build system was developed to automate Jazz building and deployment. It follows the usual configure / make methodology and is fully implemented in Gambit making it highly portable. See the INSTALL file at the root of the distribution for details.

  • The build will now create a 'jazz' executable file that encapsulates the Jazz kernel. Use this executable to load Jazz code, launch Jazz applications, ...
  • Under Unix, we are now using pkg-config to simplify building library depencies.

Package system

A new package system was developed to manage resources uniformly accross the development and deployment stages of a project.

  • With it, Jazz applications can be deployed as compiled binaries, source files or as a mix of both.
  • Jazz will use a sha-1 digest of the source file to automatically determine if a file should be loaded interpreted or compiled.

Generic methods

Jazz now implements generic dispatch on an arbitrary number of parameters.

Port fixes

  • View debugging tools (F8) are now fully functional under Windows.
  • Groupware compare directories and compare files.
  • Login dialog.
  • Users management.

X11

A lot of progress was made on the X11 port which is now very close to beeing usable.

Time

Ported the very nice Time Data Types and Procedures SRFI-19 to Jazz.

Various

  • Many Gambit specific improvements related to performance and space.
  • All jazz modules have now been ported to the new kernel at least enough to load correctly.

2007-11-11 - New Gambit based kernel now faster than the old C++ kernel!

A lot has happened since the last news update a month 1/2 ago. Let me try and summarize the most important developments :

Performance

As I was saying in the last message, performance was very critical as this stage as it was so far behind the old Jazz as to make the new one unusable. The benchmark I have been using is editing Window.jazz a big file with lots of syntax coloring necessitating a lot of sexpr navigation. As every Lisp related tool must be able to navigate sexpr in text, those operations are so critical that in the old Jazz they where handcoded directly in C. So keep in mind that in the benchmark results, it is handcoded C code vs Jazz code generating Gambit code.

First timing was :

Old Jazz : 0.3s
New Jazz : 28.5s

so 95x slower.

We are now at 0.17s so 167x faster than the first version and 60% faster than the old handcoded C code. Note that there is still a lot of room to make this much faster but now that performance is acceptable we are going to put performance aside for a while in favor of other priorities.

Thanks to Guillaume Germain for his wonderful statprof statistical profiler which really helped in finding the hot spots to optimize.

Type System

Jazz now supports a fairly complete and completely optional type system.

Every part of a Scheme program can now be type annotated. Note that usually, just annotating the type of the input parameters of a function will be sufficient, as the new type system will use type inference whenever possible to deduce the type of expressions.

To support the new type system, a new experimental specializer / template system is also available. Any comments / suggestions on this part are most welcome as it is unclear what is the best approach: templates a la c++, generics a la java, parameterized types, ...

Note that Jazz as a whole doesn't use the new type system a lot. I'd say that around 30 files out of Jazz's 3000+ files use the new type system. Annotating only those 30 something critical modules resulted in huge performance improvements. Also note that the type annotations are purely optional and removing any of them will not change any code semantics.

IDE

The IDE while still missing a lot of functionality has become functional enough for it to become usable. I now try and use it as my main development IDE over the old Jazz's IDE.

Mainly missing from the old Jazz IDE is debugging support. We are still relying on the Gambit console. Note that this is really not painful at all as the Jazz generated Scheme code is so close to the original code that reading a Gambit stack of Jazz code is almost identical as what a pure Jazz debugger stack would look like.

Scheme Compliance

The old Jazz, although 'Scheme inspired' was never a full Scheme implementation.

Everything that Jazz was redefining from Scheme was rethought / renamed so that now I am very happy to report that Jazz is now a full R5RS Scheme (to be more precise: as R5RS as the underlying Scheme you are using is) system where any R5RS Scheme code can be run as is inside a Jazz module or library.

If pure Scheme is used inside a Jazz module or library, the resulting code will have no overhead and will be the exact same code. The Jazz library system will just validate at compile time that every symbol referenced exists in the underlying Scheme system and report any unresolved symbols.

Multi-platform / X11

The Jedi IDE while not functional, is now booting completely under X11! What was astonishing was that nothing was working, and a couple changes later, Jeremie had a version where *everything* was rendering perfectly! The port of the graphical code to Cairo really payed off there. I am very happy about this new development, especially as Jeremie was able to pull this off part time while studying for his master's degree. Gratz!

Public beta release is still planned for very early 2008.

2007-09-26 - Jedi running under the new Gambit based kernel

I am very happy to report that Jedi, the Jazz IDE is now running under the new Gambit based kernel. Lots of features where temporarely commented out but basically most of the language and the library has now been ported to the new kernel.

The port of 100+ C++ classes to Gambit was very demanding at first but now the development has really become a joy. Even though the start was difficult, developing the new kernel on Gambit's extremely robust, fast and flexible architecture has now surpassed all my expentations in development speed and quality of code that could be developed with it. Cheers to Gambit!

Next steps are:
  • Complete the port
  • Optimize the new kernel to make it as fast as Gambit can be (that's fast!)
  • Port the library and IDE to Mac and X11 (this should be fairly fast at this point)
I expect a first beta, beginning of 2008.

2007-08-08 - Presentation at the lispvan

Guillaume Cartier gave a presentation of JazzScheme at the Vancouver Lisp Users Group. See Bill Clementson's Blog for a nice summary.

2007-05-28 - JazzScheme 1.0b6 available

This version is a candidate for the public release. Only bug fixes are planned until the public release. See the What's New section for details.

2007-05-14 - Work on porting JazzScheme to X11 and Macintosh started

Active work has started on porting the JazzScheme platform to other operating systems. Support is planned for the following platforms: Windows, X11 and Macintosh.

2007-05-03 - JazzScheme 1.0b5 available

This version adds a lot of support for Scheme code edition which is now almost on par with Jazz code. See the What's New section for details.

2007-04-23 - JazzScheme public beta released

First publicly available beta release of JazzScheme.

2007-01-12 - JazzScheme ported to Visual Studio 2005

JazzScheme was successfully ported to Visual Studio 2005. This is a key milestone for Jazz, as with Microsoft's release of Visual Studio 2005 Express as a free downloadable package that can be used to build C++ applications with no licensing restrictions, Jazz can now be used as a 100% free development platform for building Windows applications.

2006-12-13 - Presentation at the MSLUG

Guillaume Cartier gave a presentation of JazzScheme at the Montreal Lisp/Scheme User Group. See http://schemeway.dyndns.org/mslug for details.

2006-12-12 - Montreal company to use JazzScheme

IsaiX Technologies a high tech Montreal company, has decided to use JazzScheme for one of its top projects. Using JazzScheme, they plan on developing a real time scheduling engine for Chyma their Health Care Industry product.

2006-11-22 - Website goes live

A first version of the JazzScheme website is now live!