[Vm-dev] reorganizing opensmalltalk-vm
Tobias Pape
Das.Linux at gmx.de
Fri Oct 26 07:01:08 UTC 2018
Hi All,
> On 25.10.2018, at 19:30, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
> Hi All,
>
> efforts are underway to include the VMMaker source in the opensmalltalk-vm repository. I'm hoping to see all the Smalltalk source included in the Tonel format (one file per class, and one file per extended class), with support for Pharo and Squeak quite soon.
I know its not a constructive comment, but I'm not very fond of the Tonel format.
Yes, it solves the need (or pecularities) of too-many-tiny-files. But so does good-old file-out or Cuis pkg.st formt (eg, https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/tree/master/Packages/) .
I really do not like the introduction of a new, incompatible Syntax, that also introduces a mismatch between what is written in the browser and what is written to disk[1]. I also do not think that using STON as a metadata format within Tonel is a good match.
Moreover, Tonel is comparatively young and I'd be cautious to just yet use it in such a rather large, complex project as VMMaker, where bugs in the formats implementation would only surface slowly.
That being said, if there's consensus to go with Tonel, well, so be it.
Regarding the rest: sounds good, with a slight preference to variant #1.
Best regards
-Tobias
[1]:
Think I have a method with a very long selector, eg MCClassDefinition:
initializeWithName: nameString
superclassName: superclassString
traitComposition: traitCompositionString
classTraitComposition: classTraitCompositionString
category: categoryString
instVarNames: ivarArray
classVarNames: cvarArray
poolDictionaryNames: poolArray
classInstVarNames: civarArray
type: typeSymbol
comment: commentString
commentStamp: stampStringOrNil
name := nameString asSymbol.
superclassName := superclassString ifNil: ['nil'] ifNotNil: [superclassString asSymbol].
traitComposition := traitCompositionString.
classTraitComposition := classTraitCompositionString.
category := categoryString.
type := typeSymbol.
comment := commentString withSqueakLineEndings.
commentStamp := stampStringOrNil ifNil: [self defaultCommentStamp].
variables := OrderedCollection new.
self addVariables: ivarArray ofType: MCInstanceVariableDefinition.
self addVariables: cvarArray sorted ofType: MCClassVariableDefinition.
self addVariables: poolArray sorted ofType: MCPoolImportDefinition.
self addVariables: civarArray ofType: MCClassInstanceVariableDefinition
Seeing the Tonel format, this formatting of the selector, even if it is uncommon, would not be preserved, right?
> This is therefore an opportunity to also reorganize the structure of the repository to have a more comprehensible and less cluttered top-level directory. I'm interested in people's ideas. here are two suggestions.
>
> 1. move all source under src and all builds under build. So
> src/smalltalk/ all the VMMaker-related packages
> AioPlugin
> BytecodeSets
> Cog
> VMMaker
> src/generated/ all the generated code
> plugins/ all generated plugins
> v3 the V3 VM (now src/vm)
> spur32 the 32-bit Spur VM (now spursrc/vm)
> spur64 the 64-bit Spur VM (now spur64src/vm)
> src/platforms the current platforms directory
> src/third-party/
> processors
> build/ the current build directories
> macos32x86
> macos64x64
> deploy/
> image/
> tests/
>
> 2. single top-level directories for generated source, and Smalltalk source, everything else unchanged
> smalltalksrc/ all the VMMaker-related packages
> generatedsrc/ all the generated code as above in src/generated, but in generatedsrc instead
> platforms
> processors
> third-party
> tests
> deploy
>
> Obviously #1 is more work but produces a much cleaner structure. Other suggestions? Reactions to the above?
> _,,,^..^,,,_
> best, Eliot
More information about the Vm-dev
mailing list