Mac Carbon VM goes to 3.8.14b7

John M McIntosh johnmci at smalltalkconsulting.com
Tue Dec 12 19:14:43 UTC 2006


I've published a new Macintosh Carbon Universal (powerpc/macintel) VM  
3.8.14b7.

This VM is posted to my idisk or FTP site found via
http://www.smalltalkconsulting.com/squeak.html


I'll note currently the published version on ftp.squeak.org is  
3.8.12b4, if someone in the web/server/ftp group could update the mac  
3.9 distribution that would be great, perhaps in 24/48 hours just in  
case someone has issues with the VM.


Since the 3.8.12b4 release the work done has included more info.plist  
entries to control  mouse button mapping,  headless support, and  
thanks to funding from ViewPoint Research a complete rewrite of the  
browser plugin logic to launch a VM as a sub-process of the browser  
using roughly the same logic as the X11 unix browser plugin/VM  
interface.

As noted earlier the printJob plugin changes to 1.4 to suport  
CGContext drawing with EPS support, and the FreeType 2 Plugin
was recompiled to support G3 powerpc machines.

Changes since 3.8.12b4 are listed below:

Mac VM 3.8.14 mach-o build for Carbon, Sophie, Exupery, (Safari &  
Firefox browsers) and Croquet.

Support for Croquet, support for Safari, support for TK4/Sophie,  
support for Multiple Windows/Ffenestri, full GC instrumentation,  
configurable quartz flush drawing, MacIntel Machines, mappable mouse  
buttons, Safari and Firefox browser support and finally Exupery  
interfaces.  Plugins include support for

