[updates] Release of 2.8 / the next two weeks

Dan Ingalls Dan.Ingalls at disney.com
Mon Jun 12 20:57:21 UTC 2000


Folks -

I have just released what will (possibly) be the last updates for 2.8, as summarized at the bottom of this message.  Much as we might like to leave behind a new release with many changes and no testing as most of Squeak Central heads out of town for two weeks, we will not do this.  Instead, after a few hours of testing we will issue a version-change update to 2.8, followed by another version change update to 2.9alpha.  Everyone should elect to advance to 2.8, and test pilots may also press on to 2.9alpha.

We will then release a couple of large updates (alternative syntax from me an multi-world work from Bob Arning) as the beginning of 2.9alpha.  This is just to get the bulk of our pending code out, in case there is a move to do some refactoring and cleanup early in 2.9.

We plan to let 2.8 sit unreleased while we are away (roughly the end of the month).  Bugs that are discovered will be fixed, and we still plan to address some of the organization and visual aspects (ie content) of the release image before we make it official.

Who will be minding the store during this period?  Ted Kaehler, Lex Spoon, and Bob Arning will all be watching the list, fixing things and issuing updates as usual.  The rest of us are hoping things stay a little quiet until the end of the month.

As soon as we are back in action, we'll do a proper release of the 2.8 fork, condensing changes, and hopefully folding in some of the suggestions for improved appearance.

If you have a chance, please try out these changes (there's a new Mac VM with SR's latest LargeInteger work -- I think Bob's DSA is now faster than the DSA plugin as a result).    By the way, new VMs include the LargeInteger (and several other) primitives, and you must therefore *remove or rename* any old plugin you have if you don't want it to overide the newer code.

Enjoy
	- Dan

---------------------------
2312FasterUpdates-ls -- Lex Spoon -- 7 June 2000
Retrieve updates in a separate thread from the one they are processed in, thus allowing some concurrency and making the update process faster."

2313LargeIntegersPlugin-3 -- Stephan Rudlof -- 10 June 2000
Version:			1.1
- >>primGetModuleName for checking the version of the plugin -> 'v1.1';
- >>primDigitBitShiftMagnitude and >>primAnyBitFrom:to: for supporting - not installing! - unification of shift semantics of negative Integers; look for Fix-negativeRightShift-sr changeset for a description and installing this functionality;
v1.0 (not named in the previous update)
- speeds up digitDiv:neg: at about 20%.
Precondition: 2163LargeIntegersPlugin
If you don't know how to compile a plugin, this changeset is probably of no interest for you.
Translation
-------------
LargeIntegersPlugin translateDoInlining: true
Evaluations
-------------
Try
	LargeIntegersTest getModuleName.
If it is nil, you probably have the older LargeInteger module or none at all; now you should see the version number 'v1.1'.
And
	| divident divisor |
	divident _ 1 << 1000. divisor _ 7.
	[10000 timesRepeat: [divident digitDiv: divisor neg: false]] timeToRun
with the 2163LargeIntegersPlugin (store it!) and the current variant of the module.
Implementation notes:
In >>cCoreDigitDivDiv:len:rem:len:quo:len: the 'nibble' arithmetic is removed.

2314dsaPart1-RAA -- Bob Arning -- 31 May 2000
This is the first of two changesets to DSA that will:
- fix the incompatibility between the current code and the new LargeInteger plugin
- provide some timing data useful in evaluating part two
- provide for saving some signatures to disk to validate part two
After filing this in, you can do:
- (DigitalSignatureAlgorithm runTiming) to get a short report to the Transcript showing times for various large integer arithmetic implementations
- (DigitalSignatureAlgorithm timeDecode: 20) to get timing information on signature verification with the current DSA code
- (DigitalSignatureAlgorithm writeExamplesToDisk) to save some messages with signatures and public keys to disk. This file can be used in validating the second changeset"

2315dsaPart2-RAA -- Bob Arning -- 31 May 2000
This is the second of two change sets for DSA which will:
- Replace the DSA primitives for LargeInteger arithmetic with corresponding Squeak ones. Now that we have the LargeIntegers plugin, this will allow us to verify signatures more quickly while getting rid of DSA-specific primitives.
After filing this in, you can:
- (DigitalSignatureAlgorithm timeDecode: 20) to see how signature verification times compare to the previous implementation
- (DigitalSignatureAlgorithm testExamplesFromDisk) to read some messages from a file created by the previous implementation. This will help to validate that we can still verify messages correctly.

2316SysWinVisible-mir -- Michael Rueger -- 31 May 2000
This change set works around a bug in SystemWindow causing windows to be repositioned on a Squeak (native) window collapse and restore."

2317ClickDragSelection-mir --  -- 25 May 2000

2318DndUpdate-mir --  -- 29 May 2000

2319DndImprovement-sr -- Stephan Rudlof -- 6 June 2000
- TransferMorph is grabbed at bottomLeft corner
	- animation starts at correct position;
- less animation artifacts:
	- TransferMorph will be erased at start of animation,
	- also its shadow,
	- the HandMorph, and
	- the CopyPlusIcon.

2320FasterUppercase-sma -- Stefan Matthias Aust -- 12 June 2000
I noticed that implementing #asUppercase with #collect: instead of with a WriteStream improved performance by 30%.  One could even get additional 20% by open-coding the collect method but I think shorter is better here.  If you need a really fast implmentation, do it like #asLowercase which is still 45 times (!) faster."

2321ScrollBarFix-kfr -- Karl Ramberg -- 8 June 2000
When inboard scrollbars and hidden scrollbars are selected two problems
ocured:
1 Problems with text extent in pluggableTextyMorph.
2 Scamper would crash on stratup.
I hope this fixes both :-)"

