[updates] 61 for 2.9a
Dan.Ingalls at disney.com
Sat Dec 2 00:45:44 UTC 2000
About a dozen of these are from SqC, but the middle 50 or so are all from SqueakList contributions, carefully culled by Stefan Matthias Aust (thank you!). And thanks also to Bob Arning who helped a lot wit the secondary vetting.
[Bruce: I may have a couple more before the end of the evening]
Here are the summaries...
2989TfmFixes-ar -- Andreas Raab -- 21 November 2000
Some fixes for transformed grabs and drops."
2990FixPianoKeyboards-di -- Dan Ingalls -- 18 November 2000
Adapts the keyboard to the new event dispatching logic.
It was necessary to pass mouse focus from note to note.
2992noSubmorphs-raa -- Bob Arning -- 23 November 2000
- guard a #firstSubmorph with a test for no submorphs"
2993CipherPanelFix -- Dan Ingalls -- 24 November 2000
Fixes a problem introduced by the new Alignment protocols.
2994HandTweaks-ar -- Andreas Raab -- 25 November 2000
Two tweaks for faster hand redraws."
2995mvcWorldFix-raa -- Bob Arning -- 27 November 2000
- guard against premature access of worldState"
2996higherPerformance-raa -- Bob Arning -- 24 November 2000
This is mostly a Mac issue, but may have some effect on other platforms. These changes do not take effect until you set the preference #higherPerformance to true. The impact of setting this pref to true may be higher performance for this Squeak image, but lower performance for other applications/processes that may be running concurrently. Experiment with your particular configuration/desires and decide for yourself.
1. In order to reduce the amount of time lost (perhaps 20 to 30% in some cases) to background applications on the Mac, change the strategy used to poll for UI events. Every time we poll the OS for UI events, increase the delay until the next check. Every time Squeak actually requests an event from EventSensor, reset the delay to its normal value (20 ms). This means that a long-running evaluation started in the UI process will receive less competition from background apps (and less overhead even if it is the only app), but normal UI-intensive operations will happen as they do now. What is lost by this change is some sensitivity to mouse events that occur while Squeak is busy over long periods. My thought is that if Squeak is so occupied for a period of seconds, these events are much less useful and perhaps even harmful.
2. Reduce the minimum morphic cycle time (MinCycleLapse) so that the frame rate (and, hence, running of #step methods) can proceed at greater than 50 frames per second. This can be quite beneficial to things like simulations that are run via #step.
---executable code follows"
balloonHelp: 'May offer higer performance at the expense of other applications on your computer. See the comment in EventSensor>>higherPerformanceNotes for more details'.
2997DoubleInitFix-len -- Luciano -- 27 November 2000
Fix a double initialization problem in KlattVoice and Speaker."
2998TetrisFix -- Dan Ingalls -- 27 November 2000
Two fixes, suggested by Andreas Raab to make Tetris compliant with the new alignment protocols.
2999CrosticFix-di -- Dan Ingalls -- 28 November 2000
Removes the method minExtent from TextMorph, which had clashed with the new alignment protocol.
Includes two other changes to restore CrosticPanels to operation in the new world.
3000benchmarkTweaks-di -- Dan Ingalls -- 29 November 2000
A couple of tweaks that make it more convenient to run, eg, FreeCell or the InterpreterSimulator as performance benchmarks.
3001interpBuildFixAfterJ3 -- johnmci at smalltalkconsulting.com -- 21 November 2000
after the jit3 updates were applied we are unable to build an interp.c, unless we apply these changes"
3002MacroBenchmarks-di -- Dan Ingalls -- 29 November 2000
This changeSet defines several macro benchmarks for Squeak. They are designed to serve both as torture tests and as typical profiles for a number of modes of operation. The current relevance is in testing the J3 VM, and in measuring improvements to garbage collection.
To use the benchmarks, start a morphic project with 10MB free, and print the result of
This should give you a list something like #(43215 53122 81336 26927 8993 12607 9024) -- from a 400MHz G3. The seven tests are are...
1: Decompile, pretty-print, and compile a bunch of methods
does not install in classes, so does not flush cache
2: Build morphic tiles for all methods over 800 bytes (!)
does no display
3: Translate the interpreter with inlining
does not include any plugins
4: Run the context step simulator
200 runs printing pi and 15 factorial
5: Run the InterpreterSimulator for 150,000 bytecodes
will only happen if you have mini.image in your directory
6: Open 10 browsers and close them
includes browsing to a specific method
7: Play a game of FreeCell with display, while running the MessageTally
thanks to Bob Arning for the clever part of this one
3003GzipCrostics -- Dan Ingalls -- 30 November 2000
Lets CrosticPanels open directly from gzipped files. Smaller, more transportable, and don't give away the solution if you see them in the fileList.
3005BenchmarksAgain -- Dan Ingalls -- 30 November 2000
Mainly a clarification. Adds the following comment to SystemDictionary>>macroBenchmarks:
PLEASE TAKE NOTE: The goal of these benchmarks is to provide a simple basis for A/B performance comparisons with a given Squeak image. For example JIT vs interpreter, new GC vs old, etc. However, a number of these benchmarks will drift with evolution of the Squeak image, as, for instance, if the number of methods decompiled in macroBenchmark1 were to change. Therefore it is essential NEVER to make comarisons between macroBenchmarks run from two different images.
3006newZoomAndScroll-raa -- Bob Arning -- 20 November 2000
- preset Alan's preferred scale factors for pan and zoom
- try to keep center of image centered as we zoom
- an effort is made to keep the view full of content
- two sliders are added to experiment with scale factors for pan/tilt and zoom
- we were already doing this: Also, looking ahead into the future a little, each page in the
bookmorph will have its own zoom, pan and tilt settings ....
- do not rely on continuous mouse moves
- adjust things dropped into inner pasteup so that none extend over left or top edge
- added scripting commands to StoryboardBookMorph for getting and setting scale, offsetX and offsetY (of the current page).
- made contents of the zoomer a true playfield in a transformation so multiple morphs are possible
- zooming/scrolling controls now in a separate area below the page
- Balloon interpolating mode now the default
- ZoomAndScrollMorph becomes a PasteUpMorph so it can be in a book
- StoryboardBookMorph is a book that uses ZoomAndScrollMorph as its pages
zooming and scolling for Alan
- get a ZoomAndScrollMorph from the new morph/demo menu
- drop any morph in it
- drag mouse horizontally to pan
- drag mouse vertically to zoom
- shift-drag vertically to move up/down
- change the instance variable <usingBalloon> to true to use Balloon"
3007fixDebug-raa -- Bob Arning -- 1 December 2000
- fix debug option on menu in SyntaxError to work in morphic"
3008AlphabetCopy-rhi -- Robert Hirschfeld -- 8 September 2000
Looks like Robert wants to make sure that nobody using #alphabet accidentally changes the string. Why, oh why don't we have constant literal strings in Smalltalk? --sma"
3009ChgSorterAnnPanes-rhi -- Robert Hirschfeld -- 10 September 2000
Makes ChangeSorter>>openAsMorphIn:rect: and ChangeSorter>>openView:offsetBy: sensitive to Preferences for #annotationPanes and #optionalButtons.
RAA - 27 Nov 2000 - actually I don't see any reference to optionalButtons in here"
3010DateNewCentury-rhi -- Robert Hirschfeld -- 17 September 2000
Takes Date class>>newDay:month:year: into the new century ... :)
Well, to make the change less radical, I modified it to take 00..49 as 2000..2049 and 50..99 as 1950..1999 - the usual y2k-time window fix. I highly recommend to NEVER use two digit numbers --sma"
3011FindAMorph-rhi -- Robert Hirschfeld -- 10 September 2000
Morph>>findA: (25 senders in the base image) and Morph>>submorphOfClass: (2 senders in the base image) do the same. Now there is only one implementation of that behavior in Morph>>findA:, and Morph>>submorphOfClass: itself calls Morph>>findA:. (Not one of the big contributions to clean up Morph, but still ... :-)
Actually, the numbers are 43 and 3 :-) and I feel the urge to remove submorphOfClass:... --sma"
3012KindOfSubclass-rhi -- Robert Hirschfeld -- 24 September 2000
There are identical implementations of #kindOfSubclass in Behavior and ClassDescription.
Robert wanted to remove the one in Behavior but I think, ClassDescription is better as this will less likely break existing code. --sma"
3013PackageBrAnnPanes-rhi -- Robert Hirschfeld -- 10 September 2000
Fixes PackageBrowser>>openAsMorphEditing: to be sensitive to Preferences for #annotationPanes and #optionalButtons. (Was already in the update stream as 2280PackBrOptBnt-rh but got lost. Now merged with drag-and-drop changes ...)"
3014SUnit2Fixes-rhi -- Robert Hirschfeld -- 29 October 2000
In 2459SUnit2-rh, where the SUnit-Documentation and SUnit-Tests categories got removed, TestFailure must have gotten lost as well. This change set reintroduces TestFailure.
Note: Here are some pointers regarding recent CampSmalltalk SUnit ports and enhancements:
3015Atlanta-ls -- Je77 Rick and Lex Spoon -- 25 September 2000
[Please note, this is a postscript only change set!]
Adds Atlanta, a monospaced text style. Atlanta is copyrighted by Je77 but is free for any use.
Great work. What to see the font? Here it is:
(TextStyle named: 'Atlanta') defaultFont fontDisplay
3016SeqCollForceToFix-dew -- Doug Way / Andres Valloud -- 30 October 2000
Fixes a bug in SequenceableCollection>>forceTo:paddingWith: introduced in update #2018. Executing ''asdf' forceTo: 3 paddingWith: $-' was causing an error, instead of being truncated. This new version still includes the optimizations from #2018, but with an extra check to handle this case.
Actually on the behalf of Doug, this has been replaced by a better change of Andres --sma"
3017BalloonColorBug-dns -- David N. Smith -- 11 November 2000
A Balloon is initialized with the color 'Color paleYellow', but this color is never used. Instead, the color is obtained from 'Morph balloonColor' which answers white or 'Color r: 1.0 g: 1.0 b: 0.6' depending on the display depth.
Note that paleYellow is' Color r: 1.0 g: 1.0 b: 0.85'.
Since the initialized value is never used this bug seems harmless. It's another candidate for most trivial bug report. A fix is attached."
3018BalloonColors-sma -- Stefan Matthias Aust -- 11 November 2000
Dave N Smith sugested that one should be able to change the bubble help color - why not...
I changed and optimized his version. You can use 'BalloonMorph setBalloonColorTo: Color red' to change the default balloon color. Each morph can change its balloon color using #balloonColor:."
3019DropMorphOnWS-jcg -- Joshua Gargus -- 5 November 2000
Now updated to work with the glorious Truth and Beauty that Andreas brought to Morphic's event handling!
Adds the ability to drop a morph on a Workspace with the following results:
1. a unique name is created for the morph, based on its class and identity hash.
2. this name is added as a key to the Workspace binding, with the morph as its value.
3. this name is inserted at the Workspace's current insertion point.
This functionality is toggled by a menu item in the SystemWindows menu (to the right of the 'close window X').
I added the method PluggableTextMorph>>correctSelectionWithString: to insert the name at the proper point, but I fear it's a hack that doesn't do things the right way. Anyone with more familiarity with text handling than I have is encouraged to criticize."
3020MultiPattern-sma -- Stefan Matthias Aust -- 11 November 2000
I found an old changeset from Ned Konz suggesting multiple patterns in a file list. I liked that idea and implemented a slightly different approach. Instead of using CR to separate patterns (I still hope someday someone will change the file list to accept patterns on CR) I use ';' which is at least on Windows the way to do this kind of muli-patterns. You can now use '*.st; *.cs' to browse both source and change sets. I also refactored the sortBlock."
3021HierarchicalUrlFix-hmm -- Hans-Martin Mosner -- 10 November 2000
With changeset 2736, HttpURLs lost their ability to use ports other than the default. This fix restores that ability."
3022HierarchyArrowBg-dew -- Doug Way -- 7 November 2000
The arrows in the hierarchy widget currently have some problems displaying themselves cleanly on non-white backgrounds. E.g. in 8-bit depth mode, if you open an object explorer, inpect its SimpleHierarchicalListMorph via the debug halo, and then set the SHLM color by doing 'self color: Color paleGreen', the arrow Forms back in the object explorer will have little white squares around them when they should be transparent. (even if you re-initialize expandedForm and nonExpandedForm by setting them to nil beforehand)
This is a simple fix which explicitly sets the arrow Form backgrounds to be transparent. I did some MessageTallys and there's no measurable impact on performance."
3023SeqCollAtAllFix-apb -- Andrew Black -- 15 October 2000
Bug fix implemented at OOPSLA 2000 Camp Smalltalk.
The bug was that #atAll: #(3 2) worked for Arrays but not for OrderedCollections."
3024ChangeSorterFix-sma -- Stefan Matthias Aust -- 11 November 2000
When using fileIntoNewChangeSet from the file list while a change sorter is open, its selection is messed up. I think I fixed that with some refactorings."
3025ScrollBarPositionFix-dew -- Doug Way, Camp Smalltalk 3 @ OOPSLA -- 5 November 2000
Fixes a longtime problem with updating the position of the scrollbar when the contents of a scroll pane increases or decreases significantly in length. Basically, the scrollbar position was not being updated before, and now it is. Also refactors things so that SimpleHierarchicalListMorph>>setScrollDeltas is removed.
(The bug is easiest to reproduce in an object explorer, if you expand things and scroll down so that the scrollbar thumb is in the middle of its range, and then expand an item in the explorer which has a lot of children. Then if you click on the up arrow in the scrollbar, the pane will skip to the wrong place because the scrollbar position hadn't been updated.)"
3026ImageOverwrite-dew -- Michael Hewner, Doug Way, Camp Smalltalk 3 @ OOPSLA -- 3 November 2000
Fixes a problem where if you tried to do a 'save as...' over an existing image, an error notifier appeared. This enhances things so that a confirmation pop-up appears asking if you're sure you want to overwrite, which you can accept or cancel. (This ended up involving a fair amount of work, including adding a force-copy operation to FileDirectory, and some refactoring was done along with this.)"
3027OverhangScrollbFix-dew -- Mathieu van Echtelt, Camp Smalltalk 3 @ OOPSLA -- 3 November 2000
Fixes a bug in which it was impossible to resize (with the yellow dot) a Morphic window pane, if an inboard scrollbar happened to overhang below the bottom of the pane. This happened with very short panes, such as the top pane of a hierarchy browser or the bottom pane of a file contents browser."
3028HalloweenFixes-bf -- Bert Freudenberg -- 1 November 2000
* Magnifier used Hand>>lastEvent for no good reason.
* A scheduled balloon popup would fail when the morph was deleted in the mean time."
3029PointHash-sqr -- Andres Valloud -- 3 November 2000
Reimplements Point>>hash to use hashMultiply.
Soon, we should implement hashMultiply as a primitive and let the system fly!"
3030CEFilenameFix-je -- Jörn Eyrich -- 8 November 2000
Ned Konz wrote:
DosFileDirectory>>fullPathFor: '\CF\Squeak\tiny.changes' returns '\C\CF\Squeak\tiny.changes'.
The problem is that the code there expects the instvar 'pathName' to be something starting with a volume letter and a colon. However, WinCE doesn't have volume letters. So FileDirectory default in this case is '\CF\Squeak'.
Either we need a separate FileDirectory subclass, or we need a conditional in there that checks to see whether there is a drive letter.
My suggested fix is attached."
3031DebugFixPrintHandler-hg -- Henrik Gedenryd -- 9 October 2000
If a printOn: fails, the included method is needed but missing."
3032DebuggerEnh-kfr -- Karl Ramberg -- 11 November 2000
Changes the pre debug window to use a PluggableListMorph so one can
click on the stack line that one is interested in to bring the debugger up
on just that method."
3033ProcessBrowser-nk -- Ned Konz -- 29 October 2000
This is a preliminary version
of my Process Browser.
It works under 2.9 (CS 2774), and under
2.8, but you have to have my DebuggerFixFor2.8-nk.1.cs
change set loaded first for 2.8 to work.
NOTE: as this is now being added to 2.9, I have removed the 2.8-only stuff - RAA
This is distributed under the Squeak License.
email: ned at bike-nomad.com
Added 29 October:
port for 2.8
made an MVC version
fixed deferred UI updating under 2.8 and MVC
added pointer chasing/inspection
misc. bug fixes
made it smarter about well-known processes
Added 26 October: highlight pc in source code
Added 27 October: added 'signal semaphore'
added 'inspect receiver', 'explore receiver', 'message tally' to stack list menu
added 'find context', 'next context' to process list menu
added 'change priority' and 'debug' choices to process list menu
27 October mods by Bob Arning:
alters process display in Ned's ProcessBrowser to
- show process priority
- drop 'a Process in' that appears on each line
- show in priority order
- prettier names for known processes
- fix to Utilities to forget update downloading process when it ends (1 less dead
- correct stack dump for the active process
3034ProcessBrInMenu-dew -- Doug Way -- 14 November 2000
Adds the new ProcessBrowser to the debug... menu as 'open process browser', just below the MessageTally items."
3035PrettyDiffs-nk -- Ned Konz -- 29 October 2000
I got tired of seeing major diffs just because someone reformatted a method or changed its spacing.
This uses the source code formatting to provide pretty-printed diffs. Turn this on or off in Preferences/browser/diffsWithPrettyPrint."
3036NaughtyCode-ls -- Lex Spoon -- 23 October 2000
Hand-written parsers tend to accept more input than they should. Happily, my hand-written parser has different errors than Squeak's. :)
Here's a few fixes for out-of-scope accesses to block variables, and accidentally using ''super'' as a message."
3037ExplorerString-sma -- Stefan Matthias Aust -- 12 November 2000
This implements the compromise Doug Way and Bob Arning (sort of) worked out regarding asString/printString in the object explorer. As the explorer is mainly a programmer's tool, I agree with Doug that it should use printString as default."
3038SubclassFix-bf -- Bert Freudenberg -- 19 October 2000
When 'variableWordSubclass'-ing the browser complained because it explicitly looked for a 'subclass' token."
3039InterpreterSimFix-sr -- Stephan Rudlof -- 21 July 2000
Fix of InterpreterSimulator
>>ioLoadExternalFunction: functionName OfLength: functionLength FromModule: moduleName OfLength: moduleLength :
functionName should be copied into functionString (and not pluginString).
3040ShiftCrOffBy1-hg -- Henrik Gedenryd -- 9 October 2000
If you do shift-cr with the cursor at the end of the edited text (as regularly when typing a new method), you get an error. A fix for a long-standing off-by-one bug."
3041ArrowFixes2-nk -- Ned Konz -- 6 October 2000
This change set adds the ability to have four kinds of arrow heads: concave and triangular, open or filled.
Requires 2.9a and 2765ArrowTweaks2-di changeset.
---not the same number in all update streams---
detect: [ :ea | ea name = '2765ArrowTweaks2-di' ]
ifNone: [ self error: 'prerequisite 2765ArrowTweaks2-di not present' ]"
3042UrlWithPortFix-nk -- Ned Konz -- 9 October 2000
This change set fixes handling of URL's
with ports specified, like:
[only added partly as hmm provided already a fix for toText --sma]
3043EnhBlockCxtErrMsg-mdr -- Mike Rutenberg -- 5 October 2000
This changes the error message to not only tell you how many arguments are required by a block, but also how many were used in the attempted evaluation.
Can be tested by evaluating
 value: 1 value: 2"
3044MemHooksRevised-go -- Georg Gollmann -- 4 October 2000
Somewhere in the 2.9a upgrade stream the memory hogs mechanism was disabled (but not fully removed). This fileIn reintroduces it in a slightly robuster way."
3045NewSymbolTable1-sqr -- Andres Valloud -- 1 September 2000
New symbol table, first changeset of who knows how many.
Implements WeakSet, install support code in Symbol. Also removed old Bob code from Symbol class"
3046NewSymbolTable2-sqr -- Andres Valloud -- 1 September 2000
Catch all created symbols"
3047NewSymbolTable3-sqr -- Andres Valloud -- 23 August 2000
3048NewSymbolTable4-sqr -- Andres Valloud -- 24 August 2000
Install new symbol table"
3049NewSymbolTable5-sqr -- Andres Valloud -- 24 August 2000
Remove code using old symbol tables.
Removed otherThatStarts:skipping: because there were no senders.
Added do:after: to WeakSet"
3050NewSymbolTable6-sqr -- Andres Valloud -- 30 August 2000
Removes old symbol tables (and the system keeps working after that).
Added Symbol>>compactSymbolTables. Utility method that will crunch the symbol tables to a barely acceptable size"
3051NewSymbolTable7-sqr -- Andres Valloud -- 30 August 2000
Symbol table minor diffs & utility methods.
[That's it. Let's cross our fingers that everything works as before :-) --sma]"
3052LinkFixe-apb -- Andrew P Black -- 3 October 2000
The Link class method #nextLink:, which should answer a new instance of Link, instead answered nil.
The fix is the obvious addition of 'yourself'.
The one place that should have used this method -- SystemDictionary>>useUpMemory -- carefully programmed around this bug, so I changed that code so that it now uses #nextLink: in the natural way."
3053TransformStepTime-mdr -- Mike Rutenberg -- 3 October 2000
Morphs which have been rotated are ticked according to Transformation stepTime. This simple change ensure that the tick rate for a morph is uniform whether it is rotated or not.
Create a new ClockMorph (or more dramatically a MonthMorph)
Create an always ticking script which turns the clock by 5.
3054Paragrap-apb -- Andrew P Black -- 1 October 2000
The example code inserted by ''explain ...'' had a spurious ''#'' which made it unexecutable. I also improved the message a little for the case of the an undeclared variable."
3055CelesteEnc-bf -- Bert Freudenberg -- 9 March 2000
Makes Celeste use iso8859-1 encoding internally while doing on-the-fly conversion to Squeak encoding for the UI. Also allows importing from Unix mailbox files by using CrLfFilestream.
[This hasn't need test - remove it if it breaks Celeste --sma]"
3056ScamperEnc-bf -- Bert Freudenberg -- 4 November 1999
Makes Scamper recognize special character entities (like schöne German umlauts) and does iso8859-1 to Squeak character conversion."
3057CorrectionTweak-di -- Dan Ingalls -- 1 December 2000
A minor rework of Squeak's symbol corrector. It eliminates the old two-tier correction, trying hard from the start, and showing you up to 10 alternatives.
By employing a different early filter on the candidates, it now accomplishes the full correction in the same time as the old simple correction.
3058MacSoundVolSupport-JMM -- johnmci at smalltalkconsulting.com -- 6 November 2000
left/right sound volume support for macintosh"
3059EmbeddedExecutable-JMM -- johnmci at smalltalkconsulting.com -- 21 November 2000
Basic support to snapshot an image into a VM, support for this must come from the target platform, post 2.9.5 macintosh VM support this"
More information about the Squeak-dev