[Updates] and new Mac VM
Mark Mayfield
mmayfield at ev1.net
Sat Jun 10 14:01:53 UTC 2000
When I try to update I get the message that there are 0 new updates.
I'm currently at change 2299 and holding. Is there something special
to do to get changes 2300 and on???
Mark
>Folks -
>
>I have just issued 11 new updates. Beyond sundry fixes, this
>includes John McIntosh's rewrite of Mac Sockets to support Open
>Transport. It should run compatibly with earlier VMs, but if you
>fetch or build a new VM, you will be able to take advantage of the
>new Socket implementation and support for Open Transport. The new
>(backward-compatible) VM can be found in the 2.8 folder on the UIUC
>server, called
> SqueakVM2.8beta3.sea
>
>John will probably post further information about the new Sockets.
>It would be great to get some early testing, both so we can fix any
>bugs and so we can find out whether the substantially better
>benchmarks make a real difference "out in the field".
>
>Enjoy
> - Dan
>-------------------------------------
>2300AsyncFile-failComment
>
>2301TurtleTrailMods-di -- Dan Ingalls -- 23 May 2000
>Makes batched pen trails work depending on the setting of a preference.
>Also pen trails work in the world as well as in any other PasteUp.
>Most important, pen trails now work for embedded objects with
>arbitrary flexing.
>
>2302BigTextFixes-di -- Dan Ingalls -- 7 June 2000
>Changes NewParagraph>>selectionRectsFrom:to: to return a single
>rectangle for all lines between the first and last when the
>container is a simple rectangle. This changes the time to display a
>full selection in a megabyte file from over 10 seconds to about 1/4
>second.
>Changes CharacterBlock copy to do a simple shallowCopy. It had been
>inheriting deepCopy from Rectangle, thus making an unneeded copy of
>the entire text as well. Greatly improves typing into a megabyte
>file.
>
>2303resetExtent-raa -- Bob Arning -- 8 June 2000
>Recent changes to #showScrollBar and #hideScrollBar in
>2282HiddenScrollBar-dew have unfortunate side-effects for users of
>retractable scrollbars - they send #extent: whenever the scrollbar
>is hidden or shown. This leads to:
>- long pauses when leaving a text pane with lots of text in which
>there is a selection
>- shifting the contents so that the selection is visible.
>I think both (certainly the first) are undesirable. This change set
>sends #extent: only when the scrollbars are inboard."
>
>2304FXColorFixes -- Andreas Raab -- 8 June 2000
>A bunch of fixes for external forms with non-squeak RGBA formats.
>Found and fixed on the new demo laptop which uses a neat 5x6x5 RGB
>format in 16 bit depth. Very good for testing.
>
>2305sketchThumbnail-sw -- Scott Wallace -- 9 June 2000
>Further chasings of ones own tail regarding the pursuit of
>consistent dockup of morph and player in the presence of
>TransformationMorphs... When a new Sketch was drawn in a quite
>large painting area, the painting system was often returning a
>spurious, nonzero but vanishingly small (order of 1E-14)
>forward-direction, resulting in the premature launching of an
>unwanted TransformationMorph for the newborn -- the result of
>round-off error when computing forward-direction. This workaround
>simply maps such spurious tiny offsets returned from the painting
>system back to zero, which appears to avoid the problem of plain
>gray thumbnails, which can be traced to this situation."
>
>2306HQTextures -- Andreas Raab -- 9 June 2000
>The change set allows the definition of explicit high quality
>textures when using Morphs as a texture in 3D. The need for such
>high quality textures comes from the (unfortunate) requirement of
>all current 3D hardware to deal with textures that are powers of two
>only. Although that's kinda stupid we gotta play by their rules here.
>The dilemma occurs when considering a morph which is, say, 384 at 384
>wide. Downsampling to 256 at 256 does require less space (good for
>limited VRAM/AGP resources on the card) but can lead to bad, bad
>distortions. Upscaling to 512 at 512 on the other hand requires four
>times as much space. But it looks just beautiful then. So with this
>change set we have a choice of what to use and the tradeoffs are
>made explicit with a new menu entry in the Wonderland wrapper morphs.
>As a side effect, the change set introduces a method for scaling
>arbitrary forms through the best available method (which is using
>bilinear interpolation if possible, and if not, to use WarpBlt
>instead).
>"
>
>2307JMM-SemaTableAndLessInt -- johnmci at smalltalkconsulting.com -- 7 June 2000
>When I was building a high performance tcp/ip test server I found a
>number of problems with the external interrupt interface. The first
>problem is the table at 25 elements is too small, I had test cases
>that triggered upto 216 interrupts. The second issue was the
>signalSemaphoreWithIndex: method consolidated semaphores, so two
>calls on the same semaphore might become one call. This isn't how
>the Semaphore logic work in the Squeak Class. The third and more
>difficult problem to solve is that the code used to populate the
>table and reading from the table is not thread safe. As Squeak is
>reading from the table then setting the counter to zero you can be
>busy placing elements in the table via interrupt driven routines.
>The more complicated fix is to use a OS thread safe queue. The less
>complicated solution is to use a dual buffered array. This fix uses
>the dual buffered array. Two arrays of 500 are created and alternate
>usage based on who is read and who is writting. This should limit
>problems with interrupt driven code attempting to place items in a
>array that is being itterated over. In this solution
>signalExternalSemaphores iternates over the array that isn't active,
>the signalSemaphoreWithIndex: routine places items in the active
>array without fear of stomping on the signalExternalSemaphores logic.
>Note of course you can still exceed the 500 element fixed limit and
>loose interrupts, but of course you could compile a new VM with a
>larger limit.
>I also discovered various race conditions on the access to the
>externalSemaphore table. This new class uses class side methods to
>restrict access using a mutex semaphore. It seemed cleaner to
>deligate the reponsibility here versus adding more code and another
>class variable to SystemDictionary
>Note that in Smalltalk recreateSpecialObjectsArray we still directly
>play with the table.
>Lastly on the faster machines of today I found that
>checkForInterrupts was being called well over a thousand times per
>second. If there is no interrupt activity or other extraordinary
>events then a simple counter is used to dicate how often the call
>should be made. Problem is machines are so fast now that the
>original 1000 counter start value is too small. This change attempts
>to use feedback to dictate the number of calls to about 200 per
>second (perhaps too high?) As time progresses it attempts to make
>the counter start number float to a optimistic value. Clock
>overFlows, long delays etc should not drastically affect the
>algoritmn, we still limit the lower end to 1000. On a PowerBook
>500Mhz the value floated between 5200 and 10500, and gave me a 2%
>improvement in bytescodes per second.
>Note that interruptChecksEveryNms is the target delay between calls,
>this value is in milliseconds, to use a different value you must
>then build a new VM.
>Beware if your implementation's millisecond clock doesn't record in
>resolutions of at least 5 milliseond increments. If for example your
>clock will only give you 1/60 of a second accuracy this change set
>will cause problems. in this case change interruptChecksEveryNms to
>0 to keep the historical behavior when you are building your VM"
>
>2308JMM-Socket-Changes -- John M McIntosh -- 5 June 2000
>A number of changes were made to NetNameResolver and Socket when I
>was creating the Macintosh Open Transport plugin. These changes
>range from adding some accessors to get at instance variables to a
>fundamental change in semaphore signalling logic.
>We now have three semaphores: one for open/close/listen, one for
>reading, one for writing. Existing applications and existing C code
>are unaffected by this change since I attempted to make this change
>backwards compatible. However this change makes mult-threaded
>applications safer to write since you now can have seperate
>processes in a application that have the responsiblity for
>listening, reading, and writing to a socket. Implementation of this
>feature depends on the underlying VM implementation. As of June 5th
>2000 it is fully supported on the Macintosh. Beware you can of
>course write a Squeak application that will not behave correctly on
>an older VM. Use the accessor primitiveOnlySupportsOneSemaphore to
>find out if the C code supports one or three semaphores and make a
>decision about continuing.
>Additional support for UDP was added, now you can set the host for
>an outgoing UDP datagrams, and on reading a UDP datagram get
>information about who it came from, this support of course relies on
>the underlying VM implementation. Although this feature was support
>somewhat in the in the previous implementation we now tie host
>information to the datagram which ensures race conditions or high
>volume UDP traffic from multiple locations does not affect who we
>think we are talking to.
>Support for setting and getting Socket, TCP/IP, and UDP options was
>added. You should be able to set or get information about socket
>options for all of the common options and most of the uncommon ones.
>Again support relies on the underlying VM implementation.
>Lastly some cleanup of the test examples and new examples were
>added, but for testing purposes you should use the SUnit test suite
>that I created to run tests when making socket C code changes or
>changes to the Classes"
>
>2309JMM-PLG-New-Mac-Socket
>
>2310JMM-MacCcodeChangesForOT
More information about the Squeak-dev
mailing list
|