integration of cincom smalltalk systems
Post on 13-May-2015
776 Views
Preview:
DESCRIPTION
TRANSCRIPT
Georg Heeg eKBaroper Str. 33744227 DortmundGermanyTel: +49-231-97599-0Fax: +49-231-97599-20
Email: georg@heeg.dehttp://www.heeg.de
Georg Heeg AGSeestraße 135
8027 ZürichSwitzerland
Tel: +41(848) 43 34 24
Georg Heeg eKMühlenstr. 1906366 Köthen
GermanyTel: +49-3496-214 328Fax: +49-3496-214 712
2
Georg Heeg
Prague, Septem ber 7 th, 2 0 0 6
3
About Georg Heeg eK
Founded 1987, headquarter in Dortm und,since 1996 in Zurich, since 1999 in Koethen/ AnhaltConsult ing- and t raining com pany in Sm alltalkHot line support , m aintenance, bug- fixes for ObjectStudio, VisualWorks and Visual Sm alltalkVM- laboratory for VisualWorks and ObjectStudioPort ing service of old VisualWorks applicat ions to 5i/ 7Technology-partner of
Corporate Mission: Make Sophisticated Projectsa Success for the Customer!
4
Som e Background
1994/ 96 Cincom bought ObjectStudio1999 Cincom bought VisualWorksObjectStudio custom ers keep asking for VisualWorks features
ObjectStudio 8 integrates VisualWorksand ObjectStudio
5
ObjectStudio and VisualW orks
Both ObjectStudio and VisualWorksare Smalltalk systems.
Bothare owned by the sam e com pany Cincom
VisualWorkslike Squeak goes back to the original Sm alltalk-76/-78/-80 developm ents at Xerox PARC.Originally called Smalltalk-80, ObjectWorks later
ObjectStudiowas developed as Enterprise Object-Oriented Development EnvironmentOriginally called Enfin.
6
Key Features
Enfin/ ObjectStudioEase of Use Enterpr ise I ntegrat ion
Sm alltalk-80/ ObjectWorks/ VisualWorksExecut ion speed Sophist icated m eta-modelling features
Custom ers want bothSpeed: alwaysEase of use: to get startedEnterprise integrat ion: m ost lym eta-modeling: seldom
but if they need it , they outperform having it .
7
From Forbes.COM
A press conference is called. The m edia is alerted. The top execut ives gather for m uch
backslapping and m ult isyllabic descript ions of the synergist ic opportunit ies abounding in this, a fresh new partnership. There's a cham pagne toast and then the m ost ext raordinary thing
happens...nothing! Nothing at all.
ht tp: / / www.forbes.com / 2002/ 07/ 01/ 0701alliances.htm l
8
Synergy doesn t W ork
VisualWorks VM for ObjectStudio HPOS
Was started andwas not com pleted
I deas to integrate ObjectStudio into .NETdidn t m ake it
9
Theory: Sm allta lk is Different
I n Sm alltalk program ming is m odeling.Thus every theory can be modeled well.Thus every com puter technology can be modeled wellThus every other Sm alltalk system can be modeled well.
10
ObjectStudio 8
Model ObjectStudio by VisualWorks in Sm alltalkUse Meta-ModelingUse all reflect ion capabilit ies
Com pilerDebuggerNam espaces
11
The Goal
Both ObjectStudio and VisualWorks live in the sam e image the sam e t im eBoth Environm ents share the sam e Sm alltalk kernel and base classes to provide ident ical funct ionalityMixing and m atching is seam lessly possibleBoth ObjectStudio and VisualWorks applicat ion Sm alltalk code works unchanged
There will always be except ions to this rule
12
The Team
Suzanne Fortm an (Program Director, Cincom Sm alltalk)Andreas Hiltner (ObjectStudio 8 Lead Engineer)Mark Grinnell (ObjectStudio Lead Engineer)Eduard Maydanik (GUI Engineer)Kim Thom as (Test ing, Packaging, Support )Eliot Miranda (VisualWorks Lead Engineer)Alan Knight (Store Consultant )Jörg Belger (VisualWorks Wrapper)Jam es Robertson (Product Manager)Georg Heeg (Idea)
Helge Nowak (Sales Engineer)Monika Laurent (Marketing)
13
The First Step
Vocal chords surgery in June 2004
No perm ission to speak for a week
14
15
End of First Step
Sm alltalk works
UI does not work
Prim it ives don t work
16
The Second Step: Prim it ives
Jörg Belger starts working at Georg Heeg eK Köthen October 1, 2004
Coauthor of the or iginal Ce VM as intern (100 days)Coauthor of com puter gam esBackground in C+ +
ObjectStudio MFC DLL funct ions are im plemented
One per one at a t im e
17
The First W indow Opens
User Conference in FrankfurtDecem ber 2004
First custom ers see it and are im pressed
18
Second Step: Proof of Concept
One prim it ive at a t im eOne day per pr im it ive
But There are alone 450 MFC prim it ives
Second step is stopped in January 2005
19
Third Step: Do it Com pletely
Take the ent ire ObjectStudio C/ C+ + -CodeMake it a VisualWorks callable DLL
Started in February 2005
20
June 2 0 0 5
Alpha1 Version m ade First t im e com plete
But not tested or bug- free
21
Forth step: Check for Com pat ibility
Run all com ponents of the system I f they work different ly
Add com pat ibilit yDecide for incom pat ibilit y
seldom and easy to understandE.g.: BOSS instead of BinaryObjectSt ream s
Run real Custom er Applicat ionsDetails: see later
22
Septem ber 2 0 0 6
Ready for Beta1 at the end of the m onth
23
Architecture overview
VirtualVirtual MachineMachine
ObjectStudio DLLObjectStudio DLL Base Base ClassesClasses
VisualWorks CodeVisualWorks Code
ObjectStudio CodeObjectStudio Code
ObjectStudio Smalltalk ObjectStudio Smalltalk compatibilitycompatibility layerlayer
24
I m plem entat ion Strategy
KI SSKeep m odificat ions of ObjectStudio source code to a m inim um
I n Sm alltalk and C/ C+ +
Do not m odify VisualWorks VM unnecessarilyFix bugsAddit ional features in VW 7.4.1/ 7.5
Use LoadLibraryEx() instead of LoadLibrary()Event handling in the image
25
General Concepts
Model ObjectStudio by VisualWorks Sm alltalkPreserve syntax and sem ant ics
ObjectStudioCom pilerEm bed in a Nam eSpaceShare code
Collect ionsMagnitudeSem aphoreBooleanUndefined Object
26
VisualW orks Nam espaces
Goal( I n- )visibility of global nam es
Successor toGlobalDict ionaryPoolDict ionaryClassPools
27
System , the GlobalDict ionary
I n Classic ObjectStudio all global nam es live in the Globaldict ionary called SystemI n ObjectStudio 8
Classes live in Nam espace ObjectStudioGlobals live in Nam espace ObjectStudio.GlobalsNon I dent ifier ent r ies are Stored in an I dent ityDict ionary
28
PoolDict ionaries
In Classic ObjectStudioPoolDictionaries are globals which are IdentityDictionaries
OLEConstants := IdentyDictionary new.OLEConstants at: # ADVF_DATAONSTOP put: 64.
In ObjectStudio 8Extra declaration is needed (manually)
ObjectStudio.Globals defineNameSpace: #OLEConstants
Entries in these Dictionaries become SharedVariables with initializers(automatically)
ObjectStudio.Globals.OLEConstantsdefineSharedVariable: #ADVF_DATAONSTOPprivate: falseconstant: falsecategory: 'As yet unclassified'initializer: '64'
29
Shared Classes
Act ionSequence, Array, Associat ion, Bag, Behavior, BlockClosure, Boolean, ByteArray, Character, Class, Collect ion, Com piledBlock, Com piledMethod, Com piler, Date, Dict ionary, EncodedSt ream , False, Fract ion, I dent it yDict ionary, I dent it ySet , I nteger, I nternalSt ream , Magnitude, Metaclass, MethodContext , Num ber, OrderedCollect ion, PeekableSt ream , Point , Posit ionableSt ream , Random , ReadSt ream , ReadWriteSt ream , Rectangle, Sem aphore, Set , Sm allI nteger, SortedCollect ion, St ream , St r ing, Sym bol, Tim e, Tim estam p, True, UndefinedObject , UserPrim it iveMethod, WeakDict ionary, WriteSt ream , Except ion, Error, MessageNotUnderstood, Not ificat ion, St ream Error, Posit ionOutOfBoundsError, I ncom pleteNextCountError, EndOfSt ream Not ificat ion, SocketAccessor, SocketAddress
30
Special Renam ing
ObjectStudio defineSharedVariable: # Floatprivate: falseconstant : t ruecategory: 'ObjectStudio Com pat ibility 2'init ializer: Core.Double'
31
Source Differences
ObjectStudio cls filesOne class per file
With class definit ion: pr im ary filesClass extension: secondary file
Different chunk file form at
Method syntax differencesSem ant ic differences
32
Parsing ObjectStudio Source Code
ObjectStudioCom pilerCalls ObjectStudioParser
ObjectStudioParserAccepts ObjectStudio SyntaxCreates ObjectStudio Syntax com pliant Syntax t ree
Specifying to use ObjectStudio SyntaxclassCom pilerClasscom pilerClassAutom at ic source t ransform at ion of m ethods of VisualWorks classes in cls files
33
Syntax differences: Arrays and cond
f: n ^ { { [ n < = 1] [ 1] }
{ [ t rue] [ (self f: n - 1) * n] } } cond
f: n ^ n < 1
ifTrue: [ 1]ifFalse: [ t rue
ifTrue: [ (self f: n - 1) * n]ifFalse: [ ObjectStudio.Message
newValue: 'No condit ion sat isfied'] ]
34
Syntax differences: param eters
inc: n n isNil ifTrue: [ n : = 0] .^ n + 1
inc: _ _ n | n |n : = __n.n isNil ifTrue: [ n : = 0] .^ n + 1
35
Som e Sem ant ic Differences
# (7)7(Array new: 1)at : 1 put : 7
# (1)< Error>Array new add: 1
nil1[ : n | ] value: 1
Falsenil1 = 0 ifTrue: [ 1]
ObjectStudioVisualW orks
36
Modifying ObjectStudio Parse Tree
Program NodeEnum erator subclass OStudioTreeTransform er m odifies parse t ree
< osprim >Blocks in literal arraysAssignm ents to argum entsEnabling inner returnsCondit ion resultsSubst itut ions
All this allows for VisualWorks Code generat ion
37
Messages w ith different Sem ant ics
Kernel.OStudioTreeTransform er defineSharedVariable: # Subst itut ionsprivate: falseconstant : falsecategory: 'constants'init ializer: '(Dict ionary new)
at : # basicAt : put : put : # os_basicAt : put ;;
yourself
38
Subst ituted Selectors
, os_comma: asText os_asText methods os_methods// quo: asTime os_asTime nameOfDay: os_nameOfDay:< os_LessThan: asTimestamp os_asTimestamp new os_new<= os_LessEqualThan: asValue os_asValue new: os_new:= os_Equal: at: os_at: nextString os_nextString> os_GreaterThan: at:put: os_at:put: origin:corner: os_origin:corner: subclasses os_subclasses>= os_GreaterEqualThan: basicAt:put: os_basicAt:put: origin:extent: os_origin:extent: subtractTime: os_subtractTime:add: os_add: between:and: os_between:and: perform: os_perform: to:by:do: os_to:by:do:add:after: os_add:after: changeSizeTo: os_changeSizeTo: perform:with: os_perform:with: to:do: os_to:do:add:before: os_add:before: coerce: os_coerce: perform:with:with: os_perform:with:with: totalSeconds os_totalSecondsadd:beforeIndex: os_add:beforeIndex: collect: os_collect: perform:with:with:with: os_perform:with:with:with: trimBlanks os_trimBlanksadd:withOccurrences: os_add:withOccurrences: copyFrom:to: os_copyFrom:to: perform:withArguments: os_perform:withArguments: value os_valueaddAll: os_addAll: copyReplaceFrom:to:with: os_copyReplaceFrom:to:with: printOn: os_printOn: wait os_waitaddAllFirst: os_addAllFirst: copyWithout: os_copyWithout: printOn:base: os_printOn:base: whileFalse os_whileFalseaddAllLast: os_addAllLast: dependents os_dependents printString os_printString whileFalse: os_whileFalse:addDependent: os_addDependent: detect: os_detect: readFrom: os_readFrom: whileTrue os_whileTrueaddFirst: os_addFirst: fileName os_fileName remove: os_remove: whileTrue: os_whileTrue:addLast: os_addLast: first os_first remove:ifAbsent: os_remove:ifAbsent: with:do: os_with:do:addTime: os_addTime: firstDayOfMonth os_firstDayOfMonth removeAll: os_removeAll: withAllSubclasses os_withAllSubclassesallInstVarNames os_allInstVarNames flush os_flush removeDependent: os_removeDependent: \\ rem:allSubclasses os_allSubclasses fromDays: os_fromDays: removeKey: os_removeKey: ~= os_NotEqual:asByteArray os_asByteArray ifFalse: os_ifFalse: signal os_signalasFilename os_asFilename ifTrue: os_ifTrue: size os_sizeasFloat os_asFloat includesKey: os_includesKey: storeOn: os_storeOn:asInteger os_asInteger indexOf: os_indexOf: storeString os_storeStringasNumber os_asNumber inheritsFrom: os_inheritsFrom:asSet os_asSet inspect os_inspectassociationAt: os_associationAt: isAlphaNumeric os_isAlphaNumericassociationsDo: os_associationsDo: last os_lastasString os_asString leapYear: isLeapYear:
subclass:instanceVariableNames:classVariableNames:poolDictionaries:
os_subclass:instanceVariableNames:classVariableNames:poolDictionaries:
subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
os_subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
39
Different file st ructure, first version
Reader for .txt and .cls files to get ObjectStudio code into VisualWorks
ClassReaderReads txt files and calls ObjectStudioChangeScanner
ObjectStudioChangeScannerReads cls files
40
Second Version: Source Code I ntegrat ion
ObjectStudio.Applicat ionDefint ionSt reamOriginal Classic ObjectStudio classReads .txt files
OStudioChunkSourceFileForm atLives in VisualWorks SourceFileForm at classhierarchyReads and writes .cls filesCont rols that .cls files
41
ObjectStudio Sm allta lk and C
Strong interconnect ion between C and Sm alltalkThey call each other all the time
There are five ways to call CDirect primitives
PrimSpecRecNumbered Primitives
<primitive: 123>Named Primitives
< osprim: MFC openWindow>< osprim: #myDll myfunc>
Module/ENFINModuleProgrammatic creation of interface methods using osprim
ExternalProceduresProgrammatic creation of interface methods with C datatypes
42
ObjectStudioW rapperDLL
Regular VisualWorks DLLUses _oop as param eter and return typeCalls ObjectStudio prim it ives using a simulated ObjectStudio stack
43
OPTR and _ oop
I n ObjectStudio object pointers OPTR never m oveI n VisualWorks object pointer _oop are m oved by the garbage collectorObjectStudio C code relies on not non m oving OPTR
Solut ion:Define class OPTR with wraps VisualWorks Oops for ObjectStudio including C+ + reference count ingThe real object pointers _oop are stored in a Smalltalk array
which is registered in the Visualworks registrythe index to this array is stored in class OPTR as variable
Reference counts are stored in a norm al C array.
44
OPTR class ( ext ract )
class __declspec(dllexport) OPTR;typedef OPTR* POPTR;
class OPTR{public:
static OPTR& cpp_S2O(LONG value);[ ]
private:[ ]
enum Types { TYPE_NI L = 0, TYPE_NORMALOBJECT, TYPE_NOTNORMALOBJECT, TYPE_UNKNOWN} ;
INT m_IndexOrOop; // index in objecttable or not normal object
INT m_Type; // type of objectstatic INT s_NumObjects; // number of registered objectsstatic INT s_NextFreeObject; // index of next free object in objecttablestatic INT s_ObjectTable; // index of objecttable array in visualworks registrystatic INT* s_LinkTable; // array with linked registry slots
45
Direct Prim it ives
Look at definit ionRe- im plem ent
m ost ly in Sm alltalk using exist ing VisualWorks funct ionalityI n rare cases replace by osprim
46
Num bered Prim it ives
< Prim it ive: 45>Som e are replaced by
VisualWorks Prim it ive E.g. Object> > = =< vwprim it ive: 110>
VisualWorks im plem entat ion
For m ostAuto-generate calling code
47
Auto- Generated Prim it ive
disable<primitive: 7>^ self primitiveFailed.
disable< osprimitive: 7>| argumentArray |argumentArray := Core.Array os_new: 0.^ ObjectStudioCallI nterface os_new
callPrim: 7self: selfarguments: argumentArrayifFail: [^self primitiveFailed]
48
Class ObjectStudioCallI nterface
callPrim: primitiveNumber self: oSelf arguments: args ifFail: failBlock
self init.^[self callPrim: primitiveNumber self: oSelf arguments: args]
on: PrimitiveFailExceptiondo: [:ex| ^failBlock value]
callPrim: primitiveNumber self: oSelf arguments: args<C: _oop callPrim(int primitiveNumber, _oop oSelf, _oop args)>_errorCode = 0 ifTrue: [PrimitiveFailException raise].self externalAccessFailedWith: _errorCode
49
The C+ + side
_oop callPrim(int primitiveNumber, _oop oSelf, _oop args){AFX_MANAGE_STATE(AfxGetStat icModuleState());[ ]primReturnCode = CallUserPrim it iveFunc(prim MethodOPTR);oSelf = PPop( ) .getObject();[ ]if (primReturnCode == FALSE)
UPfail(0);return oSelf;}
50
Autogenerated osprim
act ivateExcludeChild: fExclude< osprim: MFC ActivateForm>^ self primitiveFailed.
act ivateExcludeChild: fExclude< osprim: MFC ActivateForm>< methodClass: ExternalAnnotatedMethod>| argumentArray |(argumentArray := Array new: 1) os_at: 1 put: fExclude.^ ObjectStudio.External.ObjectStudioCallI nterface new
callOSPrim: thisContext method functionSpecificationself: selfarguments: argumentArrayifFail: [^self primitiveFailed]
51
Manually created osprim ( Class Point )
translateFromForm: aFormOrFormItem to: anOther"<osprim: TRACK POI NTTRANSLATEFROMFORM> "
| args functionSpecification |args := Array new: 2.args at: 1 put: aFormOrFormItem.args at: 2 put: anOther.functionSpecification := OSPrimSpecifier new.functionSpecification
module: Root .ObjectStudio.ENFI NModule versionTag , 'TRACK'.functionSpecification funct ion: 'POI NTTRANSLATEFROMFORM'.functionSpecification numArgs: 2.^ Root .ObjectStudio.ObjectStudioCallI nterface new
callOSPrim: functionSpecificationself: selfarguments: argsifFail: [^self primitiveFailed]
52
OSPrim Specifier
Sm alltalk.Kernel defineClass: # OSPrim Specifiersuperclass: # { Object }indexedType: # noneprivate: falseinstanceVariableNam es: 'num Args num Temps
handle funct ion m odule 'classI nstanceVariableNam es: ' 'im ports: ' 'category: 'ObjectStudio Tools
53
ExternalAnnotatedMethod
Sm alltalk.Kernel defineClass: # ExternalAnnotatedMethodsuperclass: # { Kernel.AnnotatedMethod}indexedType: # objectsprivate: falseinstanceVariableNam es: 'funct ionSpecificat ion 'classI nstanceVariableNam es: ' 'im ports: ' 'category: 'ExternalAnnotatedMethod
Variable funct ionSpecificat ion stores instances of OSPrim Specifier
54
Module/ EnfinModule
Autogenerate osprim
privateQueryVolum eNam e: aSmallInteger< osprim: FI LES PRI VATEQUERYDRI VENAME>
":Section Reference pr ivateQueryVolum eNam e: aSmallInteger
Description: Returns the name of a drive. Assumptions: The drive num ber passed in is a sm all integer start ing with 1 for dr ive A: . This funct ion returns allways an empty strings on operating systems, which do not support a drive concept.
[ ]
55
External Procedures
Just work unchanged
56
ObjectStudio Unicode
I n ObjectStudio 7Two installat ionsTwo Virtual MachinesI ncom pat ible I m agesCom pat ible Source Code
I n ObjectStudio 8One installat ionOne Virtual MachineTwo sets of DLLsOne im ageDecision at start -up
57
Nat ive W idgets
Use MFCCallbacks to VisualWorks
58
Calling Sm allta lk from C
PSend is im plem ented usingOESendMessageMany( )
ASend is im plem ented usingOESendMessageMany( )
whenIdleSend: aSelector to: aReceiver withArguments: anArray"inserts the asend into the queue "
ASendSemaphore critical: [ASendQueue addLast: (Core.MessageSend
receiver: aReceiverselector: aSelectorarguments: (anArrayOrObject isArray
ifTrue: [anArrayOrObject
59
The Process Model
VisualWorks process m odelMany Sm alltalk processes are running in different pr ior ity.Windows events are handled (alm ost ) any t im eShared queues m ove the events to target processesThis is em plem ented in C
ObjectStudio process m odelThe caller of all execut ion is the Windows Event LoopAll Message Sends in the ASendQueue are executedwhen the Windows Event is em ptyThis is im plem ented in C+ +
60
Decision of July 2 0 0 6
Move EventLoop to SmalltalkAvailable in vw-dev since August 29, 2006
Initialzing in class EventProcessingManager:prim CallbackEvent I nstall: aMethodSelector
" Inform the VM of the callback class ( the receiver) and the callbackinvocationmethod selector for event processing."
| regNames |regNames := ObjectMemory registrationNames.((regNames includes: 'callbackEventClass')
and: [regNames includes: 'callbackEventSelector']) ifTrue:
[ ObjectMemory registerObject: selfwithEngineFor: 'callbackEventClass'.
ObjectMemory registerObject: aMethodSelectorwithEngineFor: 'callbackEventSelector']
61
Event loop in Sm allta lk
Class EventProcessingManagerruns the loopdelegates all actions to the handler
Implemented in EventHandler class hierarchy
processEvents| eventRecord |handler canHandleMultipleEvents
ifFalse: [self blockEvents ifTrue: [^self]].
[ eventRecord := handler eventRecord.[ handler nextEvent: eventRecord]
whileTrue: [ handler handleEvent: eventRecord].handler postHandleEvents]
ensure: [self allowEvents]
62
Subclasses of EventHandler
Exam ple m ethods in Win32EventHandler
eventRecord^ self MSG gcMalloc
nextEvent: anEventRecord^(self
peekMessageA: anEventRecordwindow: 0filterMin: 0filterMax: 0flags: (self PM_REMOVE bitOr: self PM_NOYIELD)) ~= self
FALSE
postHandleEvents^ self
63
OStudioEventHandler
Exam ple m ethods in OStudioEventHandler
preTranslateMessage: msg<C: BOOL PreTranslateMessage(LPMSG msg)>^ self externalAccessFailedWith: _errorCode
postHandleEventsSystem wantsBusyCursor
ifTrue: [UI.Cursor waitshowWhile: [System drainASendQueue]]
ifFalse: [System drainASendQueue].self onIdleApp
onIdleApp<C: void OnIdleApp(void)>^ self externalAccessFailedWith: _errorCode
64
Handling an event
In Win32EventHandler
handleEvent: anEventRecordself translateMessage: anEventRecord.self dispatchMessageA: anEventRecord
In OStudioEventHandler
handleEvent: anEventRecord(self preTranslateMessage: anEventRecord) = self FALSE
ifTrue: [ self translateMessage: anEventRecord.self dispatchMessageA: anEventRecord]
65
User I nterrupts
< ct r l> Y and < ct r l> < shift> Y work as in VisualWorksI m plem ented as Accelerator Keys< ct r l> Y interrupts the running process by sending self halt : in a callBack from C
66
Class Proxies
Class Proxies workThey are shared variables in Root .ObjectStudio.GlobalLoading puts class in Root .ObjectStudio
67
Applicat ion Loading
Applicat ion loading works
68
Perform ance I ssues
I n Classic ObjectStudioSm alltalk execut ion is slowCalling C prim it ives cost nothing
I n VisualWorksSm alltalk execut ion is fastCalling C is expensive
I n Classic ObjectStudioPerform ance cr it ical m ethods are m oved to C
I n ObjectStudio 8Perform ance cr it ical pr im it ives are m oved back to Sm alltalk
69
VisualW orks .st file- in is slow
Of 1000 seconds900 are RB refreshOf 100 seconds
90 are repeatedly relinking the systemOf 10 Seconds
9 are disk flush (Changes file)1 second compiling
At the end of the opt im izat ions:Loading as alternat ive to file- inLoading a .st is sim ilar speed as parcel loading
Small .st/.cls files load faster than parcelsLarge parcel files load faster than .st/.cls files
70
New Concepts for ObjectStudio
Source Code Managem entStore
Versioning systemDatabase based
Sm alltalk ArchivesFile basedOne file per application
Code purityUndeclaredCode Crit icOverr ides
71
June 2005Internal Alpha
October 2005Internal Alpha2
March 2006Cincom internal testing
April 2006First Customer
August 2006First independent Service Partner
May-September 2006Solve incompatabilities, Refactoring, Performance issues
October 2006Next few customers
December 2006Preview
72
Port ing Process Theory
TheoryLoad applicat ionStart it
73
Port ing Process Pract ice
Look at base system modificat ionsLike any other port ing this is a source of m any problem s
Known incom pat ibilit iesI mm utabilit yDeclare Pool Dict ionariesExport Modeling Tool definit ions in ASCI I
Binary form at is incom pat ible
74
Undeclareds
I n Classic ObjectStudioEach undeclared variable is always considered a global
I n VisualWorks and ObjectStudio 8Each undeclared variable is considered undeclared
GHUndeclaredBrowserShows all Undeclareds and their referencesI t uncovered som e very old ObjectStudio problem sdue to typoes.
75
Target Look
76
After loading Modeling Tool
77
W hat can ESUG Audience learn?
I ntegrat ion of Sm alltalk system s is possibleWhich system s deserve to be integrated?
VW and SqueakVery common systems
VSEVASmalltalk-XDolphinRubyJava
FrostGemStone
top related