2322CelesteForwardFix-sge -- Steve Elkins -- 9 June 2000
This little change fixes a little bug in Celeste>>forwardTextFor:, making it build the Content-Type email header line the same way MailMessage>>asMultiPartText does, thus allowing email clients to recognize the parts of a message forwarded MIME-style."

2323WeakTweak-mm -- MathMorphs -- 10 June 2000
In 2277WeakValueAssocRef-mm -- MathMorphs -- 27 May 2000
the class WeakValueAssociation is changed but
WeakValueDictionary still references the obsolete version
in #at:put:.
This preamble-only change set recompiles that method in order
to place the new class in it."
WeakValueDictionary recompile: #at:put: from: WeakValueDictionary

2324HiddenScrollScamper-dew -- Doug Way -- 11 June 2000
Fixes a bug which prevents Scamper from opening with inboard scrollbars turned on.  (The problem was introduced with the HiddenScrollBar changeset 2282.)  The WebPageMorph was inadvertently trying to update its text while being opened, which caused an infinite loop."

2325CelesteMailer-kfr -- Karl Ramberg -- 12 June 2000
Here is an enhancement to MailToUrl that will try to open a CelesteComposer (Mr Postman) if the link you click on is a mail address.
[I picked up the idea and cleaned up the way it is checked for an open Celeste. --sma]"

2326BetterExplaination-jbc -- Jay Casler -- 12 May 2000
When Squeak finds a read-only changes file it reports that it cannot be found.  This fix detects that situation and produces an appropriate error message."

2327DateTimeRefac-bp -- Brent Pinkney -- 12 June 2000
This changeset changes the implementation of the Date class to Julian Day numbers and the Time class to the seconds since midnight.
Given modern CPU speeds this implementation is IMHO more elegant and terse. I have noticed no performance degradation as the implementation is a nippy SmallInteger.
This implementation was IIRC used by the IBM Open class Library for C++ and by myself on a commercial project which had heavy date manipulation.
Some methods are now marked as obsolete for possible exclusion.
Thanks also to R.A. Harmon for testing the changes agsint his ANSI compatbility suite. Indeed I think this implementationmwill made the ANSI
comapilatipl DateAndtime class simpler to implement."

