[Pkg] The Trunk: Morphic-cmm.717.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jan 22 02:45:02 UTC 2014

Chris Muller uploaded a new version of Morphic to project The Trunk:

==================== Summary ====================

Name: Morphic-cmm.717
Author: cmm
Time: 21 January 2014, 8:43:31.158 pm
UUID: bf9458e5-0314-41bb-9c41-bb19367361d1
Ancestors: Morphic-cwp.716

- Workspace updates.
- Strange entry in "References" global causing StandardScriptingSystem class>>#removeUnreferencedPlayers to blow up.  Dodge it.

=============== Diff against Morphic-cwp.716 ===============

Item was changed:
  ----- Method: StandardScriptingSystem class>>removeUnreferencedPlayers (in category 'class initialization') -----
  	"Remove existing but unreferenced player references"
  	"StandardScriptingSystem removeUnreferencedPlayers"
+ 	References keys do:
+ 		[ : key | | ref |
+ 		ref := References at: key.
+ 		((ref respondsTo: #costume) and: [ ref costume pasteUpMorph isNil ]) ifTrue: [ References removeKey: key ] ]!
- 	References keys do: 
- 		[:key | (References at: key) costume pasteUpMorph
- 			ifNil: [References removeKey: key]].
- !

Item was added:
+ ----- Method: TheWorldMainDockingBar>>releasseNotes (in category 'submenu - help') -----
+ releasseNotes
+ 	^'Squeak 4.5 ---- Theodor
+ ===================
+ ______________________________________________
+ Language enhancements:
+ Environments
+ 	Environments allows multiple classes with the same name to exist in the same image, with code referencing through its class'' "environment".
+ Collections
+ 	New and improved sorting utilities for Arrays and OrderedCollections.
+ 	New FloatCollection inherits the convenient add:/remove: API of OrderedCollection, but using an internal FloatArray for better efficiency.
+ 	An all-new LRUCache implementation.
+ 	Promise is now a fully chainable object with decent error handling.
+ 	Compiler
+ Numerics
+ 	Faster and better Random.
+ 	log/ln fixed for integers.
+ Dates and Times
+ 	New methods provide access to primitive 240 and 241, which can provide microsecond resolution timestamps on Cog VMs.
+ 	New convenience methods allow creating DateAndTimes relative to now (e.g., "5 minutes ago").
+ 	Parsing improvements.
+ Text, Graphics, Sound
+ 	Form>pixelValueAt: now makes use of the new primitivePixelValueAt:, avoiding the overhead of a full BitBlt.
+ 	Elimination of the dual hierarchy of NewParagraph & MultiNewParagraph etc and TextStopConditions and lots of Scanner improvements.
+ 	PaintBoxMorph re-engineering.
+ 	ADPCMCodec performance improvement.
+ ______________________________________________
+ IDE, Monticello and Trunk process improvements:
+ 	Several MVC fixes allow debugging in MVC once again.
+ 	Smart-Splitters causes the bars between browser panes to automatically optimize their position.
+ 	Fixed color-selection from anywhere on the screen working again.
+ 	Improved command-line interface via Smalltalk run: [ :arg1 :arg2 | ... ].
+ 	squeakDebug.log report length is now settable.
+ 	MCReorganizationPreloader now resolves moves between arbitrary packages, independent of their order in the configuration.
+ 	mcz/snapshot/source.st now encoded in UTF8 instead of latin-1.
+ 	New pre-selection highlight feature for lists.
+ 	System space analysis now available in Help | About.
+ 	Message-traces can be pared more easily.
+ ______________________________________________
+ Configuration
+ 	Lots of improvements in the CI build/test slave.
+ 	Installer now documents externally-loadable packages as simple literal structures that can be merged via Installer>>#merge:.
+ 	MC ancestry history strings can now be stubbed for a smaller image and sustainable MC history.
+ ______________________________________________
+ History and Accounting Tools
+ 	A great new historical website by Bob Arning.
+ 	MC history and origin is now available for methods and class-definitions from browser menus.
+ 	A new amazing ObjectHistory makes it possible to efficiently track the born-on date of any object to a resolution of one minute.
+ 	Added "search history" to Package history browser.
+ ______________________________________________
+ Fixes and cleanups
+ 	Packages organized toward eliminating circular dependencies, and with proper concern for existing and future UI frameworks.
+ 	Updated uses of SmalltalkImage current to, simply, "Smalltalk."
+ 	Moving away from use of Utilities.
+ 	More preferences made pragma-based.
+ 	Compiler factorings and cleanups.
+ 	Diminished excessive usage of ReadWriteStream.
+ 	ProtoObject API balanced and minimal.
+ 	Moved classifying and logging behavior out of Compiler (a responsibility of Behavior).
+ ______________________________________________
+ Application Upgrade Notes
+ 	Default Float printing is now true to its internal representation. Apps must now use appropriate methods to format Floats rather than roundTo:.
+ 	($a to: $b) now returns ''ab'' rather than #($a $b).
+ 	Remove OneCharacterSymbols optimization.
+ 	LRUCache instance migrations, if any. See post-scripts in Collections-ul.546, 547
+ 	Rectangles with 0 area (e.g., lines) can now intersect.
+ This release is dedicated
+ to the memory of our friend
+ Andreas Raab (1968 -- 2013)
+ !!
+ ]style[(10 1 4 1 7 1 19 1 1 47 22 2 13 142 11 329 8 57 15 237 21 358 48 720 13 321 28 372 18 522 25 382 1 5 7 4 9 56 1)ba2FBitstreamVeraSerif#32.0,a2FBitstreamVeraSerif#32.0,a2--FBitstreamVeraSerif#32.0,a2FBitstreamVeraSerif#32.0,ia2FBitstreamVeraSerif#32.0,FBitstreamVeraSerif#24.0a2,FBitstreamVeraSerif#24.0----a2,FBitstreamVeraSerif#24.0a2,,FBitstreamVeraSerif#16.0,FBitstreamVeraSerif#24.0,,bFBitstreamVeraSerif#16.0,FBitstreamVeraSerif#16.0,bFBitstreamVeraSerif#16.0,FBitstreamVeraSerif#16.0,bFBitstreamVeraSerif#16.0,FBitstreamVeraSerif#16.0,bFBitstreamVeraSerif#16.0,FBitstreamVeraSerif#16.0,bFBitstreamVeraSerif#16.0,FBitstreamVeraSerif#16.0,FBitstreamVeraSerif#24.0,FBitstreamVeraSerif#16.0,FBitstreamVeraSerif#24.0,FBitstreamVeraSerif#16.0,FBitstreamVeraSerif#24.0,FBitstreamVeraSerif#16.0,FBitstreamVeraSerif#24.0,FBitstreamVeraSerif#16.0,FBitstreamVeraSerif#24.0,FBitstreamVeraSerif#16.0,,FBitstreamVeraSerif#16.0ia2,FBitstreamVeraSerif#16.0iba2,FBitstreamVeraSerif#16.0ia2,FBitstreamVeraSerif#16.0iba2,FBitstreamVeraSerif#16.0ia2,!!' readStream nextChunkText!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>welcomeFutureDirections (in category 'submenu - help') -----
- welcomeFutureDirections
- 	^'
- - This image is ~15M. If you execute - Smalltalk unloadAllKnownPackages - it will become ~10M 
- - A SqueakCore image is available at http://ftp.squeak.org/4.4
- - A reasonable target is the creation of a smaller image, which may be a task before the community
- - A place to explore where to make reductions is likely the removal/replacement of GUIs
- - Once we have a smaller core image, we can employ Andreas Raab''s memo [1] on how to load code back into the image. This will be based on tests delineating the separate responsibilities of core and application developers
-  [1]]http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-May/150469.html
- '!

Item was removed:
- ----- Method: TheWorldMainDockingBar>>welcomeToSqueak (in category 'submenu - help') -----
- welcomeToSqueak
- 	^'Squeak 4.4 - Ulam Spiral
- Changelog:
- * Cleanup and simplification of Morphic text editing
- * Add host window support, letting you display things in a host window. (Currently only on Windows and Mac.)
- * Bugfixes in the Compiler, Parser and Debugger toolchain
- * Stub support for the ability to evolve the bytecode set
- * Better printing of Floats, hashing of DateAndTimes
- * ChangeSorter improvements
- * ToolBuilder improvements
- * Merged network improvements from Etoys
- * Monticello browsing can now group versions by branch, making tracking of parallel developments easier
- * Decreased coupling between core packages
- * IPv6 support (if your VM provides it)!!
- ]style[(24 2 10 3 7 23 20 1 25 86 8 8 8 2 6 5 8 45 6 5 12 3 15 4 6 13 12 3 12 16 11 23 20 14 19 24 9 52 18 25 12 25)FBitstreamVeraSans#20.0,,bu,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,,b,!!' readStream nextChunkText!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>welcomeWorkspacesOn: (in category 'submenu - help') -----
  welcomeWorkspacesOn: menu
+ 	| versionString | versionString := SystemVersion current version last: 3.
  	menu addItem:[:item|
+ 			contents: ('Release Notes', versionString) translated;
+ 			help: 'Improvements in this release' translated ;
- 			contents: 'Welcome to Squeak 4.4' translated;
- 			help: 'A Welcome Workspace' translated;
  			target: self;
  			selector: #showWelcomeText:label:in:;
  			arguments: {
+ 				#releaseNotes.
+ 				(versionString, ' Release Notes') translated. 
- 				#welcomeToSqueak.
- 				'Welcome to Squeak 4.4'. 
  				(200 at 200 extent: 500 at 300)
  	menu addItem:[:item|
+ 			contents: 'Working With Squeak' translated;
+ 			help: 'Information for new users' ;
- 			contents: 'Welcome Future Directions' translated;
- 			help: 'A Welcome Workspace' translated;
  			target: self;
  			selector: #showWelcomeText:label:in:;
  			arguments: {
+ 				#workingWithSqueak. 
+ 				'Working With Squeak'. 
+ 				(180 at 180 extent: 500 at 300)
- 				#welcomeFutureDirections. 
- 				'Future Directions'. 
- 				(140 at 140 extent: 500 at 300)
  	menu addItem:[:item|
  			contents: 'The Squeak User Interface' translated;
+ 			help: 'Descriptions of some of the more-unusual UI elements in Squeak' ;
- 			help: 'A Welcome Workspace' translated;
  			target: self;
  			selector: #showWelcomeText:label:in:;
  			arguments: {
  				'The Squeak User Interface'. 
  				(160 at 160 extent: 500 at 300)
  	menu addItem:[:item|
- 			contents: 'Working With Squeak' translated;
- 			help: 'A Welcome Workspace' translated;
- 			target: self;
- 			selector: #showWelcomeText:label:in:;
- 			arguments: {
- 				#workingWithSqueak. 
- 				'Working With Squeak'. 
- 				(180 at 180 extent: 500 at 300)
- 			}].
- 	menu addItem:[:item|
- 		item
  			contents: 'License Information' translated;
+ 			help: String empty ;
- 			help: 'A Welcome Workspace' translated;
  			target: self;
  			selector: #showWelcomeText:label:in:;
  			arguments: {
  				'License Information'. 
  				(200 at 200 extent: 500 at 300)

Item was changed:
  ----- Method: TheWorldMainDockingBar>>workingWithSqueak (in category 'submenu - help') -----
  	^'Starting and Quitting
+ Like most Smalltalk''s, the machine-executable portion is a relatively small program known as the "virtual machine" (VM).  The VM''s job is to provide services from the physical machine to real Smalltalk objects.  Services like input and output.  The Smalltalk system, including all data and code, is a system of objects, built from the ground up, and interpreted by this virtual computer.  This affords Smalltalk system platform portability.
- Obviously you have figured out how to start the system.  One way is to double-click on an image.  If you have several different interpreters, you may want to drag the image to the appropriate interpreter; that lets you decide which interpreter should be used.
+ Smalltalk cannot run without the VM.  The VM can''t do anything useful except process Smalltalk systems.
- To quit a Squeak session, choose ''quit'' from the menu bar.  If you save, your previous image file will be overwritten.  You may choose ''save as...'' or ''save as new version'' to save a copy of your image and changes files with a new name (see below).
+ To start the system, drag the ".image" data file to the VM executable "squeak".  There are myriad command-line options for starting the system via the command-line (see squeak --help).  By default, the system will open on the screen in a single OS window.
- Image File
- All of the objects -- classes, dictionaries, windows and other objects -- that make up the Squeak environment are stored in an image file (this must be named ''SomeName.image'' or ''SomeName.ima'').  When you start up an image, everything is right where you left it when you last saved that image.
+ To quit a Squeak session, choose ''quit'' from the menu bar.  If you save, the image file will be overwritten and resume from that place the next time it''s launched.
- Sources and Changes
- The source code associated with the Squeak code in an image file is stored in two other files.  The code of the base system (e.g., Squeak version 4.1) is stored in the file ''SqueakV41.sources'', and the sources for methods added or changed since that time are in the changes file (which must similarly be named ''SomeName.changes'').
+ The Image File
+ Squeak is an environment built in its own objects from the ground up, including one or more end-user applications.  All of the objects in the system -- Classes, Dictionaries, Windows, Customers and other objects that make up the Squeak environment are stored in a binary ".image" file.  This is the "object-data file" loaded by the VM when Squeak is launched.
- Storing the source code in a separate file has several advantages.  To begin with, if you have been working for a couple of hours, and your dog pulls out the power cord, you will still have a sequential record of all your program edits, and these can be perused and replayed to recover your work.  This feature has also saved many a hacker who got too adventurous while changing the system he or she was using.
+ When an image is started, every object resumes exactly from where it was last saved.
- However, if you wish to run the system with severely limited resources, it can be operated without any source code, owing to its ability to decompile the bytecode methods into a readable and editable version of the original source code (only comments and temporary variable names are lost).
+ The Sources File
+ Smalltalk is traditionally includes the source code in the running system.  However, keeping multiple copies of the same source code in all images files is wasteful.  Therefore, the source code itself is kept in a read-only .sources file and accessed by all images.  The image files merely have pointers into this file, which is read on-the-fly to present original source code.
- Finally, since the changes file does not consume memory space, Squeak keeps a complete history of all your program changes.  This makes it easy to examine or even reinstate older versions of methods (see ''versions'' option in browser selector pane).  This encourages experimentation, since you can easily revert to the original versions of any set of methods.
+ The code of the base system is stored in the file "SqueakV41.sources".  This file does not change except between releases of Squeak.  Normally this file should be placed in the folder containing the VM executable.
- FileOut, FileIn
- In addition to the ''save'' command that saves the entire state of your Squeak image, individual methods, categories and classes may be ''filed out''.  Filing out a method, category, or class results in the creation of a text file containing the code in question.  This file can be read into the same or another Squeak image to recreate the saved classes and methods.
+ The Changes File
+ The purpose of Squeak is to develop new programs and systems.  Code changes to the running system are effective immediately.  But since multiple images can be running, they cannot all update the .sources file safely.  Therefore, each image file is accompanied by a ".changes" file which contains source code changes for that and only that Smalltalk system..
- ChangeLists, ChangeSets, and ChangeSorters
- A ChangeList is a method-by-method view of a fileOut.  Note that the changes file records all your programming actions using the same fileOut format, so a ChangeList can browse the change history of any Squeak image.  The "recover changes" command of the Extras menu is one way to do this. You can also open a ChangeList on any fileOut file by selecting the file in the FileList and selecting the "browse changes" command.
+ The changes file is important for project work.  It keeps a sequential log of development activity for the purpose of recovering work performed since the last image-save.  Any of several events could lead to the need to recover work, including a power-outage or making an erroneous change to code required to keep the system running.
- In addition to the image-wide record of changes kept in the changes file, a record of changes is also associated with every project.  This "change set" records only the class and method changes you made within that project. This allows you to make a fileOut of all the changes that constitute your work on that project.  Single and dual ChangeSorters allow one to examine the change set of the current project and other projects, and also allows changes to be moved between change sets.  These are very useful tools for more experienced Squeak programmers.
+ The changes file does not consume memory space, so Squeak is able to keep a complete history of all program changes.  This makes it easy to examine or even reinstate older versions of methods (see ''versions'' option in browser selector pane).  This encourages experimentation, since you can easily revert to the original versions of any set of methods.
- Organizing your Disk
- Squeak will look for the sources file either in the folder containing the image.  If the sources file is not found there, then it looks in the folder containing the VM.  In general, it is simplest to keep a single copy of the sources file in the folder containing the VM.  You can use any number of image/changes pairs anywhere on your disk.
+ In extreme cases where sources and/or changes files are not available, the system can still run, and will automatically decompile the bytecode methods in image memory, if necessary, into readable and editable versions of the original source code (only comments and temporary variable names are lost).
+ Transferring Code-Snippets Between Images
+ In addition to the ''save'' command that saves the entire state of the system, the code of individual methods, categories or classes may be ''filed out'' and then filed-in to another image.
+ Packages
+ The code of an entire project is encapsulated by a Package.  This allows users to share their code with other users.  Code of packages are delineated by the categories of their classes, and methods.  The Monticello browser is then used to wrap that code into a Package object which can be saved to a Monticello repository at http://ss3.gemtalksystems.com/ss.
+ Some projects end up using the resources provided by several packages, resulting in a hierarchy of packages that make up a system.  Installer can be used to install such systems.!!
+ ]style[(21 970 14 448 16 396 11 188 16 321 4 1025 41 188 8 52 10 55 2 420)bu,,bu,,bu,,u,,bu,,u,,bu,,bu,,i,,i,!!' readStream nextChunkText!
- If you wish to maintain several versions of the VM, here is the easiest way:  place all VMs in one folder along with the sources file.  Then, in each folder with images for version X, place an alias of the VM for version X.  You can then start VM version X on that image by dragging the image onto the VM alias.  (If you start Squeak by double-clicking on the image, it might use the wrong version of the VM to run that image.)  Another technique is to keep an alias for your favorite VM on the desktop and start images by dropping them on this alias.  These instructions apply to Mac and Windows, but the same general strategy can be applied to Linux, Unix, and many other platforms.
- !!
- ]style[(21 512 10 296 19 1397 15 366 42 983 20 1029)bu,,bu,,bu,,bu,,bu,,bu,!!' readStream nextChunkText!

More information about the Packages mailing list