Smalltalk Release Notes
Cuis is a free Smalltalk-80 environment originally derived from Squeak (www.squeak.org).
Main project web (and downloads) at www.cuis-smalltalk.org
New in Cuis 4.2 (released July 25, 2013)
Packages now have dependencies
Package loading greatly enhanced
Moved non-essential stuff to optional packages. Cuis is now below 500 classes and 100kLOC. Reduction was about 25%
Many bugfixes, and minor enhancements and cleanup
New in Cuis 4.1 (released December 12, 2012)
Deep Morphic refactoring:
- - New Morph Hierarchy: Less state and behavior at class Morph. Simple Morphs can be made simpler.
- - All Coordinates are relative to owner.
- - All Coordinates are Float.
- - No globals.
- - MatrixTransform2x3 is used as Morph location.
- - Removed 'bounds' and 'fullBounds' ivars.
- - Lots of additional cleanup.
- - Paves the way for Morphic 3: Scalable Vector Graphics everywhere.
Improvements to Themes (by Casey Ransberger).
All open issues in GitHub are fixed.
Improvements to MessageTally, ProcessBrowser, CPUWatcher.
Underscore in identifiers enabled by default.
Many bugfixes, some of them from Squeak.
New in Cuis 4.0 (released April 21, 2012)
is important to note that almost all the work done in this release was
done in close collaboration with Bernhard Pieber and Software Generation.
Bernhard and his company provided financial support, but also (and
maybe even more important) provided many ideas, requirements and
productive (and fun) discussions. Thanks Bernhard, it is great to work
- Sorts by last definition of selector (Methods recently saved go first),
- Sorts appropriately all selectors matching entered prefix (no hardcoded limits, like 40 selectors matching 2 letters).
- Restricts suggestions if receiver is Global, a Constant or a pseudo-variable.
- Doesn't have an "expanded mode". Always shows relevant suggestions.
- Not restricted to a set of previously selected packages. All the methods in the system are accounted for.
- Very fast, thanks to an optimized Trie implementation.
- Compact code. Relies on services by Trie (for storing and querying selectors) and Shout (for parsing incomplete methods).
- Helps make Shout faster, by providing super fast queries of selector prefixes.
- Can be used for other applications besides Smalltalk code. Currently used for an English glossary for StyledTextEditor.
Cuis 4.- includes a very optimized implementation of a Trie. Tries are
dictionaries where keys are Strings. Lookups are extremely fast. Search
for entries matching a prefix are extremely fast (O(1) regardless of
the size of the collection). Addition and removals are quite fast too.
Used for UCompletion, holding 11,000 selectors. Also used for an
English spell checker (in the StyledTextEditor project) holding 166,000
words. In both cases use of memory is quite reasonable (3 and 5.4 bytes
per character in average) and query speed is extremely fast.
The newline character is no longer Character cr (ASCII code 13), but
Character lf (ASCII code 10). This is the standard in Mac and Unix
platforms, and the required convention for GitHub. All the code in the
image has been converted.
MouseClickState refactor, to ease new gestures (ClickNHalf+Drag, DoubleClickNHalf+Drag, TripleClick).
New in Cuis 3.3 (releaded June 2, 2011)
- Most menu options have now a nice icon
- Manages internal/external resources
- Allows import / export to enable use of use existing stuff and external tools
- Does not depend on external files for image update
- Updates done with code (enabling change sets of Monticello packages)
- Avoids cruft accumulation, code for resources is removed after update
- Use ctrl + mouse for multiple selection
- Do 'Preferences disable: #commandClickOpensHalo' to enable the standard Mac gesture for multi-selection
- Enhanced senders view: all occurrences of sent message are highlighted
- Big step for View / Model separation
- Models are now GUI agnostic: they have 25% less methods and no references to Morphs
- Eases having alternate GUI frameworks such as Morphic 3
- Gone is Model and the DependentsFields classVar in Object
- Only object event system mechanism is #when:send:to:, provided by ActiveModel
- #deepCopy eliminated
- #veryDeepCopy, DeepCopier, #veryDeepInner:, #veryDeepFixupWith: eliminated.
- Use of ReferenceStream for copying object graphs such as Morphs
New in Cuis 3.2 (released April 12, 2011)
- Enhanced look for menus and several other widgets
- TIFFReader (100% Smalltalk code)
- Many fixes and code enhancements and cleanup, especially in Morphic (World, Canvas, DamageRecorder, etc)
- Text / TextAttribute cleanup
New in Cuis 3.1 (released March 4, 2011)
- Super fast Morphic world display.
- About ten times faster when many windows are open.
- Makes the whole UI feel much more responsive.
- Simpler code
- New layout specs and logic.
- New layout adjusters and window resizers.
- Allows adding / removing morphs without leaving "holes".
- Orders of magnitude simpler. Can be understood by humans. Removed all traces of the old code.
- Cleaner look for Default theme. Nicer buttons, menus and halos. Faster world redraw allows for full-window resize.
- Morphic buttons simplification: reduced 5 morphic button classes into just one.
- Fast (Calls return quickly)
- Fast (Updates are immediate)
- Thread safe
- Can log to file in addition to Display
- Display output is optional (for headless images)
- Can work on a bare bones image (Doesn't need UI, dependency, events, processes)
- Optional morphic window for seamless integration in Morphic
UI framework agnostic. Can be used to debug Morphic, even with the
morphic window open, without crashing the image!
- No longer a text editor. Display is read only.
- Cleaner Clipboard design & api, to enable extended clipboard
- Support for .mcz files (they are treated as .cs and .st files)
- Removed the colored mouse button naming from all over the system. Now they are #mouseButton1, #mouseButton2 and #mouseButton3.
- Fixes to transparent pixels in 32bpp Forms
- Lots of code simplifications all over the system: Text, Menus, Tools layout construction, SystemWindow. Killed FakeClassPool.
- Utilities: #printStack:, better comment at Object>>#is:
- Many updates from Squeak, including cascading of optimized sends
New in Cuis 3.0 (released January 14, 2011)
- Themes. Several themes included, plus, you can add your own.
A nice default theme, using gradientes, rounded corners, anti-aliasing,
nicer buttons, embossed labels, desktop background.
- Anti-aliased halos
- Window icons (taken from Squeak)
- New, friendlier Shout color specs
- Real view - model separation
- Removed StringHolder
- Text model holds current text + optional text provider (for accept / cancel)
- Simpler code, easier to extend.
- Enhancements to:
- Misc minor tweaks and fixes
- Many fixes and enhancements from Squeak
New in Cuis 2.9 (released November 5, 2010)
- Fixes keyboard navigation in Windows and Linux (alt + arrow keys) and Mac (control + command + arrows keys)
- Shout: fix line breaks in comments in styled code
New in Cuis 2.8 (released November 4, 2010)
- Fixes to Character sorting and testing methods, to honor ISO-8859-15 encoding
- Better conversion to/from UTF-8
- Faster startup (forked DateAndTime class>>startup)
- Honor quit signals from the OS (from Squeak)
- #findBinary:do:ifNone: and #findBinaryIndex:do:ifNone: in SequenceableCollection
- PointerTracingTools by Matthew Fulmer
- Many recent tweaks from Squeak
- Tweaks to blinking cursors
- Tweaks to LayoutSpecs and PluggableMorphs
- Tweaks to Editors
New in Cuis 2.7 (released September 3, 2010)
- Morphic. New LayoutSpec mechanism. Simpler and nicer.
- Morphic Simplification: Layout, Extensions, etc
- Various fixes to the Text subsystem (Empty lines, Clipboard, Blinking Cursor)
- Compiler / Decompiler / Debugger update to Squeak's
- Numerics update to Squeak's (thanks Nicolas!), including tests. Misc additional tweaks and enh
- Various fixes and enh to FileList (ascending/descending sort, formatting of columns, hiding hidden files)
- Enhancements to PrettyPrint. PrettyPrinted code looks much better now.
- Fixes to MessageNames, senders of specialSelectors (#ifNil, etc)
- Style enh. Cleaning of 'asSortedCollection sort', etc.
- Updates and Enhancements from Squeak (Inspectors, SocketStream, Socket, Zip, Rectangle, Duration, Time)
- Minor tweaks from Squeak
- Better handling of EndiannessCache (could be great for Squeak too)
New in Cuis 2.6 (released August 10, 2010)
- Loaded BlockContext code again. Still needed for debugging.
- Tweaks to decompiler, to avoid test failures.
- Tests updates from Squeak
- FFT now uses the fast primitive by default
- A few updates from Squeak
- Several minor fixes and enhancements
New in Cuis 2.5 (released August 9, 2010)
- Compatibility with the Cog VM
- Fix the sequence of click - wait - double click in text editors (old Squeak bug)
- Fix formatting bugs in a trailing empty line in text editors (old Squeak bug)
- A few updates from Squeak
- Several minor fixes and enhancements
New in Cuis 2.4 (released June 17, 2010)
- Adaptive Morphic CPU usage. Saves a lot of CPU on servers running many images.
- Compiler update with Eliot's fixes
- Configurable underscore meaning (from Squeak)
- Enable / disable Shout in Workspaces
- Big speedup of BW PNG
- Many minor fixes and cleanup
New in Cuis 2.3 (released March 23, 2010)
- Fixes for internalized sources
- Decompiler fixes by nice
- Various code cosmetics fixes
- Enhancements to prettyPrint by cmm
- A fix to WeakRegistry by ul
- Added BitBltTests to allow knowing if the
VM is updated
- A serious simplification of Morphic
geometry, removing DisplayTransform
- InteractiveErrorCorrection fixes by cao
- Lots of minor fixes
New in Cuis 2.2 (released February 24, 2010)
- Better default and min
- A fix for ScannerTest
- Simplification of MessageTally
- Removal of MethodFinder, ImageSegment,
OldSocket, GIFReadWriter, LimitingLineStreamWrapper
- Memory and code size savings in MenuIcon
- Minor fixes and enhancements to
DifferenceFinder, Shout, Streams, #isXXX methods, CodeHolder,
- Removal of unused methods and forms
New in Cuis 2.1 (released February 12, 2010)
- Support for the Unary numeral system, as
suggested by Dan Ingalls here.
- A new code differ that shows differences
in words and not lines, by Leandro Caniglia
- Closure measurements (based on work by
Eliot Miranda) are shown in the annotation pane for any method
- Removal of 43 isXXX methods, replaced by
the general #is: method
- Misc. fixes and enhancements from Squeak
New in Cuis 2.0 (released January 4, 2010)
is now closure-enabled. Cuis is ready to run on the Cog VM (when
available). Cuis 2.0 requires a closures-enabled VM to run.
Updates done to Cuis 1.0 (during 2009))
- Code simplification
- Performance enhancements
- Look enhancements
- Preferences to adapt the UI for PDAs and for very high resolution or big displays
- Fixed may old Squeak bugs especially in the Text subsystem
Initial Release of Cuis 1.0 (March 27, 2009)
- Aimed at Smalltalk developers and people learning about Smalltalk
- Close to Smalltalk-80 and Dan Ingalls' ideas
- Compatible with the latest Squeak VMs
- MIT license (based on the work by Yoshiki Ohshima, from VPRI)
- Evolution by removing unnecessary complexity, not adding it
- Reduced Morphic
- Removed applications and optional functionality
- Includes a set of high quality, antialiased StrikeFonts
- Backwards compatibility not important
- Include code from the Squeak project (various versions, Mantis,
What Cuis does includes and what it does
includes a basic Smalltalk-80 system, updated for the capabilities of
contemporary hardware. The user interface is a derivative of the
Morphic framework in Squeak, with a strong emphasis on modern look and feel, simplification
Cuis does not include features that are either:
a) Optional in nature (i.e. application
b) Too complex (i.e. their complexity
outweighs their usefulness)
c) Not stable
instance, Cuis also doesn't
include Unicode support. The handling of Unicode characters and strings
in Squeak falls in b (too complex), as the whole system is affected and
c (not stable), as bugs are still arising, even after being used for
many years. Besides, as the basic Character and String were not
modified, but new classes for WideCharacter and WideString were
introduced, we can also consider it falls under a (optional in nature).
not that stuff not included in Cuis doesn't mean it can't be added. We
warmly welcome initiatives to port or write new optional packages for
is distributed subject to the MIT License, as in
http://www.opensource.org/licenses/mit-license.php . Any contribution
submitted for incorporation into or for distribution with Cuis shall be
presumed subject to the same license.
Portions of Cuis are:
Copyright (c) Xerox Corp. 1981, 1982
Copyright (c) Apple Computer, Inc. 1985-1996
Copyright (c) Contributors to Squeak and Cuis projects. 1997-2013