2328FixHighBit-sr -- Stephan Rudlof -- 8 June 2000
Fixes a bug originating from a mixture of two-complement and magnitude arithmetics.
Introduces a differentiation between Integer>>highBit and Integer>>highBitOfMagnitude.
Integer>>highBit has *always* two-complement semantics now, and therefore it isn't defined for negative Integers.
Integer>>highBitOfMagnitude returns the number of the highest bit of the magnitude (absolute value) of the receiver, therefore it is defined as for positive as for negative Integers.
Motivation
Integer>>digitLshift: needs the high bit of the magnitude of the receiver:
This has worked
- for LargeIntegers, because their >>highBit returned their magnitude high bit, and also
- for positive SmallIntegers, because their two-complement high bit is the same as their magnitude high bit,
- but *not* for *negative* SmallIntegers, because their two-complement high bit is *not* defined!
So I have made a distinction between two-complement >>highBit and magnitude >>highBitForMagnitude and changed calling methods accordingly.
Evaluation
Evaluate
	-585148196 // -1442692966
(taken from a bug report of Andreas Raab) before and after applying this changeset, but without using the LargeIntegers module (!), to see the effect of this changeset.
Note
The LargeIntegers module isn't affected by this problem, because it converts SmallIntegers to LargeIntegers before performing arithmetics (and uses highBit of magnitude)."

2329FixNegativeRightShift-sr -- Stephan Rudlof -- 10 June 2000
Unifies semantics of *right* shifts for *negative* Integers.
*Before* applying this changeset there is two-complement semantics for negative SmallIntegers and magnitude semantics for LargeNegativeIntegers.
*After* applying this changeset we have unified
- two-complement semantics (>>bitShift:). or
- magnitude semanics (>>bitShiftOfMagnitude),
for both.
Note: in the other three cases
- left shift positive Integer,
- right shift positive Integer, and
- left shift negative Integer,
two-complement shifts and magnitude shifts produce the same - as Integer interpreted - result.
Preconditions: LargeIntegersPlugin-update v1.1
Best is *using* module LargeIntegers v1.1 (or higher) compiled from the plugin. You can check this by
	LargeIntegersTest getModuleName.
. Should return 'v1.1'; if it returns nil, then there is an earlier version or no module.
This changeset is also compatible with the first 'official' module, which is compilable from changeset 2163LargeIntegersPlugin, but then shift operations are slower as before.
Public methods
Integer>>anyBitOfMagnitudeFromTo:
	Tests for any magnitude bits in the given interval;
Integer>>bitShiftMagnitude:
	Answer an Integer whose value (in magnitude representation) is  
	the receiver's value (in magnitude representation) shifted left by  
	the number of bits indicated by the argument. Negative arguments
	shift right. Zeros are shifted in from the right in left shifts.
Integer>>bitShift:
	Answer an Integer whose value (in twos-complement representation) is  
	the receiver's value (in twos-complement representation) shifted left by 
	the number of bits indicated by the argument. Negative arguments  
	shift right. Zeros are shifted in from the right in left shifts.
Evaluate
	LargePositiveInteger testTwoComplementRightShift
before and after applying this changeset.

2330CelesteForgottenUpd-dvf -- Daniel Vainsencher -- 11 June 2000
Use tailored PluggableSets and PluggableDictionaries to speed up Celeste.
Fix the buttons list creation to includes 'Custom Move F.' option."

2331OpenInMVCFix-sma -- Stefan Matthias Aust -- 12 June 2000
Make a MVCWiWPasteUpMorph large enough to contain the openend morph. Otherwise, BlackSheep new openInMVC and others don't work correctly."

2332ValueWithRec-sma -- Stefan Matthias Aust -- 12 June 2000
As discussed in the list, a way to call a compiled method directly."

2333PointerFinder-sma -- Stefan Matthias Aust -- 7 June 2000
[This also fixes a >>nil isLiteral --> false<< bug --sma]
The PointerFinder can search for reasons why a certain object isn't garbage collected.  It's a quick port of a VisualWorks program written by Hans-Martin Mosner. It will search for a path from a global variable to the given object, presenting it in a small morphic UI.
At the moment, it doesn't always find objects - HandMorph allInstancesDo: [:e | PointerFinder on: e] - for example doesn't find the reasons for all 4 objects - perhaps some VM globals are missing?"

2334Retract2023 -- Dan Ingalls -- 12 June 2000
In response to reports on the Squeak List, this retracts update #2023.

2335SqueakConfigFile







More information about the Squeak-dev mailing list