Authorize implicit specification of ScaledDecimal scale 123s -> 123.s0 , 0.27s -> 0.27s2 like VW and -Pharo.
Random generator now uses 30-bit Mersenne Twister (p=521) algorithm.
Improved the world intercycle pause implementation.
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.
IDE
4.6 brings the most impressive enhancements to the IDE in some time.
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 (questionable) 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 V5 image format coming in 5.0.
Enhancements to the MC 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 from the file manager.
Fixed loss of indentation in MessageTraces 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 [Fast]InflateStream.
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.
Clipboard operations between other applications now working as it should.
Performance
Kernel
Avoid engaging LargeInteger 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>>#.
Collections
Speed up testing different sized strings.
Interval >> #sum is now O(1) instead of O(n).
Introduction of Set>>#addNewElement: optimizes graph-traversal.
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.
Cleanups and Quality Improvements
Symbol table improvements such as thread-safety and consistent enumeration.
Threadsafe random.
Many unused and/or deprecated methods removed.
LRUCache improvements.
Various improvements related to Characters and Strings.
Cleanups related to the SqueakV3 bytecode set that are no longer needed.
Reduction in the use of ReadWrite streams to instead use either a ReadStream or WriteStream, if possible.
Many fundamental UI and Morphic improvements. For example, 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.
(5.0 only) Spur does not support ObjectHistory. :(
The Squeak Board wishes to express thanks to the contributors to this cornerstone release.