Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
132 lines (113 sloc) 10.7 KB
*** Squeak 4.6/5.0 Release Notes *** This is a dual release because of the introduction of the new Spur object format. Squeak 4.6 images have the former V3 format while Squeak 5.0 images have the Spur format. Language Improvements Core - Support for multiple bytecode sets. - Changes for 64-bit support. - Authorize implicit specification of ScaledDecimal scale 123s -> 123.s0 , 0.27s -> 0.27s2 like VisualWorks and Pharo do. - Random generator now uses 30-bit Mersenne Twister (p=521) algorithm. - Improved WorldState>>#interCyclePause:. - Use an intermediate abstract Float representation (#sign, #exponent, #significand) results in simpler and faster code thanks to avoidance of LargeInteger. - Replaced ExternalSemaphoreTable with ExternalObjectTable to provide faster registration, and give better support to the current users of external objects. - Improvements to ThirtyTwoBitRegister. Collections - Port of Travis Griggs' TAG-SortFunctions, an elegant API for multi-level sorting with or without use of the included spaceship operator #<=>. - Upper and lower case conversion for Unicode characters including better care handling characters with east Asian encoding. - SequenceableCollection>>#groupsDo: allows enumerating groups according to the number of block arguments passed. - Introduction of #join, #flatten and #flattened. - Introduction of an OrderedDictionary. - Added the (configurable) possibility to disable forced transcript updates as well as to enable a generic redirection to stdout when using the #show: or #showln: interface in Transcript. - Introduced a TextReadWriter (abstract) and a HtmlReadWriter (concrete) similar to ImageReadWriter with the goal to convert foreign data into Squeak's text format. Graphics - In addition to scaling and rotating, introduced clipping ability into the Form manipulation interface. - Also added convolution to forms and some common kernels for blurring, sharpening and so on. - Conveniently adjust saturation or brightness of forms. - Better support for True-Type fonts, including PostScript based True-Type fonts. - A new Font Importer Tool allows the user to easily import available fonts into the image, either by actually embedding them or by referencing the font file on disk. - Support for animated GIFs that only store diff/delta-frames. Programming Tools - A clean, modern new look that even performs better on slower hardware. - For modern hardware, a new soft-shadows is available by preference. - Much better support for small displays (800x600 and smaller). - A new "pre-selection" indication helps the user know their input selection was accepted (it's subtle). - List filtering now simultaneously indicates its filtered state and the actual filter value by highlighting the matching letters within each row. - List filtering now also extends to hierarchical lists, with preference control for using it for navigation, collection, search or filter. - Preference ability to indicate the hovered item in lists. - A new help-text integrated into ToolBuilder lets any capable UI annotate itself. TextWidgets will now display it in their background in light-gray text. - Inspectors and Explorers now have a button to toggle the pane between those two types. - Shout syntax highlighting in Inspector and Object Explorer. - Preference ability for yellow-click to match some OS behaviors by acting on the item under the hand, rather than the selected item. - The Smart-Splitters algorithm got a significant upgrade. - Preference ability for windows to open attached to the hand, with optional size gesture upon drop. - New Pluggable Menus feature allows easy extension of the menus of most tools. - Hot-key access to a new ScratchPad allows users to employ the Smalltalk interpreter as a writing utensil, without having to break flow. - The Search Bar now displays any printed expressions in a separate text balloon. - Several improvements to the Help browser, including the ability to display pages from the wiki (but still needing more work, so disabled by default for now). - Fixes for using the debugger "roughly". - Make the debugger process faithful. - Fixed #whichMethodsStoreInto: pool variables. - Benchmarking improvements (#bench). - Restored icons in class lists and method lists. - Better support for MVC projects. - Filed-in methods are now included in the changes browser as well as Recent Messages list. - Support for multiple branches, facilitating the transition to the new Spur image format in 5.0. - Enhancements to the Monticello method history and origin functions. - Improvements to the Monticello Save dialog. - Ability to compare any two repository versions, not just the ones loaded in memory. - Allow each menu of the main docking bar to be hidden via a preference. - Enhanced "Compare to Clipboard" function shows the would-be results of a paste operation. - The Object Explorer now aligns inst-vars and their values in multiple columns by default. - A few changes for NewColorPickerMorph so it fits better in properties panes. - Ability to load custom .prefs files, which can be created with the Preference Browser, from the File List tool. - Fixed loss of indentation in MessageTrace tool after using the filtering function off the menu. Good Fixes - Fix class reshaping losing the correct #methodClassAssociation in instance side methods. - Fixed the proceed-bug, which, under certain conditions, caused flickering and slow display update after proceeding a UI process. - Fix a bug in InflateStream and FastInflateStream. - Relative-path improvements to FileDirectory. - Fix transparency when reading PNG RGB forms. Handle transparency of 16 bits per channel interlaced gray scale PNG. - Fix Float class>>#fromIEEE32Bit: in the case of gradual underflow. - Some Environments fixes. - Improved Clipboard operations between other applications. Performance Kernel - Avoid engaging Large(Positive|Negative)Integer arithmetic just for testing the sign of a Float. - Added Delay>>#delayDuration: which allows one to reuse the same Delay instance with a different duration. - Improvements to ThirtyTwoBitRegister. - 8X performance improvement in DateAndTime>>#now. Collections - Speed up testing different sized strings. - Interval>>#sum is now O(1) instead of O(n). - Introduction of Set>>#addNewElement: optimizes graph-traversal. - Slightly faster SequenceableCollection >> #copyUpTo: (for ByteString receivers). - Stricter and faster implementation of String >> #format:. - Optimized Interval >> #sum, OrderedCollection >> #at: and OrderedCollection >> #at:put:. - Simpler and faster Character >> #tokenish. - Speed up #endsWith: for strings. Morphic - Speed up #valueOfProperty:ifAbsent: and friends. - Fix to avoid unnecessary layout computation for proportional layout. - Performance improved about 10 to 1000x for layouting of scrollpanes and their subclasses, depending on methods accessed. - Shout optimizations. Clean-ups and Quality Improvements - Symbol table improvements such as thread-safety and consistent enumeration. - ThreadSafeRandom. - Many unused and/or deprecated methods moved to their 'Deprecated' packages. - LRUCache improvements. - Various improvements related to Characters and Strings. - Cleanups related to the Squeak V3 byte code set that are no longer needed. - Reduction in the use of ReadWriteStream to instead use either a ReadStream or WriteStream, if possible. - Many fundamental UI and Morphic improvements. For example, almost all tools now use the ToolBuilder. Compatibility Notes - WeakKeyDictionary>>#associationsDo: ignores associations with GC'd keys. This affects all enumerating methods. - Let WeakArray>>#species be a regular Array instead of its own class, so that WeakArray's can be successfully compared to Arrays with equivalent contents. - An exact version for #floorLog: for those Number using exact arithmetic. Old behavior compatible with #log: is still possible by passing the radix argument #asFloat. - #inspect now returns the UI SystemWindow instead of the object being inspected. Only for Squeak 5.0 - Spur format does not support ObjectHistory. - Fast ProtoObject>>#become: by avoiding explicit read barriers in all common cases. - Immediate characters - Immediate floats (64-bit only) - Ready for 64-bit by using a 64-bit object header internally ! ]style[(36 118 2 41 4 10 21 2 4 107 13 73 6 74 29 55 5 2 9 2 12 60 12 41 19 117 20 4 11 139 4 40 7 82 34 96 5 2 8 5 10 23 17 146 6 4 8 41 14 18 14 106 8 51 8 60 11 217 18 155 13 38 17 104 12 820 9 5 15 844 23 46 6 74 12 162 21 101 10 377 19 109 18 11 9 38 12 57 10 43 23 173 13 5 17 34 13 26 11 88 28 73 9 42 11 2 6 18 31 43 5 10 22 96 20 34 17 4 11 47 14 48 20 46 36 69 18 14 16 2 25 5 29 23 22 13 10 16 7 12 26 41 18 174 34 82 16 57 21 4 8 106 12 58 15 25 10 4 11 97 19 4 19 4 35 82 19 154 10 71 5 49 8 4 8 73 20 54 21 175)b,,b,,b,,b,,i,,Rcode://ScaledDecimal;,,Rcode://Random;,,Rcode://WorldState>>#interCyclePause:;,,Rcode://#sign;,,Rcode://#exponent;,,Rcode://#significand;,,Rcode://LargeInteger;,,Rcode://ExternalObjectTable;,,Rcode://ThirtyTwoBitRegister;,,i,,Rcode://#<=>;,,Rcode://Unicode;,,Rcode://SequenceableCollection>>#groupsDo:;,,Rcode://#join;,,Rcode://#flatten;,,Rcode://#flattened;,,Rcode://OrderedDictionary;,,Rcode://#show:;,,Rcode://#showln:;,,Rcode://TextReadWriter;,,Rcode://HtmlReadWriter;,,i,,Rcode://Form >> #clippedToSize:;,,Rcode://Form>>#edgeDetect;,,Rcode://FontImporterTool open;b,,Rcode://AnimatedGIFReadWriter;,,b,,Rcode://Morph class >> #useSoftDropShadow;,,Rcode://ActiveWorld inspect;,,Rcode://ActiveWorld explore;,,Rcode://#whichMethodsStoreInto:;,,Rcode://#bench;,,Rcode://MVCProject new enter;,,i,,Rcode://MCWorkingCopyBrowser new show;,,Rcode://NewColorPickerMorph;,,Rcode://PreferenceBrowser open;,,Rcode://FileList open;,,Rcode://MessageTrace;,,b,,Rcode://#methodClassAssociation;,,Rcode://InflateStream;,,Rcode://FastInflateStream;,,Rcode://FileDirectory;,,Rcode://PNGReadWriter;,,Rcode://Float class>>#fromIEEE32Bit:;,,Rcode://Clipboard class >> #clipboardText;,,b,,i,,Rcode://LargePositiveInteger;,,Rcode://Float;,,Rcode://Delay>>#delayDuration:;,,Rcode://ThirtyTwoBitRegister;,,Rcode://DateAndTime>>#now;,,i,,Rcode://Interval>>#sum;,,Rcode://Set>>#addNewElement:;,,Rcode://SequenceableCollection >> #copyUpTo:;,,Rcode://String >> #format:;,,Rcode://Interval >> #sum;,,Rcode://OrderedCollection >> #at:;,,Rcode://OrderedCollection >> #at:put:;,,Rcode://Character >> #tokenish;,,Rcode://#endsWith:;,,i,,Rcode://#valueOfProperty:ifAbsent:;,,Rcode://Morph >> #layoutProportionallyIn:;,,b,,Rcode://ThreadSafeRandom;,,Rcode://(MCPackage named: '46Deprecated') workingCopy browse;,,Rcode://LRUCache;,,Rcode://EncoderForV3PlusClosures;,,Rcode://ReadWriteStream;,,Rcode://ReadStream;,,Rcode://WriteStream;,,Rcode://#buildWith:;,,b,,Rcode://WeakKeyDictionary>>#associationsDo:;,,Rcode://WeakArray>>#species;,,Rcode://#floorLog:;,,Rcode://#log:;,,Rcode://#asFloat;,,Rcode://#inspect;,,b,,Rcode://ProtoObject>>#become:;,!