Breaking in Jabberwocky

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Breaking in Jabberwocky

Andreas.Raab
Hi Folks -

I finally found the time to break in Jabberwocky by doing a sync of the
Homebase repository with the Qwaq internal code base. All of these
changes have been in use inside Qwaq for quite a while and improve
various aspects of the system (detailed change log below). The changes
shouldn't affect anything negatively (they are mostly conservative
fixes) but if you find any problems, please let me know.

To use those changes, you need to point Monticello at the Jabberwocky
server:

   http://jabberwocky.croquetproject.org:8889/Homebase

and load the updated packages from there. Note that there is a
load-order dependency which requires the System package to be loaded
*before* the Morphic package, so make sure you get the changes in the
right order or you'll run into problems. I have found that (starting
with the 1.0 release) a good way to load these changes is to start with
"System" and then load (or merge) everything else in alphabetical order.

It might also be good if we could provide a preloaded Jabberwocky image
for such purposes. Mark, any chance you could give this a shot?

Special thanks to Bert Freudenberg, Goran Krampe, John McIntosh, Tim
Rowledge and Scott Wallace who contributed to these fixes.

And of course, all of this work was sponsored and brought to you by
Qwaq, provider of secure collaboration spaces for enterprises.

Enjoy,
   - Andreas

CHANGE LOG:

Collections:
===========
* ReadStream>>nextFloat is a new method for fast reading of floating
point numbers (it outperforms Float>>readFrom: by a factor of ten)
* SharedQueue>>includes: allows to safely test a shared queue for
inclusion of objects
* Transcripts now have their own text styles since TTFs can be very slow
for heavy transcript usage
* WeakCache provides a simple and easy way to weakly cache objects
* A fix for PositionableStream>>nextWordsInto:
* A fix for Stream>>printOn:
* ifEmpty: and cousins now return self if not empty instead of nil

CollectionTests:
===============
* New tests for the expected behavior of ReadStream>>nextFloat

Compiler:
=========
* Added Scott's workaround to avoid logging the entirety of a workspace
when evaluating a doIt
* We now accredit Undeclared variables in the same way we accredit
shadowed variables, e.g., by listing Class>>method for the undeclared
variable

