Date post: | 28-Nov-2014 |
Category: |
Technology |
Upload: | esug |
View: | 550 times |
Download: | 1 times |
Parcels: a Fast and Feature-Rich Binary
Deployment TechnologyEliot MirandaDavid LeibsRoel Wuyts
DeploymentWriting software is easy
just use the right language :-)But what about deployment?
How to package your codeDo you bend your design?
Deployment driving design
UISettings
...
Text
asParagraphemphasisAt: printOn:
SimpleDialog
MethodColorizermethodText...doNode:doReturn:value...
ParserProgramNode-Enumerator
ColorTextParserisParsing...colorCommentsparseMethod:in:...
ColorToolDialogcubeColors...changeBGColorbrightness...
choseEditingColorsaveToFileAction...
makeSelectorBoldIn:
ColorEditing
VisualWorks Base
Parcels in a nutshellbinary code deployment technologycan be loaded and unloadedloading is fastsupport class extensionshave meta-information (version, prereqs)
What’s with (un)loading?Loading adds code to the system
what is not loaded is rememberedsupports shape changing of classes
Unloading removes it...Interacts with method replacement
Loading recursive thingsA
B
C
D
Parcel P1
Parcel P2
Why are they fast?Pickling: store object graph so that it can be loaded later on (unpickled)typically need recursive descent parserParcels: separate and order the node descriptions from the arc descriptions
two sections: objects & references
Parcel example
ColorTextParser
#isParsing
Compiled-Method
Method-Dictionary#testing
ColorTextParserclass
ColorTextParser>>isParsing
#[16 208 22 173 194 72 218 22 208 22 101]
1133
MethodDictionary(#isParsing)
class
class
class
class
ByteArray
class
Class-Organizer
('testing' #isParsing)
Symbol
class
class
primitive
primitive
primitive
arbitrary
arbitrary
??method??
arbitrary
Pickled file"refs to dependent classes"'Kernel.Parser'1640622'source''mark''prevEnd''hereChar''token''tokenType'..."strings, bytearrays, floats, ..."'methodDict''Kernel''testing''isParsing:'...#[16 208 28 173 ... 208 28 101]#[16 208 23 173 ... 208 23 101]...0.860.8...12917922601292108356...
"Classes defined in parcel"KernelParser'ColorTextParser'1639309'superclass''methodDict''format''subclasses''instanceVariables''organization''name''classPool''environment'16413729'source''mark''prevEnd''hereChar''token''tokenType'...
"arcs"12Kernel.ColorTextParser classKernel#UISettings..."Instances of indexed objects"OrderedCollection15CompiledMethod141211..."compiled methods"ColorTextParser>>isParsing:...
VW/Monticello/Dolphin
VW/ENVY comparisons
ConclusionBinary code deployment mechanism
support loading and unloadingwith advanced features
are very fast to loadhave meta-information
Enjoyed by thousands of people