+ All Categories

Parcels

Date post: 28-Nov-2014
Category:
Upload: esug
View: 550 times
Download: 1 times
Share this document with a friend
Description:
Parcels: a Fast and Feature-Rich Binary Deployment Technology. Eliot Miranda David Leibs Roel Wuyts (ESUG 2004, Koethen)
12
Parcels: a Fast and Feature-Rich Binary Deployment Technology Eliot Miranda David Leibs Roel Wuyts
Transcript
Page 1: Parcels

Parcels: a Fast and Feature-Rich Binary

Deployment TechnologyEliot MirandaDavid LeibsRoel Wuyts

Page 2: Parcels

DeploymentWriting software is easy

just use the right language :-)But what about deployment?

How to package your codeDo you bend your design?

Page 3: Parcels

Deployment driving design

UISettings

...

Text

asParagraphemphasisAt: printOn:

SimpleDialog

MethodColorizermethodText...doNode:doReturn:value...

ParserProgramNode-Enumerator

ColorTextParserisParsing...colorCommentsparseMethod:in:...

ColorToolDialogcubeColors...changeBGColorbrightness...

choseEditingColorsaveToFileAction...

makeSelectorBoldIn:

ColorEditing

VisualWorks Base

Page 4: Parcels

Parcels in a nutshellbinary code deployment technologycan be loaded and unloadedloading is fastsupport class extensionshave meta-information (version, prereqs)

Page 5: Parcels

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

Page 6: Parcels

Loading recursive thingsA

B

C

D

Parcel P1

Parcel P2

Page 7: Parcels

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

Page 8: Parcels

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

Page 9: Parcels

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:...

Page 10: Parcels

VW/Monticello/Dolphin

Page 11: Parcels

VW/ENVY comparisons

Page 12: Parcels

ConclusionBinary code deployment mechanism

support loading and unloadingwith advanced features

are very fast to loadhave meta-information

Enjoyed by thousands of people


Recommended