This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Moving to ObjectStudio 8
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
This is Andreas Hiltner and Mark Grinnell going over how you approach a migration from OST classic to ObjectStudio 8. Some limitations:
ObjectStudio allows "- 500" as a message - that's not supported
For backwards compatibility, method parameters can be overwritten. VW typically does not allow that.
Global Variables are now SharedVariables defined in the ObjectStudio namespace.
The ObjectStudio 8 compiler does not allow duplicate names between instance and class instance variables
Immutability: literals cannot be changed at runtime (however note: in the Parcels directory, there's a backwards compatibility parcel).
All loaded ObjectStudio code will end up in the ObjectStudio namespace (and, you need to descend from those classes in order to get the ObjectStudio Smalltalk compiler)
If you subclass collections, you need to implement the instance method #copyEmpty: in order to copy any new instance variables you want to preserve.
Note the #at: and #at:put: have different return semantics between OS and VW. The OS semantics have been preserved in the OS8 classes.
Note that #whileTrue: now returns nil, and #whileFalse: also returns nil. In classic OS, they had returned true and false (respectively)
The new Date class only allows valid dates (it raises an exception on errors). Also, month names are now case sensitive.
Processes: Classic OS uses native threads for Smalltalk processes. In OS 8, these are all green threads (eliminates a host of synchronization issues). The ThreadBrowser has been replaced by the ProcessMonitor.
SendHooks don't exist - MethodWrappers are the VW version of that.
Breakpoints do not have much overhead any longer.
User written primitives: you may well have to make some modifications to these - we provide an example makefile showing what you need to do.
Nil (with the capital) is now a special instance of OPTR. Any pointer should be checked against Nil, not NULL or 0 (zero)
SQL Server: The old db-lib interface has been deprecated - the interface now uses ODBC.