Exceptions:
==========
* A new exception, OutOfMemory, has been added. It will be signaled when
an allocation fails due to insufficient memory (like "Array new:
SmallInteger maxVal")
* AssertionFailure (a runtime condition) has been changed into a
subclass of Error, not Halt so that it can be caught by the runtime
machinery

Files:
======
* DosFileDirectoryTests have been fixed.

Graphics:
========
* We now have chromatically symmetric versions of #darker and
#muchDarker which makes for perceptually more consistent gradients like
in system windows
* Bullet-proofing of strike fonts to make the font selection menu work again
* Fix WarpBlt for 16->32bit conversions with smoothing enabled

GraphicsTest:
=============
* Removed two failing tests which weren't obviously fixable.

Kernel:
=======
* Signal OutOfMemory upon allocation failure to allow clients to handle
this exceptional situation if they want to
* Added a process token which allows explicit transfer of mutex
ownership to other processes if needed
* Included Tim's fix for extra-long delays which would otherwise lock up
the image completely
* Added a small safeguard for condenseChanges to avoid filing out the
same methods multiple times
* Added protection against setting the comment of a metaclass
* Added fix for Process>>signalException: which would not work for
subclasses of Process
* Added a class comment for WeakMessageSend

KernelTests:
============
* Removed a number of non-working and fixed a number of broken tests

Monticello:
==========
* Make the repository inspector just a tad larger so that users can read
most of the change log of a submission and not just the first line
* Reverted some changes done last year since they broke the tests and
the tests were obviously correct
* Fixed or removed non-working tests

MonticelloConfigurations:
=========================
* Disable MCC diffs by default but add a preference for re-enabling them

Morphic:
========
* SystemWindow improvements: Unobtrusive coloring, no pixellated
outlines in buttons and better button alignment
* Change the Morphic progress to be visually consistent with the Tweak
progress bar
* Make it possible for Morphs to deny the meta menu if they need to
handle control clicks directly
* Use a nice, happy green for progress
* Use system control font for progress bar

MorphicTests:
=============
* Fixed or removed non-working tests
* Fixed TransformMorphTest not to leave remnants on the screen

Multilingual:
============
* Dodge an infinite recursion when a TTCFont has a fallbackFont whose
baseFont is that same TTCFont
* Fixed or removed non-working tests

Network:
=======
* Update for SocketStream to use Goran's FastSocketStream for added
speed and robustness
* Fix HTTPUrl not to use a non-existent method to ask for password
* Add a guard for an intermittent low-level I/O problem by having the
(blocking) Socket>>waitForData: call wait in chunks of 500ms

NetworkTests:
=============
* Removed non-working tests

SMBase:
======
* Fix an erroneous use of on: Exception do: which will cause all MC
packages to fail to load from SM since they use notifications for
progress indicators
* Fixed or removed non-working tests
* Removed SMDependencyTest since it required user interactions

Sound:
=====
* Added a variety of missing methods to RepeatingSound

ST80:
=====
* Fixed or removed non-working tests
* Clipboard now uses preference #usePrimitiveClipboard to decide whether
to use the OS clipboard, or just cut'n'paste within Squeak

System:
======
* Support for getting and setting the VM's window label
* Fix condenseChanges to use the known classes and not blindly all
behaviors (this can lead to filing out methods multiple times if
obsolete classes exist)
* Have condenseChanges imply a saveAs to preserve the previous image
* Moved some methods from SmalltalkImage back to SystemDictionary (where
they belong anyway)
* Added Smalltalk>>verifySaneSources to make sure the sources are okay
* speed up browsing by not showing the number of implementors of each
method in the annotation panes - it takes an immense amount of time
* Reduce duplicate code in SystemDictionary and SmalltalkImage by moving
most methods from SmalltalkImage back to where they really belong
* Added class comments for EventManager and MethodReference
* Introduced standardControlFont for pushbuttons and labels in Tweak
widgets.
* Add 'usePrimitiveClipboard' preference so that we don't crash when
using the clipboard on unix (we can't cut'n'paste between Squeak and
other unix apps, but at least we don't crash).
* Expose gcBiasToGrow and gcBiasToGrowLimit for tuning GC parameters

Tests:
======
* Removed some non-working tests; fixed one test

ToolBuilder:
============
* Removed non-working tests

Tools:
======
* Dramatically speed up PackagePaneBrowser by caching the currently
selected package
* Another major speedup for browsers by caching the message list

VMMaker:
========
* Added VM callback support
* Added support for external GC roots
* Added primitives for getting/setting the VM's window label
* Added a triangle/box intersection primitive to CroquetPlugin
* Fix or remove non-working tests
* Added John McIntosh's QuickTime plugin (JMMMacQuicktimePlugin.3.cs).
* Fix the typo in biasToGrow which John pointed out
Reply | Threaded
Open this post in threaded view
|

Re: Breaking in Jabberwocky

David A. Smith-3
Thanks Andreas,

And everyone else that helped get this out the door. It is a terrific -
and essential - foundation for the next big steps.

David


Andreas Raab wrote:

> Hi Folks -
>
> I finally found the time to break in Jabberwocky by doing a sync of
> the Homebase repository with the Qwaq internal code base. All of these
> changes have been in use inside Qwaq for quite a while and improve
> various aspects of the system (detailed change log below). The changes
> shouldn't affect anything negatively (they are mostly conservative
> fixes) but if you find any problems, please let me know.
>
> To use those changes, you need to point Monticello at the Jabberwocky
> server:
>
>   http://jabberwocky.croquetproject.org:8889/Homebase
>
> and load the updated packages from there. Note that there is a
> load-order dependency which requires the System package to be loaded
> *before* the Morphic package, so make sure you get the changes in the
> right order or you'll run into problems. I have found that (starting
> with the 1.0 release) a good way to load these changes is to start
> with "System" and then load (or merge) everything else in alphabetical
> order.
>
> It might also be good if we could provide a preloaded Jabberwocky
> image for such purposes. Mark, any chance you could give this a shot?
>
> Special thanks to Bert Freudenberg, Goran Krampe, John McIntosh, Tim
> Rowledge and Scott Wallace who contributed to these fixes.
>
> And of course, all of this work was sponsored and brought to you by
> Qwaq, provider of secure collaboration spaces for enterprises.
>
> Enjoy,
>   - Andreas
>
> CHANGE LOG:
>
> Collections:
> ===========
> * ReadStream>>nextFloat is a new method for fast reading of floating
> point numbers (it outperforms Float>>readFrom: by a factor of ten)
> * SharedQueue>>includes: allows to safely test a shared queue for
> inclusion of objects
> * Transcripts now have their own text styles since TTFs can be very
> slow for heavy transcript usage
> * WeakCache provides a simple and easy way to weakly cache objects
> * A fix for PositionableStream>>nextWordsInto:
> * A fix for Stream>>printOn:
> * ifEmpty: and cousins now return self if not empty instead of nil
>
> CollectionTests:
> ===============
> * New tests for the expected behavior of ReadStream>>nextFloat
>
> Compiler:
> =========
> * Added Scott's workaround to avoid logging the entirety of a
> workspace when evaluating a doIt
> * We now accredit Undeclared variables in the same way we accredit
> shadowed variables, e.g., by listing Class>>method for the undeclared
> variable
>
> Exceptions:
> ==========
> * A new exception, OutOfMemory, has been added. It will be signaled
> when an allocation fails due to insufficient memory (like "Array new:
> SmallInteger maxVal")
> * AssertionFailure (a runtime condition) has been changed into a
> subclass of Error, not Halt so that it can be caught by the runtime
> machinery
>
> Files:
> ======
> * DosFileDirectoryTests have been fixed.
>
> Graphics:
> ========
> * We now have chromatically symmetric versions of #darker and
> #muchDarker which makes for perceptually more consistent gradients
> like in system windows
> * Bullet-proofing of strike fonts to make the font selection menu work
> again
> * Fix WarpBlt for 16->32bit conversions with smoothing enabled
>
> GraphicsTest:
> =============
> * Removed two failing tests which weren't obviously fixable.
>
> Kernel:
> =======
> * Signal OutOfMemory upon allocation failure to allow clients to
> handle this exceptional situation if they want to
> * Added a process token which allows explicit transfer of mutex
> ownership to other processes if needed
> * Included Tim's fix for extra-long delays which would otherwise lock
> up the image completely
> * Added a small safeguard for condenseChanges to avoid filing out the
> same methods multiple times
> * Added protection against setting the comment of a metaclass
> * Added fix for Process>>signalException: which would not work for
> subclasses of Process
> * Added a class comment for WeakMessageSend
>
> KernelTests:
> ============
> * Removed a number of non-working and fixed a number of broken tests
>
> Monticello:
> ==========
> * Make the repository inspector just a tad larger so that users can
> read most of the change log of a submission and not just the first line
> * Reverted some changes done last year since they broke the tests and
> the tests were obviously correct
> * Fixed or removed non-working tests
>
> MonticelloConfigurations:
> =========================
> * Disable MCC diffs by default but add a preference for re-enabling them
>
> Morphic:
> ========
> * SystemWindow improvements: Unobtrusive coloring, no pixellated
> outlines in buttons and better button alignment
> * Change the Morphic progress to be visually consistent with the Tweak
> progress bar
> * Make it possible for Morphs to deny the meta menu if they need to
> handle control clicks directly
> * Use a nice, happy green for progress
> * Use system control font for progress bar
>
> MorphicTests:
> =============
> * Fixed or removed non-working tests
> * Fixed TransformMorphTest not to leave remnants on the screen
>
> Multilingual:
> ============
> * Dodge an infinite recursion when a TTCFont has a fallbackFont whose
> baseFont is that same TTCFont
> * Fixed or removed non-working tests
>
> Network:
> =======
> * Update for SocketStream to use Goran's FastSocketStream for added
> speed and robustness
> * Fix HTTPUrl not to use a non-existent method to ask for password
> * Add a guard for an intermittent low-level I/O problem by having the
> (blocking) Socket>>waitForData: call wait in chunks of 500ms
>
> NetworkTests:
> =============
> * Removed non-working tests
>
> SMBase:
> ======
> * Fix an erroneous use of on: Exception do: which will cause all MC
> packages to fail to load from SM since they use notifications for
> progress indicators
> * Fixed or removed non-working tests
> * Removed SMDependencyTest since it required user interactions
>
> Sound:
> =====
> * Added a variety of missing methods to RepeatingSound
>
> ST80:
> =====
> * Fixed or removed non-working tests
> * Clipboard now uses preference #usePrimitiveClipboard to decide
> whether to use the OS clipboard, or just cut'n'paste within Squeak
>
> System:
> ======
> * Support for getting and setting the VM's window label
> * Fix condenseChanges to use the known classes and not blindly all
> behaviors (this can lead to filing out methods multiple times if
> obsolete classes exist)
> * Have condenseChanges imply a saveAs to preserve the previous image
> * Moved some methods from SmalltalkImage back to SystemDictionary
> (where they belong anyway)
> * Added Smalltalk>>verifySaneSources to make sure the sources are okay
> * speed up browsing by not showing the number of implementors of each
> method in the annotation panes - it takes an immense amount of time
> * Reduce duplicate code in SystemDictionary and SmalltalkImage by
> moving most methods from SmalltalkImage back to where they really belong
> * Added class comments for EventManager and MethodReference
> * Introduced standardControlFont for pushbuttons and labels in Tweak
> widgets.
> * Add 'usePrimitiveClipboard' preference so that we don't crash when
> using the clipboard on unix (we can't cut'n'paste between Squeak and
> other unix apps, but at least we don't crash).
> * Expose gcBiasToGrow and gcBiasToGrowLimit for tuning GC parameters
>
> Tests:
> ======
> * Removed some non-working tests; fixed one test
>
> ToolBuilder:
> ============
> * Removed non-working tests
>
> Tools:
> ======
> * Dramatically speed up PackagePaneBrowser by caching the currently
> selected package
> * Another major speedup for browsers by caching the message list
>
> VMMaker:
> ========
> * Added VM callback support
> * Added support for external GC roots
> * Added primitives for getting/setting the VM's window label
> * Added a triangle/box intersection primitive to CroquetPlugin
> * Fix or remove non-working tests
> * Added John McIntosh's QuickTime plugin (JMMMacQuicktimePlugin.3.cs).
> * Fix the typo in biasToGrow which John pointed out
>