April 24th, 2006 (3.8.12b4)
June 5th, 2006 (3.8.12b5)
Sept xth, 2006 (3.8.12b5)
Sept 22th, 2006 (3.8.12b7)
Sept 25th, 2006 (3.8.13b1)
Oct 13th, 2006 (3.8.13b3
Oct 16th 2006 (3.8.13b4)
Nov 10th, 2006 (3.8.14b2)
Nov 16th, 2006 (3.8.14b3)
Nov 21th, 2006 (3.8.14b5)
Nov 23th, 2006 (3.8.14b6)
Dec 12th, 2006 (3.8.14b7)

Still yet to do, in future versions -> Verify that file delete rename  
etc works on aliases, not the targets. (Yawn, someday)

Pre OS-X users should read about OS-9 packages in the 3.2.4 change  
notes.

3.8.14b7	sqMacMain.c	Add signal handler on SIGSEGV, dump all stacks.

3.8.14b6  More browser changes

		sqMacSecurity	Alter logic to accept plist.info entry for  
untrustedDirectory.
		info.plist			Add mouse button logic for browser events, uses  
SqueakBrowserMouseNoneButton1
						etc. Also add SqueakBrowserUnTrustedDirectory which is
						 ~/Library/Preferences/Squeak/Internet/My Squeak/
		sqMacMain.c	Add logic to parse new entries (as above) from info.plist
		sqMacUIEventsUniversal		On figuring out MouseModifierStateCarbon,  
consider if it's a browser event,
					if so then use SqueakBrowserMouseNoneButton1 entries, versus  
SqueakMouseNoneButton1


3.8.14b5	Alter browser logic
		npsqueak.c  	add some more debugging prints

		sqMacMain.c	change version number and UUID

		sqMacNSPluginUILogic2.c	More debug printing, also get correct mouse  
and modifer key state when we
				 have a keystroke event.

		sqMacUIEventsUniversal.c	Get browser mouse position via remembering  
fake carbon events to avoid
				doing the get/setPort and GetMousePoint() 1984 logic.  Add the  
checkBrowserForHeartBeat
				logic which checks every 6.66 seconds if the parent process (the  
browser) is running, if not then
				we ask the VM to quit. This suggestion by Juergen Gmeiner ensures  
the VM does not become an
				orphaned process if the browser crashes.

3.8.14b4 had limited release.

3.8.14b3 sqMacWIndowUnversial.c  Ensure window is created when non- 
headless and not running under the browser
		typo in check prevent squeak from showing the window when running  
standalone for 3.8.14b2.
		
		sqMacMain.c		Check processsor status at startup, if non-headless  
and LSBackgroundOnly is true, then
						switch process to foreground.
		info.plist			rest LSBackgroundOnly to false, from true, to avoid  
Dock display issue. People
						wanting true headless app need then to alter info.plist

		revert bitBlt>copyLoop changes, introduced drawing problems, look  
at fixing later, or never as time permits

3.8.14b2 Fixes for browser support
		
3.8.14b1	New browser support on os-x mac/macintel for safari and  
firefox.
		This logic now follows the example set by the unix plugin, where we
		run the VM headless and talk to the browser plugin stub via a two- 
way pipe to
		enable fetching data via a URL, drawing the screen, and setting the  
cursor.

		Thanks to Viewpoint Research for funding this effort.
		This VM had limited distribution.

		sqMacOpenGL.c			- remove BROWSERPLUGIN
		sqMacUnixFileInterface.c 	- needed include for sqUnixCharConv.h
		sqMacHostWindow.c		- remove BROWSERPLUGIN
		sqMacMain.c				- remove BROWSERPLUGIN, add browser pipe logic,
								rearrange startup to handle startup with out window for  
browser support.
		sqMacMemory.c			- remove BROWSERPLUGIN
		sqMacTime.c				- remove BROWSERPLUGIN
		sqMacUIAppleEvents.c		- remove BROWSERPLUGIN
		sqMacUIEventsUniversal.c	- remove BROWSERPLUGIN, expose some  
internals so new browser
								support code can call or access.
		sqMacUnixCommandLineInterface.c	- add headfull cmd for browser testing
		sqMacUnixExernalPrims.c	- remove BROWSERPLUGIN
		sqMacWIndowUnversial.c	- remove BROWSERPLUGIN, changes for browser  
support,
								assume window is hidden which is different from being headless.
		sqNamedPrims.h			- remove BROWSERPLUGIN
		sqPlatformSpecific.h		- remove BROWSERPLUGIN, add URL_FETCH
		npSqueak					- Directory, add plugin for browser into source tree
		sqMacNSPLuginUILogic2.c	- new file to replace sqmacNSPluginUILogic.c
		sqMacNSPLuginUILogic2.h	- new file to replace sqmacNSPluginUILogic2.c


3.8.13.b4  Headless support
		sqMacMain.c
			headless, set background to false if not headless.
			alter uuid returned to signify which VM this is

		info.plist
		swap buttons to ensure cmd/opt of trackpad is right
		Add LSBackgroundOnly to yes i

		sqMacEventsUniversal.c
		headless support
		
		sqMacUnixCommandLineInterface.c
		headless parm -headless added
		
		sqMacWindowUniversal.c
		headless support
		
		platforms/Cross/plugins/ExuperyPLugin created

3.8.13.b4, b5, b6, b7
		Had limited distribution to test new button modification logic
		
3.8.13.b3
		bitBlt>copyLoop changes, normally it prefetchs the next byte for  
barrel shifting 64 bits when copying from
		one form to another, and a dirty secret and old bug is that it  
reads one word past the end of the Form
		when it processes the last word in the Form. However when you use  
surfaces where the surface is
		allocated elsewhere not in object space and in fact say the  
allocated form is 2MB and the vm memory
		system makes the frame past the 2MB range non-readable, why then  
you die on a read protection failure.
		So alter the loop to consider if it's preload and the last line we  
don't do the pre-fetch because that could
		cause a read failure.
3.8.13.b2
		Exupery support, via plugin and changes in the VM for Mac Intel,  
use merged VMMaker-Exupery change set

3.8.13.b1
		Exupery support, via plugin and changes in the VM for Mac Intel.
		http://minnow.cc.gatech.edu/squeak/5672

3.8.12.b7 sqMacUIEventsUniversal.c
		rewrite MouseModifierStateCarbon() So that we use information in  
info.plist to map buttons left to right
		1, 2, 3 into red, yellow, blue.   Thus on a scroll mouse the  
buttons read left to right 1, 3, 2  red,blue,yellow
		as the mac classic behavior. SqueakMouseCmd is when cmd key is  
donwn, Option, for option/alt key, and
		Control for control key. This then gives you full control over what  
the mouse button to red/yellow/blue is.

	<key>SqueakMouseNoneButton1</key>
	<integer>1</integer>
	<key>SqueakMouseNoneButton2</key>
	<integer>3</integer>
	<key>SqueakMouseNoneButton3</key>
	<integer>2</integer>
	<key>SqueakMouseCmdButton1</key>
	<integer>2</integer>
	<key>SqueakMouseCmdButton2</key>
	<integer>3</integer>
	<key>SqueakMouseCmdButton3</key>
	<integer>2</integer>
	<key>SqueakMouseOptionButton1</key>
	<integer>3</integer>
	<key>SqueakMouseOptionButton2</key>
	<integer>3</integer>
	<key>SqueakMouseOptionButton3</key>
	<integer>2</integer>
	<key>SqueakMouseControlButton1</key>
	<integer>1</integer>
	<key>SqueakMouseControlButton2</key>
	<integer>3</integer>
	<key>SqueakMouseControlButton3</key>
	<integer>2</integer>

3.8.12b6
		sqMacUIEventsUniversal.c
		First trial at button mapping, not widely distributed and  
completely changed by 3.8.12b7

3.8.12b5
		sqMacUnixExternalPrims.c
			Ensure frameworks get loaded out of application resources, then  
system area. Before
			we only looked in system area which was wrong if you want to  
override framework.
			I'll note we can't load from plugin folder for system frameworks,  
does not see to work,
			if first path not found it resolve to system area.


--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===





More information about the Squeak-dev mailing list