[Vm-dev] reorganizing opensmalltalk-vm
Steffen Märcker
merkste at web.de
Fri Oct 26 18:02:03 UTC 2018
May I ask - just out of curiosity - which arguments ultimately lead to the
decision to use a new, non-Smalltalk syntax to store code in files? I had
a discussion with a colleague today who just wonder why this is, too.
Best, Steffen
Am .10.2018, 09:01 Uhr, schrieb Tobias Pape <Das.Linux at gmx.de>:
> 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