JazzScheme
Jazz
2007-05-28 - 1.0b6
- Major rework of everything related to key bindings
- User configurable key bindings
- Support for multiple configurations per user
- Basic Emacs configuration
- Bindings manager window
- Bindings file for storing user configurations
- Simplified all the action related code radically
- Tab navigation is now friendly with completion
- Backspace and modifiers now work correctly with the macro recorder
- Catalogs
- Full support for Scheme and Common Lisp
- Catalogs are now fully integrated to projects
- Catalogs now delegate to extensible file parsers
- New catalogs window for easy activation / deactivation
- Update catalog menu item in the workbench manager and in texts
- Replaced the tag-symbolic kludge by new and syntaxes
- Hosted concept renamed to guest
- Verify reload is now done on mouse-up thus fixing many annoying bugs
- Fixed a compiler bug with manifest properties
- Standardized all file names to respect Unix conventions
- Added explicit support for .fusion files
- Hashing has been extended for user defined classes
- The boot process was made much more robust and many bugs fixed in the crash handler
- Fixed some bugs in the HTTP server
- Playing a macro recording is now an atomic action
- Added a stage slot to the Version class that is an optional symbol
2007-05-03 - 1.0b5
- Added lots of support for Scheme code edition which is now almost on par with Jazz code.
2007-04-23 - 1.0b4
-
Jazz has undergone major surgery and is now a lot closer to Scheme syntax and semantics.
- Reader syntax for booleans and empty list is now Scheme compliant.
-
The special forms
let
and let*
now have Scheme semantics.
- Case datum must now always be lists.
- Dynamic object calls now use a functional syntax:
-
(f~ obj a b c)
- Edition of Scheme code is much more functional.
2007-01-15
- Fixed a subtle and extremely annoying bug where a Jazz application when launching would sometimes just beep and then stall without any GUI appearing. It was caused by the error occuring at a point in the boot process where the toplevel is created but not yet visible. Because the visual debugger is not available at that point, the C runtime displays the error in a message box. The bug was to pass the toplevel as the message box's parent without checking if it was visible...
- Fixed a GUI alignment bug in the tree when line or column separators where showing.
- Changed default behavior of L&F where widgets now fill their bounding rect.
- Added syntax coloring and basic text support for C# source code.
- The compare files view now sets its title to the name of the compared file. This is especialy usefull when iterating through files from a directories comparision.
- Fixed a bug in the Class Browser that was happening when browsing the whole class tree from the Object root.
- Fixed a bug that was stopping the outdated core dialog from showing. If any core file is outdated, this dialog will open when Jedi is launched to warn about having to recompile as core files are never loaded interpreted.
- Fixed another bug that was stopping the boot time from beeing displayed after Jedi launches.
- Fixed a bug in the stack dump that happened when an error occured inside a definition initialization.
- Fixed a compiler bug where the compiler sometimes would not recompile the Properties.prop file.
- Ported Jazz to Visual Studio 2005. Initial times where disapointingly slower, so I changed the optimization flag from /O1 optimize for space, to /O2 optimize for speed. With this change, the new Launcher.exe is 20% faster than the old one.
- Fixed a very nasty bug that the port to Visual Studio 2005 uncovered where the Type and Unit classes where loaded twice with in turn corrupted internal data structures.
- Cleanup of the Jazz Build folder. Removed the Vc folder which was not really used and renamed VcDirect to Vc. Now uses the more standard approach of having all compilation results go to a common folder with the same name as the compilation policy used.
- Added explicit create / use support for precompiled headers.
- Major rework of everything log related. It is still a work in progress, but the new logging facility will log in memory or to file. Will seamlessly support resources allocation logging to debug memory leaks. Will integrate with the profiler. And more.
- A very fundamental improvement was done where every object now possesses 2 flags, one saying if it was successfully initialized and the other one saying if it was successfully destroyed. The first flag is used by the kernel to guaranty never calling key methods like printing, destruction, ... on not fully initialized objects. This was a major source of difficult bugs if an error occured during an object initialization and left it in a basically corrupted state. The second flag is used by the garbage collector, to flag every object that should have been destroyed and was not in a special 'undestroyed' color. New gc functions can then be used to inspect those object and detect memory leak of external resources.
- The gc function now guaranties a full sweep cycle.
- Added support for Windows performance counters with the Performance-Query class.
- The "View Log" menu item of the "Project" menu now opens the log with wrap around.
-
Compiled externals, e.g. all primitives like cons, map, error, ... now display their C entry point when printed. For example, cons will print as
{@Compiled-External JzCons #x79720750}
.
-
The complex problem of project dependencies is at last solved in a satisfying way.
- Dependencies are now recursively considered. Each module should include a dependency for all its external references.
-
Here is a list of supported and upcoming dependency kinds:
- reference - module is referenced and a codewalk will be used to only include referenced classes
- include - module is referenced and all classes will be included wheter referenced or not
- error - module is referenced but module inclusion is optional. If a reference is called, generate a runtime error describing the missing module
- load (upcoming) - module is referenced but module inclusion is optional. If a reference is called, autoload the missing module transparently to the user
- install (upcoming) - module is referenced but module inclusion is optional. If a reference is called, trigger the installer program to let the user install the missing module
- Removed the very confusing "Export Manifest..." menu item of the "Project" menu as now Jazz automatically generates the manifest file when launching an application. The manifest generation logic has also been improved making then generation instantaneous.
-
The new work on dependencies enabled an old patch of wrapping certain class loads with
(load 'class-name)
to be removed everywhere.
- Fixed a bug that made Jedi crash if walk errors where present in the user class.
2006-12-29
- Added the ability have multiple recordings available at the same time.
- Fixed a bug in the compiler when compiling externals returning void.
- Fixed many small bugs in the threading system.
- Many improvements to the socket and JRM implementations.
- Finally took the time to clean and unify all the logging related classes.
-
Added very simple
get-parameter
and set-parameter
methods to help in building thread safe code. Note that these two methods can be very simple and naive as Jazz doesn't support continuations.
- The compare files tool now displays the name of the compared files in its title.
- Fixed a memory leak in the String-Printer class.
-
The
wait-for
method can now wait on multiple objects.
-
A process can now call the
signal-readyness
method to signal its boot is completed. This can be combined with a new wait-ready
keyword of Shell.create-process
to wait on a process beeing ready.
-
Added the code necessary to regenerate the local version of the jazzscheme.org website as code in the Jedi-User class. For the moment there is no fancy GUI to manage all this, the
regenerate-jazzwebsite
method is simply called by the test0
method that can be invoked by Ctrl-0.
- Did a simple ping server to help debug some socket stuff that I added afterwards to the org.jazz.samples product.
2006-12-18
- Made the project dependencies into a permanent subcomponent of Project.
- Renamed the two JML building macros to jml>> and form>>.
- Added an editable? property to products and made org.jazz and org.jedi non-editable to stop a user from inadventently modifying them.
- Added drag & drop from the Windows explorer to the Workbench.
- Added a "Synchronize Contents" button to the Workbench that will select the entry corresponding to the current document if it is found.
- New "Add Document..." item in the Workbench context menu that will create a file based on a template and add it to the selected group or product.
- Small fixes in the view debugger highlighting.
- The XHTML-Renderer nows handles correctly the pre tag and inserts no whitespace.
- Backward and Forward in History toolbar and menu items are now enabled / disabled according to the current history.
- If text is selected when invoking the Class Browser, it will be entered as the class name.
- Many small improvements to the Login dialog.
-
Added new
tab-stop-enter
and tab-stop-exit
methods to the View class.
- Replaced the doubtful heuristic used when generating remotable code by an explicit remotable? property of product files settable from the Workbench.
2006-12-13
- First early release version of JazzScheme.