A Summary of Features in Squeak 2.3

Dan Ingalls DanI at wdi.disney.com
Sat Jan 16 04:28:08 UTC 1999


Squeakers, all -

Here is a brief summary of new features in Squeak 2.3.  As usual, lots of these require further documentation, and we will try to put some energy in that direction on one of the Swiki servers in the next little while.

Interface (many specific to Morphic)
	New-look menus in Morphic
	New preferences panel with help messages for most entries.
	Note especially inboard Scrollbars, browse w/prettyPrint, and project zoom
	Morphic windows now adjust pane boundaries
	Support for translucent colors in Morphic
	Drop-shadows work better, as is display in 1- and 2-bit depths
	Morphic changeLists support multiple selection
	FileContentsBrowser is now in the base image, 'browse code' from FileList
	Improved compare to clipboard (CTRL-C) and compare to current (ChangeList)
	MessageLists generally support cmd-n, m, b, v for 
		seNders, iMplementors, Browse full, and Versions
	Character recognizer has been integrated with Morphic
	Senders-of-it (cmd-n) and implementors-of-it (cmd-m) in the editor
		now deal almost perfectly with embedded parens and brackets.
	Morphic selectorBrowser supports acceptOnCR
	Normal cursor now has white surround -- good for dark backgrounds.
	Handy 'show' and 'find' commands added to ChangeSorters.
	Debuggers now update their inspectors dynamically
Scripting
	Numerous improvements have been made in the area of scripting.
	These and other deeper topics will hopefully filter into documentation
	on the Swikis or elsewhere in the near future.
Books (Morphic)
	A number of page transitions are supported and integrated with Morphic.
		Some are slow, but each has its place.
	A menu item offers choices, by the book, by the page, and on bookmarks.
	Page sorters are much more convenient to deal with.  You can use them
	as a set of bookmarks by using shift-click on the thumbnails.
Sound
	MIDI input is available from class MIDISynth.
	See more details at the end of this message.
Numerics
 	A completely new coercion scheme with array math thrown in.
	VM now performs Float/Integer coercion on the fly.
	New wavelet transform (see class FWT).
Object Memory
	Weak classes and finalization support are now part of the standard image
	New Forward become: is planned to replace exchanging become:
Engine Room
	Fixed a bug that limited image size to 512 MB
	Fixed a bug that limited object size to 256 MB
	Files should be able to position and access up to 2^32 bytes.
	Files should be able be up to 2^32 bytes long).
		All 4 above are in need of test.
	Bytecode and Message-send speeds up by 20-30%.
	Integraton of Jitter pluggable compiler interface.
	[Jitter is an major project that will be described when it is released].
	Much faster string searches, both case-sensitive and not.
Pluggable Primitives
	A new primitive interface for extending the VM without having to modify it.
	A PP is called by name, not by number and its code can reside in an external
	library (e.g., a DSO on Unix, a DLL on Windows, etc.
	An example is FFT>>pluginTest which is a factor 60-100 faster than
	the regular (interpreted) FFT. Look at class InterpreterPlugin and subclasses.
Balloon
	Balloon is a vector graphics engine that brings a new quality of graphics to
	Squeak.  Try playing with TrueType fonts (Yeah!!), as in Play With Me -3
	or with the Flash File reader (see example in the Welcome window.
	Note that you can read TrueType fonts or Flash files directly from the FileList.
	When playing Flash files, use the Morph menu to spawn a control panel
	so that you can start, stop and change the degree of smoothing.  Note that,
	to an increasing degree, it is possible to take apart Flash graphics in Squeak.
	Quality will be nicest in 16- and 32-bit color (nathc).
Squeak Pages
	A significant new system (called Squeak Pages) allows morphic worlds to be
	cached in Squeak, but resident on Web Pages.  See more below.
Files
	Several tweaks to HtmlFileStream and CrLfFileStream

We have smoe major documentation to do, especially on Morphic, scripting, Jitter, Remote Books and SqueakPages.  These will appear separately (uh-huh ;-), but since it's a new topic (and since Ted sent me some paragraphs) I include at the bottom his summary of Squeak Pages.

We hope you find this release to be fun and useful.  As I said in an earlier message, we are all going off now for a week to plan the coming six months to a year.  After that meeting we will communicate again regarding where we plan to go with these and other projects, and various ways that the Squeak Community might collaborate and contribute independently.

Squeak on!

	- Dan (for The Squeak Team)
------------------------------------------

More on Remote Books and SqueakPages...

Any BookMorph now may live on a hard disk or an FTP server.  It may be shared by many Squeak users.  See the menu of a BookMorph for commands governing this.  See 	http://minnow.cc.gatech.edu/SqueakDoc.1 then go to 'SqueakPages'.

Features:
Any Squeak object may be represented by a tombstone.  When any message is sent to it, it fetched the real object from the hard disk or an internet server.  (Class ObjectOut)

To load an existing book, find its ".bo" index file in the file list browser.  Choose "load as book".

Multiple people may modify a book.  If other people may have changed a book you have on your screen, choose "reload all from server".

Add or modify a page, and choose "send this page to server".

The polite thing to do is to reload before changing a book.  Then write one or all pages soon after making your changes.  If you store a stale book, it will wipe out changes that other people made in the mean time.

Pages may be linked to each other.  To create a named link to a new page, type the name of the page in a text area in a page.  Select it and do Cmd-6.  Choose 'link to'.  A new page of that name will be added at the back of the book.  Clicking on the blue text flips to that page.  
	To create a link to an existing page, first name the page.  Go to that page and Cmd-click on it.  The name of the page is below the page.  Click in it and backspace and type.  Return to the page you are linking from.  Type the name. Cmd-6, 'link to'.  

You may search for text in BookMorphs.  Choose "search for text" in the Book menu. 

Each page of a remote book is managed by an instance of class SqueakPage. 


More on MIDI input...

Squeak 2.3 supports built-in MIDI input and output on many platforms (e.g., Mac and Win32). This is a different facility than Stephen Pope's Siren system, which is intended for the serious MIDI musician who uses Opcode MIDI System (OMS) to communicate between MIDI application. Squeak's built-in MIDI facilities do not require OMS.

The MIDI output facilities allow you to drive an external MIDI synthesizer. The easiest way to do this is by opening a MIDI player on some MIDI file from the file list. The file name must end in .mid for the file list to recognize is as a MIDI file. Use the <> menu button and select "play via MIDI". You will be given a menu of possible MIDI ports. Select the desired port, then start playing the score.

The MIDI input facilities are still under development. There is not yet a full MIDI score recorder, but there is a real-time MIDI parser (MIDIInputParser). This can be used to drive Squeak's internal sound synthesis on those rare platforms that support very short sound output buffers, such as the Mac G3 powerbook (Wall-Street). To try this, execute:

	MidiInputMorph new openInWorld

Use the set MIDI port command in the <> menu button to select the MIDI port to be used for input. Then click on the "On" button and start playing! Sounds with short attach times, such as oboe1, work best. The default channel listens to MIDI channel 1, but you can use the "add channel" menu command to add additional channels. This allows the MIDI input streams from multiple keyboards to be mapped to different sounds. The underlying MIDI parser understands all the MIDI controller messages, but only pitch-bend and key on/off commands are currently mapped to synth actions. The MIDIInputParser can also support various kind of filtering, although there is no user interface for those features. Finally, the MIDIInputParser can be used as a MIDI recorder; see the method processMIDIData.





More information about the Squeak-dev mailing list