Monday, November 19, 2007

PLT Scheme Science Collection Version 2.8

Version 2.8 of the PLT Scheme Science Collection has been released via PLaneT. There are two major changes from Version 2.7:
  • The file has been reverted back to its previous implementation. This is because the interface for SRFI 27 was changed to be compatible with the pre PLT Scheme V371.1 version. That is, Version 2.7 is only required for PLT Scheme V371.1 (which probably isn't being used by anyone). Version 2.8 will work with V371 (and before) as well as with V371.2 and later.
  • Unchecked versions of many of the functions are now provided that bypass the contract check. These are called internally where it is known that the contract would be met. Obviously, they may also be called from user code in similar circumstances or where the contract check is not desired for some reason.
The unchecked version of a function is provided by renaming the function in a provide statement. The standard version is provided in a provide/contract statement. A trivial example is:

(module test-unchecked mzscheme

(require (lib ""))

(rename double unchecked-double))

(-> real? real?)))

(define (double x)
(+ x x)))

This works fine. But, I'm not sure there is any guarantee that it will work in the future.

This will probably be the last revision before the release of PLT Scheme v4.0. I have branched the source code (at the Schematics project on SourceForge) for the PLT Scheme Science Collection Version 3.0 to be released with PLT Scheme Version 4.0. These changes will be tested using the PLT Scheme v3.99.x releases.


Tuesday, November 06, 2007

Science, Simulation, and Inference Collections Source Code Moved to SourceForge

I finally got around to moving the source code for the science, simulation, and inference collections to the schematics project at SourceForge. This will help me manage the collections better and allow others to contribute more easily, if they wish. Unfortunately, I've been rather busy with work and haven't had much opportunity to work with the collections.
I have been playing around with Scribble for the documentation - it's currently in TeX. I'm not sure Scribble is ready for prime time in terms of graphics and mathematics typesetting yet.
Here is the status and high-level to-do list for the collections.

PLT Scheme Science Collection
The science collection is stable. The only things I might add in the near-term are additional random distributions and ordinary differential equation solvers. Also, if there are any capabilities that anyone would like added, drop me an e-mail.

PLT Scheme Simulation Collection
The simulation collection is where I have the most near-term activities. I have pretty much finished the design of the process interactions capability, based on the Ada rendezvous mechanism. Coding this up, with examples, and testing it are the next things to do. I will then reimplement the current resource mechanism using interprocess interactions.
Another thing I would like to do is to add vector valued variables. This is pretty straightforward, but also requires implementing vector values histories and statistics. It won't be hard, just a fair amount of coding. I may also add complex (and maybe quaternian) valued variables also.
The final thing for the simulation collection is to add components and a graphical construction method. I'm still working this through. Any ideas would be appreciated.

PLT Scheme Inference Collection
The inference collection is the one that still needs the most work. I still haven't written the reference manual. I will quit waiting for Scribble to shape up and just use TeX or OpenOffice.
To improve performance, I need to add more indexing to the various internal data structures - e.g., use hash tables instead of association lists. I have implemented indexing for existential pattern handling, but still need to add indexing for binding patterns and the agenda (at a minimum).

Labels: , ,